一、 前往百度地图API平台获取ak
二、安装vue-baidu-map (这里推荐npm安装)
三、引入vue-baidu-map.js,(我这里是全局引入的)。在main.js中导入
import BaiduMap from 'vue-baidu-map'Vue.use(BaiduMap, {ak: 填入ak值});
简单描述一下实现的功能
1、在地图上点击标注,会把对应的位置显示在搜索框中
2、搜索输入地址后,点击搜索,地图跳转到相应位置
3、地图/混合 可以切换地图模式
4、右边可以选择街、市、省、国 进行位置切换
<!--center 显示中心位置 lng经度 lat纬度zoom 视图的缩放比例 --><!- scroll-wheel-zoom是否允许用鼠标滚轮缩放 --><baidu-map class="map" :center="{lng: 121.4095, lat: 31.1796}" :zoom="15" :scroll-wheel-zoom="true" @click="getPoint"><!--地图类型,两种:一种是路线一种是绿的那种--><bm-map-type :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']" anchor="BMAP_ANCHOR_TOP_LEFT"></bm-map-type><!--是否显示标注--><div v-if="locationFlag" > <bm-marker :position="postionMap" :dragging="true" animation="BMAP_ANIMATION_BOUNCE" /></div><!--搜索功能--><!--display: none样式很关键,因为下面默认会有地址提示信息很长,很烦,这样搜索会很舒服,--><bm-local-search :keyword="keyword" :auto-viewport="true" zoom="12.8" style="display: none"></bm-local-search> <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation></baidu-map>
js代码
searchLocal(){this.keyword = this.keywordReady},getPoint(e){ //点击地图获取一些信息,console.log('e',e)this.show = true;this.postionMap.lng = e.point.lng;//通过 e.point.lng获取经度this.postionMap.lat = e.point.lat;//通过 e.point.lat获取纬度this.add.jd = e.point.lng;this.add.wd = e.point.lat;this.zoom = e.target.getZoom()let geocoder= new BMap.Geocoder(); //创建地址解析器的实例geocoder.getLocation(e.point,rs=>{if(!this.locationFlag){//地图标注为false时,不让位置在搜索框中显示return true}this.keywordReady = rs.address;//地址描述(string)// console.log(rs.address); //这里打印可以看到详细地址信息// console.log(rs.addressComponents);//结构化的地址描述(object)// console.log(rs.addressComponents.province); //省// console.log(rs.addressComponents.city); //城市// console.log(rs.addressComponents.district); //区县// console.log(rs.addressComponents.street); //街道// console.log(rs.addressComponents.streetNumber); //门牌号// console.log(rs.surroundingPois); //附近的POI点(array)// console.log(rs.business); //商圈字段,代表此点所属的商圈(string)});},//出现标注地址getFlag(){this.locationFlag=true},//取消标注cancelFlag(){this.locationFlag=false},
data中的代码
data() {return {keywordReady:"" , //在输入框中输入的值add:{siteName:'',site:'',jd:'',wd:'',desce:'',type:'',jgName:'',jgNum:'',},postionMap:{ //地图坐标lng: 120.211486,lat: 30.256576},keyword: '', //搜索框关键词
css样式代码
css地图样式 .map{width: 100%;height: 400px;}