vue项目引入百度地图
原文地址:https://www.cnblogs.com/LUA123/p/11281604.html
先去百度开放平台申请ak。http://lbsyun.baidu.com/
进来之后
按照步骤走,先登录百度账号,然后申请成为开发者,然后申请ak密钥
填写完毕后提交,会给你邮箱发个激活邮件
点击申请密钥
然后点击提交
这个时候,你就可以拿着这个ak去使用百度地图了。
使用
执行
1 npm install vue-baidu-map
然后再main.js里加上(注意你自己的ak密钥)
1 import BaiduMap from 'vue-baidu-map' 2 3 Vue.use(BaiduMap, { 4 ak: 'GpRqD2Sowifs********RRRRVl9' 5 });
然后就可以在组件里使用了,最简单的一个例子
1 <template> 2 <div> 3 <baidu-map class="map" :center="map.center" :zoom="map.zoom" @ready="handler"> 4 <!--缩放--> 5 <bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT"></bm-navigation> 6 <!--定位--> 7 <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation> 8 <!--点--> 9 <bm-marker :position="map.center" :dragging="map.dragging" animation="BMAP_ANIMATION_DROP"> 10 <!--提示信息--> 11 <bm-info-window :show="map.show">Hello~</bm-info-window> 12 </bm-marker> 13 </baidu-map> 14 </div> 15 </template> 16 17 <script> 18 export default { 19 name: "demo", 20 data: () => ({ 21 map:{ 22 center: {lng: 121.4472540000, lat: 31.3236200000}, 23 zoom: 15, 24 show: true, 25 dragging: true 26 }, 27 }), 28 methods: { 29 handler ({BMap, map}) { 30 let me = this; 31 console.log(BMap, map) 32 // 鼠标缩放 33 map.enableScrollWheelZoom(true); 34 // 点击事件获取经纬度 35 map.addEventListener('click', function (e) { 36 console.log(e.point.lng, e.point.lat) 37 }) 38 } 39 } 40 } 41 </script> 42 43 <style scoped> 44 .map { 45 width: 100%; 46 height: 400px; 47 } 48 </style>
然后其它页面引入这个组件即可,注:这只是个helloworld哦
实际上运用的话,是需要将数据传递给父组件的,比如经纬度之类的。比如:
1 <template> 2 <div> 3 <a-row :gutter="16"> 4 <a-col :span="12"> 5 <a-form-item v-if="map.isAdd" label="关键词"> 6 <a-input v-model="map.keyword"/> 7 </a-form-item> 8 </a-col> 9 <a-col :span="12"> 10 <a-form-item v-if="map.isAdd" label="地区"> 11 <a-input v-model="map.location"/> 12 </a-form-item> 13 </a-col> 14 </a-row> 15 16 <baidu-map class="map" :center="map.center" :zoom="map.zoom" @ready="handler"> 17 <bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT"></bm-navigation> 18 <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation> 19 <bm-local-search v-if="map.isAdd" class="search" :keyword="map.keyword" :auto-viewport="true" :location="map.location"></bm-local-search> 20 </baidu-map> 21 </div> 22 </template> 23 24 <script> 25 export default { 26 name: "simple-map", 27 props: { 28 map: { 29 type: Object 30 } 31 }, 32 data: () => ({ 33 34 }), 35 methods: { 36 handler ({BMap, map}) { 37 let me = this; 38 console.log(BMap, map) 39 // 鼠标缩放 40 map.enableScrollWheelZoom(true); 41 // 点击事件获取经纬度 42 map.addEventListener('click', function (e) { 43 console.log(e.point.lng, e.point.lat) 44 me.$emit('select-location', { 45 lng: e.point.lng, 46 lat: e.point.lat 47 }); 48 }) 49 } 50 } 51 } 52 </script> 53 54 <style scoped> 55 .map { 56 width: 100%; 57 height: 400px; 58 } 59 .map .search{ 60 margin-bottom: 65px; 61 } 62 </style>
父组件
1 <simple-map :map="mapForAdd" @select-location="selectLocation"></simple-map> 2 3 selectLocation: function (e) { 4 // 这里用到了antDesign,不再科普了。实际上就是获取子组件传来的数据 5 this.formForAdd.setFieldsValue({ 6 longitude: e.lng, 7 latitude: e.lat, 8 }) 9 }
页面(效果就是点击地图上的点,传递经纬度)










浙公网安备 33010602011771号