首先申请一个 ak,详情点击这里
之后根据官方文档我们调用如下接口
调用成功后返回的数据如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| { "status":0, "message":"ok", "result_type":"poi_type", "results":[ { "name":"中南大学湘雅医院", "location":{ "lat":28.217917, "lng":112.991041 }, "address":"长沙市开福区湘雅路87号", "province":"湖南省", "city":"长沙市", "area":"开福区", "street_id":"a5ef680f314baaceb8df8fb0", "telephone":"(0731)89753999", "detail":1, "uid":"a5ef680f314baaceb8df8fb0" }, ] }
|
我们还可以根据经纬度来获取在地图上显示出来,这里引入第三方插件 vue-baidu-map
1
| $ npm install vue-baidu-map --save
|
然后在 main.js
中全局注册
1 2 3 4 5 6 7
| import Vue from 'vue' import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, { ak: 'YOUR_APP_KEY' })
|
然后封装一个展示地图组件
- center 设置中心经纬度
- zoom 设置缩放等级
- scroll-wheel-zoom 设置鼠标可缩放地图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <template> <baidu-map class="map" :center="{ lng: lng, lat: lat }" :zoom="15" :scroll-wheel-zoom="true" > <bm-marker :position="{ lng: lng, lat: lat }" :dragging="true" animation="BMAP_ANIMATION_BOUNCE" > </bm-marker> </baidu-map> </template>
<script> export default { data() { return { lng: 116.404, lat: 39.915, } }, methods: { setLoacl(lng, lat) { this.lng = lng this.lat = lat }, }, } </script>
<style> .map { margin-top: 20px; width: 100%; height: 300px; } </style>
|
在页面中使用封装好的组件,只需要调用组件中的 setLoacl
方法,传入经纬度即可展示该位置信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <div> <Map ref="map"></Map> </div>
<script> import Map from './component/Map.vue' export default { components: { Map, }, methods: { lookMap(row) { this.$refs.map.setLoacl(row.location.lng, row.location.lat) }, }, } </script>
|
示例
