59fd5759
王彪总
feat(map): 替换腾讯地图...
|
1
|
<template>
|
48ea9c43
wuxw
巡检开发完成
|
2
|
<div class="select-map-pos-container">
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
3
4
|
<div id="selectMap" class="map-view"></div>
<div class="map-hint">点击地图选择位置,经纬度将自动填充</div>
|
48ea9c43
wuxw
巡检开发完成
|
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
</div>
</template>
<script>
import { getCommunityId } from '@/api/community/communityApi'
export default {
name: 'SelectMapPos',
props: {
elementId: {
type: String,
default: 'selectMap'
},
initData: {
type: Object,
default: () => ({})
}
},
|
b5dad34f
wuxw
巡检功能测试中
|
23
|
|
48ea9c43
wuxw
巡检开发完成
|
24
25
26
27
|
data() {
return {
map: null,
marker: null,
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
28
|
communityId: ''
|
48ea9c43
wuxw
巡检开发完成
|
29
30
31
32
|
}
},
mounted() {
this.communityId = getCommunityId()
|
48ea9c43
wuxw
巡检开发完成
|
33
34
|
},
methods: {
|
b5dad34f
wuxw
巡检功能测试中
|
35
|
initMap(_data) {
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
36
37
|
let _lng = 116.397128
let _lat = 39.916527
|
b5dad34f
wuxw
巡检功能测试中
|
38
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
39
40
|
if (_data.lng) _lng = _data.lng
if (_data.lat) _lat = _data.lat
|
9d019fa6
wuxw
测试OA相关流程
|
41
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
42
43
44
|
if (this.map) {
this.map.destroy()
this.map = null
|
48ea9c43
wuxw
巡检开发完成
|
45
|
}
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
46
47
48
49
50
51
52
53
54
55
56
57
58
|
this.marker = null
const map = new window.AMap.Map('selectMap', {
center: [_lng, _lat],
zoom: 13,
resizeEnable: true
})
const _this = this
map.on('click', function (ev) {
const lng = ev.lnglat.getLng()
const lat = ev.lnglat.getLat()
|
b5dad34f
wuxw
巡检功能测试中
|
59
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
60
|
_this.$emit('position-change', { lat, lng })
|
b5dad34f
wuxw
巡检功能测试中
|
61
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
62
63
64
65
66
67
68
69
70
71
72
73
|
if (!_this.marker) {
_this.marker = new window.AMap.Marker({
position: [lng, lat],
map: map,
icon: new window.AMap.Icon({
size: new window.AMap.Size(25, 35),
imageSize: new window.AMap.Size(25, 35),
image: '/img/maper.png'
})
})
} else {
_this.marker.setPosition([lng, lat])
|
b5dad34f
wuxw
巡检功能测试中
|
74
|
}
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
75
|
})
|
b5dad34f
wuxw
巡检功能测试中
|
76
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
this.map = map
// 如果传入了已有坐标,在地图上显示标记
if (_data.lng && _data.lat) {
this.marker = new window.AMap.Marker({
map: this.map,
position: [_lng, _lat],
icon: new window.AMap.Icon({
size: new window.AMap.Size(25, 35),
imageSize: new window.AMap.Size(25, 35),
image: '/img/maper.png'
})
})
}
|
48ea9c43
wuxw
巡检开发完成
|
91
|
},
|
b5dad34f
wuxw
巡检功能测试中
|
92
|
|
48ea9c43
wuxw
巡检开发完成
|
93
|
addMarker(position) {
|
48ea9c43
wuxw
巡检开发完成
|
94
95
|
if (this.marker) {
this.marker.setMap(null)
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
96
|
this.marker = null
|
48ea9c43
wuxw
巡检开发完成
|
97
|
}
|
b5dad34f
wuxw
巡检功能测试中
|
98
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
99
|
this.marker = new window.AMap.Marker({
|
48ea9c43
wuxw
巡检开发完成
|
100
|
map: this.map,
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
101
102
103
104
105
106
|
position: position,
icon: new window.AMap.Icon({
size: new window.AMap.Size(25, 35),
imageSize: new window.AMap.Size(25, 35),
image: '/img/maper.png'
})
|
48ea9c43
wuxw
巡检开发完成
|
107
|
})
|
b5dad34f
wuxw
巡检功能测试中
|
108
|
|
48ea9c43
wuxw
巡检开发完成
|
109
110
111
|
this.map.setCenter(position)
this.map.setZoom(16)
},
|
b5dad34f
wuxw
巡检功能测试中
|
112
|
|
48ea9c43
wuxw
巡检开发完成
|
113
114
|
updatePosition(lat, lng) {
if (!this.map) return
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
115
|
this.addMarker([lng, lat])
|
48ea9c43
wuxw
巡检开发完成
|
116
117
|
}
},
|
48ea9c43
wuxw
巡检开发完成
|
118
|
beforeDestroy() {
|
48ea9c43
wuxw
巡检开发完成
|
119
120
121
122
123
124
125
126
127
128
129
|
if (this.map) {
this.map.destroy()
this.map = null
}
}
}
</script>
<style scoped>
.select-map-pos-container {
width: 100%;
|
48ea9c43
wuxw
巡检开发完成
|
130
|
}
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
131
132
133
134
135
136
137
138
139
140
141
142
|
.map-view {
width: 100%;
height: 400px;
border: 1px solid #dcdfe6;
border-radius: 4px;
}
.map-hint {
font-size: 12px;
color: #909399;
margin-top: 6px;
}
</style>
|