59fd5759
王彪总
feat(map): 替换腾讯地图...
|
1
|
<template>
|
48ea9c43
wuxw
巡检开发完成
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<div class="inspection-route-map-container">
<div id="inspectionRouteMap" style="width: 100%; height: 600px;"></div>
</div>
</template>
<script>
import { listInspectionRoutePoints } from '@/api/inspection/inspectionPointApi'
import { getCommunityId } from '@/api/community/communityApi'
export default {
name: 'InspectionRouteMap',
data() {
return {
map: null,
communityId: '',
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
17
18
19
20
|
routePoints: [],
markers: [],
texts: [],
polylines: []
|
48ea9c43
wuxw
巡检开发完成
|
21
22
23
24
|
}
},
async mounted() {
this.communityId = getCommunityId()
|
48ea9c43
wuxw
巡检开发完成
|
25
26
27
|
},
methods: {
loadData(route) {
|
d367e130
wuxw
巡检功能测试
|
28
|
this.initMap()
|
48ea9c43
wuxw
巡检开发完成
|
29
30
|
this.loadRoute(route)
},
|
48ea9c43
wuxw
巡检开发完成
|
31
|
|
48ea9c43
wuxw
巡检开发完成
|
32
|
initMap() {
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
33
|
this.clearAll()
|
57c370b2
wuxw
v1.9 优化巡检地图展示问题
|
34
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
35
36
37
|
const center = [116.397128, 39.916527]
const container = document.getElementById('inspectionRouteMap')
if (!container) return
|
48ea9c43
wuxw
巡检开发完成
|
38
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
39
|
this.map = new window.AMap.Map(container, {
|
48ea9c43
wuxw
巡检开发完成
|
40
41
|
center: center,
zoom: 13,
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
42
|
resizeEnable: true
|
48ea9c43
wuxw
巡检开发完成
|
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
})
},
async loadRoute(route) {
if (!route || !route.inspectionRouteId) return
try {
const params = {
communityId: this.communityId,
inspectionRouteId: route.inspectionRouteId,
page: 1,
row: 1000
}
const response = await listInspectionRoutePoints(params)
this.routePoints = response.inspectionPoints
this.addPointsToMap(this.routePoints)
} catch (error) {
console.error('获取路线点失败:', error)
this.$message.error(this.$t('inspectionRouteMap.fetchError'))
}
},
addPointsToMap(points) {
if (!this.map || !points || points.length === 0) return
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
69
|
this.clearOverlays()
|
48ea9c43
wuxw
巡检开发完成
|
70
|
|
48ea9c43
wuxw
巡检开发完成
|
71
72
73
74
75
|
const path = []
points.forEach(point => {
if (!point.lat || !point.lng) return
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
76
|
const position = [point.lng, point.lat]
|
48ea9c43
wuxw
巡检开发完成
|
77
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
78
79
80
81
82
83
84
85
|
const marker = new window.AMap.Marker({
map: this.map,
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
巡检开发完成
|
86
|
})
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
87
|
this.markers.push(marker)
|
48ea9c43
wuxw
巡检开发完成
|
88
|
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
89
90
91
|
const text = new window.AMap.Text({
map: this.map,
text: point.inspectionName,
|
48ea9c43
wuxw
巡检开发完成
|
92
|
position: position,
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
93
94
95
96
97
98
99
100
|
offset: new window.AMap.Pixel(0, 15),
style: {
color: '#3777FF',
'font-size': '12px',
'background-color': 'rgba(255,255,255,0.8)',
'padding': '2px 4px',
'border-radius': '2px'
}
|
48ea9c43
wuxw
巡检开发完成
|
101
|
})
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
102
|
this.texts.push(text)
|
48ea9c43
wuxw
巡检开发完成
|
103
|
|
48ea9c43
wuxw
巡检开发完成
|
104
105
106
|
path.push(position)
})
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
if (path.length > 1) {
// 外层(描边)
const outerPolyline = new window.AMap.Polyline({
map: this.map,
path: path,
strokeColor: '#FFF',
strokeWeight: 10,
strokeOpacity: 1,
lineJoin: 'round'
})
this.polylines.push(outerPolyline)
// 内层(主线)
this.polylines.push(new window.AMap.Polyline({
map: this.map,
path: path,
strokeColor: '#3777FF',
strokeWeight: 6,
strokeOpacity: 0.9,
lineJoin: 'round'
}))
}
|
48ea9c43
wuxw
巡检开发完成
|
129
|
|
48ea9c43
wuxw
巡检开发完成
|
130
131
132
133
|
if (path.length > 0) {
this.map.setCenter(path[0])
this.map.setZoom(16)
}
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
},
clearAll() {
this.clearOverlays()
if (this.map) {
this.map.destroy()
this.map = null
}
},
clearOverlays() {
this.markers.forEach(m => m.setMap(null))
this.markers = []
this.texts.forEach(t => t.setMap(null))
this.texts = []
this.polylines.forEach(p => p.setMap(null))
this.polylines = []
|
48ea9c43
wuxw
巡检开发完成
|
151
152
153
|
}
},
beforeDestroy() {
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
154
|
this.clearAll()
|
48ea9c43
wuxw
巡检开发完成
|
155
156
157
158
159
160
161
162
163
|
}
}
</script>
<style scoped>
.inspection-route-map-container {
width: 100%;
height: 100%;
}
|
59fd5759
王彪总
feat(map): 替换腾讯地图...
|
164
|
</style>
|