首页 > 其他分享 >VueBaiduMap使用记录

VueBaiduMap使用记录

时间:2022-11-15 18:36:00浏览次数:72  
标签:baidu center 记录 地图 VueBaiduMap item 使用 lat lng

项目中有用到地图,之前采用的是腾讯地图,使用后发现在IE中地图展示空白,就想着换百度地图试试,又看到有基于Vue框架的百度地图插件VueBaiduMap,正好符合我的需求;本文记录一下。
一、安装及引用

  1. 安装依赖
npm install vue-baidu-map --save
  1. 全局注册
import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
  // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: 'YOUR_APP_KEY'
})
  1. 页面使用
<template>
  <div>
    <baidu-map class="bm-view" :center="center" :zoom="zoom" @ready="handler">
    </baidu-map>
  </div>
</template>

export default {
  data () {
    return {
      center: {
        lng: 0,
        lat: 0,
      },
      zoom: 14,
    }
  },
  methods: {
    // ready事件在map组件加载完成再触发,里面可以做关于地图数据的初始化
    handler () {
      this.center.lat = '22.619498'
      this.center.lng = '114.027699"'
    }
  }
}

现在我的项目需要实现如下图的功能:
image

  • 地图上有位置的点标记;
  • 点击点标记有弹窗展示位置信息;
  • 弹窗展示的位置信息中,点击详情可以打开百度地图并且定位到该位置;
  • 点击某个点,将其放置在视图中心。
  1. 具体实现
<template>
  <div class="map-wrap">
    <baidu-map class="bm-view" :center="center" :zoom="zoom" @ready="handler">
    <!-- bm-marker标签标记地图中的点 -->
      <bm-marker
        v-for="(item, index) in myMarkers"
        :position="item.position"
        :key="index"
        @click="infoWindowOpen(item, index)">
        <!-- 点击点标记有弹窗展示位置信息 -->
        <bm-info-window :show="item.showLabel">
          <p>{{item.title}}</p>
          <p class="address">{{item.address}}</p>
          <div class="pos-detail" @click="goMap(item)">详情>></div>
        </bm-info-window>
      </bm-marker>
    </baidu-map>
  </div>
</template>

<script>
export default {
  name: 'around-com',
  props: {
    info: {
      type: Object,
      default () {
        return {}
      }
    }
  },
  data () {
    return {
      center: {
        lng: 0,
        lat: 0,
      },
      zoom: 14,
      myMarkers: [],
    }
  },
  methods: {
    // 地图组件加载完初始化数据,比如视图中心位置,点位置数据获取
    handler () {
      const latitudeAndLongitude = this.info.latitudeAndLongitude
      const latLogList = latitudeAndLongitude.split(',')
      this.center.lat = latLogList[0]
      this.center.lng = latLogList[1]
      this.getProjectArundList()
    },
    // 模拟点位置数据
    getProjectArundList () {
      this.myMarkers = [{
        address:  "广东省深圳市龙华区新区大道与民宝路交汇处北侧",
        distance: "499.99",
        lat: "22.619176",
        lng: "114.021815",
        title: "深圳市新华医院",
        showLabel: false
      },{
        address: "广东省深圳市龙华区民康路与民治大道交汇处东北侧",
        distance: "1772.11",
        lat: "22.616527",
        lng: "114.04273",
        title: "深圳第二儿童医院",
        showLabel: false
      }]
    },
    infoWindowOpen (item, index) {
      this.myMarkers.forEach(sub => {
        sub.showLabel = item.id === sub.id
      })
      // 点击标记的同时,将标记点位置置于视图中心
      this.center.lat = item.position.lat
      this.center.lng = item.position.lng
    },
    // 点击详情去到百度地图
    goMap (pos) {
      window.location.href = `http://api.map.baidu.com/geocoder?address=${pos.title}&output=html&key=你的key`
    },
  }
}
</script>

在IE浏览器中测试正常,暂时没有发现兼容问题

参考文档:

Vue Baidu Map文档
百度地图开发文档:浏览器端
api.map.baidu.com相关使用文档

标签:baidu,center,记录,地图,VueBaiduMap,item,使用,lat,lng
From: https://www.cnblogs.com/coderInside/p/16893449.html

相关文章

  • IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
    参考:https://blog.csdn.net/liujiayu2/article/details/73947357一、中断处理的过程根据Intel64andIA-32ArchitecturesSoftwareDeveloper’sManual的介绍,在中断......
  • 记录一个gorm发生全局查询条件的问题
       正常情况下在使用gorm做修改操作时,会使用omit过滤一些字段,比如上图中修改的时候就不应该修改创建时间和创建人字段的值。关键点在于上图如果omit中没有增加id字......
  • docker基本使用-nginx集群负载
    原文https://www.cnblogs.com/front-web/p/15529173.html注:本示例为本地mac系统模拟摘要:搭建集群服务器,本机只能在docker环境中,搭建多个nginx服务器1,参考上篇文章(dock......
  • 使用docker搭建nginx集群,实现负载均衡
    原文:https://blog.csdn.net/qq_39962403/article/details/107092779环境基于centos7,docker安装教程参考https://www.runoob.com/docker/centos-docker-install.html(选......
  • SpringBoot 07: springboot中使用dubbo
    公共接口项目独立的maven项目:定义了接口和数据类数据类kagecom.example.dubbo.model;importjava.io.Serializable;publicclassStudentimplementsSeria......
  • 使用vue-json-editor实现json编辑框
    1、进入到自己的项目,使用npm安装vue-json-editornpminstallvue-json-editor--save2、在vue组件中使用vue-json-editor<template><div><p>vue-json-edito......
  • mysql查询每张表有多少条记录
    mysql查询每个表有多少条记录的方法:执行【selecttable_name,table_rowsfromtableswhereTABLE_SCHEMA='数据库的名称';】语句即可。mysql查询每个表分别有多少条记......
  • mysql使用desc(describle)和explain查看执行计划--笔记
    大家查看mysql执行计划时用的最多的是explain,其实还可以等效使用desc、describle查看执行计划,desc和explain命令还可以有别的作用如查看表列属性等功能。1、查看表结构和......
  • BufferedWriter和BufferedReader的使用
    常用方法:newFileReader newBufferedReader(fileReader) newFileWriter  newBufferedWriter(fileWriter) 有了这几个方法就可以构......
  • 前后端架构技术记录-动态列与查询条件
    目前做过的许多项目都是后台管理的多,基本上页面上的参数和查询条件都是能够通过代码生成出来的。构想有几点动态配置条件与列,生成对于的vue的条件-列表,java的bean,sql代......