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
2
3
4
5
|
import
BaiduMap from
'vue-baidu-map'
Vue.use(BaiduMap, {
ak:
'GpRqD2Sowifs********RRRRVl9'
});
|
然后就可以在组件里使用了,最简单的一个例子
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
41
42
43
44
45
46
47
48
|
<
template
>
<
div
>
<
baidu-map
class="map" :center="map.center" :zoom="map.zoom" @ready="handler">
<!--缩放-->
<
bm-navigation
anchor="BMAP_ANCHOR_TOP_LEFT"></
bm-navigation
>
<!--定位-->
<
bm-geolocation
anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></
bm-geolocation
>
<!--点-->
<
bm-marker
:position="map.center" :dragging="map.dragging" animation="BMAP_ANIMATION_DROP">
<!--提示信息-->
<
bm-info-window
:show="map.show">Hello~</
bm-info-window
>
</
bm-marker
>
</
baidu-map
>
</
div
>
</
template
>
<
script
>
export default {
name: "demo",
data: () => ({
map:{
center: {lng: 121.4472540000, lat: 31.3236200000},
zoom: 15,
show: true,
dragging: true
},
}),
methods: {
handler ({BMap, map}) {
let me = this;
console.log(BMap, map)
// 鼠标缩放
map.enableScrollWheelZoom(true);
// 点击事件获取经纬度
map.addEventListener('click', function (e) {
console.log(e.point.lng, e.point.lat)
})
}
}
}
</
script
>
<
style
scoped>
.map {
width: 100%;
height: 400px;
}
</
style
>
|
然后其它页面引入这个组件即可,注:这只是个helloworld哦
实际上运用的话,是需要将数据传递给父组件的,比如经纬度之类的。比如:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
<
template
>
<
div
>
<
a-row
:gutter="16">
<
a-col
:span="12">
<
a-form-item
v-if="map.isAdd" label="关键词">
<
a-input
v-model="map.keyword"/>
</
a-form-item
>
</
a-col
>
<
a-col
:span="12">
<
a-form-item
v-if="map.isAdd" label="地区">
<
a-input
v-model="map.location"/>
</
a-form-item
>
</
a-col
>
</
a-row
>
<
baidu-map
class="map" :center="map.center" :zoom="map.zoom" @ready="handler">
<
bm-navigation
anchor="BMAP_ANCHOR_TOP_LEFT"></
bm-navigation
>
<
bm-geolocation
anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></
bm-geolocation
>
<
bm-local-search
v-if="map.isAdd" class="search" :keyword="map.keyword" :auto-viewport="true" :location="map.location"></
bm-local-search
>
</
baidu-map
>
</
div
>
</
template
>
<
script
>
export default {
name: "simple-map",
props: {
map: {
type: Object
}
},
data: () => ({
}),
methods: {
handler ({BMap, map}) {
let me = this;
console.log(BMap, map)
// 鼠标缩放
map.enableScrollWheelZoom(true);
// 点击事件获取经纬度
map.addEventListener('click', function (e) {
console.log(e.point.lng, e.point.lat)
me.$emit('select-location', {
lng: e.point.lng,
lat: e.point.lat
});
})
}
}
}
</
script
>
<
style
scoped>
.map {
width: 100%;
height: 400px;
}
.map .search{
margin-bottom: 65px;
}
</
style
>
|
父组件
1
2
3
4
5
6
7
8
9
|
<
simple-map
:map="mapForAdd" @select-location="selectLocation"></
simple-map
>
selectLocation: function (e) {
// 这里用到了antDesign,不再科普了。实际上就是获取子组件传来的数据
this.formForAdd.setFieldsValue({
longitude: e.lng,
latitude: e.lat,
})
}
|
页面(效果就是点击地图上的点,传递经纬度)
小LUA面对敌人的严刑逼供,我一个字也没说,而是一五一十写了下来。