tianqingdayu
新手
新手
  • 最后登录2021-06-04
  • 发帖数2
阅读:4844回复:0

vue中引用百度地图插件实现根据地址信息在地图上标记

楼主#
更多 发布于:2021-04-07 17:21
下载插件:
npm install vue-baidu-map -save


全局中引用:

import Vue from 'vue'
import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
  ak: 'zpDQY1hqA74CGeGEHPxMeIgdU896thpW'          //百度地图官网申请的key
})


html:

<div class="baidumap">
    <baidu-map
            :zoom="zoom"        //地图缩放大小
            :center="center"      //中心城市居中显示
            @ready="handler"      //百度地图自带的方法handler
            style="height:300px; width:1060px"
            :scroll-wheel-zoom="true"            //是否支持鼠标滚轮缩放地图
            :double-click-zoom="false">         //是否支持鼠标双击缩放地图
<!--获取城市列表-->
        <bm-city-list anchor="BMAP_ANCHOR_TOP_LEFT"></bm-city-list>        
    </baidu-map>
</div>


js:

    export default {
        name: "shopShouye",
        data(){
            return {
                zoom: 17,
                center:'',                             //中心点
                preAddress: '四川省成都市',        //默认显示的中心城市
                detailAddress: ''                         //街道地址
            }
        }
    }


 //根据地址信息使用getPoint将地址转化为经纬度

handler:function({ BMap, map }) {                      
    const geocoder = new BMap.Geocoder()
    geocoder.getPoint(this.preAddress + this.detailAddress, function(res) {      
        const { lng, lat } = res
        var point = new BMap.Point(lng, lat) // 用于描述地图上点的经纬度。
        map.centerAndZoom(point, 17)
        var marker = new BMap.Marker(point) // 创建标注
        map.addOverlay(marker) // 将标注添加到地图中
        window.map = map  // 其他函数还会调用map,所以把它挂载到全局上
    })
},


注:百度地图里的map值不能再生命周期函数中更改,只能在自带的handler方法中进行更改。
游客


返回顶部

公众号

公众号