|
|
@@ -13,10 +13,8 @@ import {
|
|
13
|
13
|
syncWmtsLayerVisibility
|
|
14
|
14
|
} from '@/utils/gisLoader'
|
|
15
|
15
|
import {
|
|
16
|
|
- GIS_POI_SEARCH_MODE,
|
|
17
|
|
- getGisPoiSearchMode,
|
|
18
|
16
|
parsePoiLngLat,
|
|
19
|
|
- searchPois
|
|
|
17
|
+ searchNearbyPois
|
|
20
|
18
|
} from '@/utils/gisPoiSearch'
|
|
21
|
19
|
import {
|
|
22
|
20
|
addTownshipBoundaryLayers,
|
|
|
@@ -24,6 +22,7 @@ import {
|
|
24
|
22
|
buildTownshipInfo,
|
|
25
|
23
|
flyToTownship,
|
|
26
|
24
|
getTownshipLabelPoints,
|
|
|
25
|
+ getTownshipPoiSearchCenter,
|
|
27
|
26
|
removeTownshipBoundaryLayers
|
|
28
|
27
|
} from '@/utils/gisTownshipBoundary'
|
|
29
|
28
|
import { getTownshipLivestockStats } from '@/constants/townshipLivestock'
|
|
|
@@ -49,7 +48,7 @@ const props = defineProps({
|
|
49
|
48
|
type: Boolean,
|
|
50
|
49
|
default: false
|
|
51
|
50
|
},
|
|
52
|
|
- /** 是否在地图加载后展示周边 POI Marker */
|
|
|
51
|
+ /** 点击乡镇后是否展示该乡镇中心点周边 POI(默认不加载,点击后才查) */
|
|
53
|
52
|
showPoiMarkers: {
|
|
54
|
53
|
type: Boolean,
|
|
55
|
54
|
default: true
|
|
|
@@ -95,6 +94,8 @@ let lastWheelAround = null
|
|
95
|
94
|
let poiMarkers = []
|
|
96
|
95
|
let townshipMarkers = []
|
|
97
|
96
|
let unbindTownshipClick = null
|
|
|
97
|
+/** 当前 POI 查询中心,仅点击乡镇后赋值 */
|
|
|
98
|
+let poiSearchCenter = null
|
|
98
|
99
|
|
|
99
|
100
|
function logClickCoordinate(lngLat) {
|
|
100
|
101
|
if (!lngLat) {
|
|
|
@@ -176,10 +177,14 @@ function bindTownshipDrillDown() {
|
|
176
|
177
|
})
|
|
177
|
178
|
emit('township-click', info)
|
|
178
|
179
|
|
|
179
|
|
- if (props.showPoiMarkers && getGisPoiSearchMode() === GIS_POI_SEARCH_MODE.NEARBY) {
|
|
180
|
|
- map.once('moveend', () => {
|
|
181
|
|
- renderPoiMarkers()
|
|
182
|
|
- })
|
|
|
180
|
+ if (props.showPoiMarkers) {
|
|
|
181
|
+ const searchCenter = getTownshipPoiSearchCenter(feature)
|
|
|
182
|
+ if (searchCenter) {
|
|
|
183
|
+ poiSearchCenter = searchCenter
|
|
|
184
|
+ map.once('moveend', () => {
|
|
|
185
|
+ renderPoiMarkers()
|
|
|
186
|
+ })
|
|
|
187
|
+ }
|
|
183
|
188
|
}
|
|
184
|
189
|
})
|
|
185
|
190
|
}
|
|
|
@@ -280,15 +285,15 @@ function createPoiMarkerElement(name) {
|
|
280
|
285
|
}
|
|
281
|
286
|
|
|
282
|
287
|
async function renderPoiMarkers() {
|
|
283
|
|
- if (!props.showPoiMarkers || !map || !cmmapglRef) {
|
|
|
288
|
+ if (!props.showPoiMarkers || !map || !cmmapglRef || !poiSearchCenter) {
|
|
284
|
289
|
return
|
|
285
|
290
|
}
|
|
286
|
291
|
clearPoiMarkers()
|
|
287
|
292
|
|
|
288
|
293
|
let pois = []
|
|
289
|
294
|
try {
|
|
290
|
|
- pois = await searchPois({
|
|
291
|
|
- center: resolveCenter()
|
|
|
295
|
+ pois = await searchNearbyPois({
|
|
|
296
|
+ center: poiSearchCenter
|
|
292
|
297
|
})
|
|
293
|
298
|
} catch {
|
|
294
|
299
|
return
|
|
|
@@ -330,6 +335,7 @@ function destroyMap() {
|
|
330
|
335
|
wheelDeltaAccum = 0
|
|
331
|
336
|
lastWheelAround = null
|
|
332
|
337
|
clampingZoom = false
|
|
|
338
|
+ poiSearchCenter = null
|
|
333
|
339
|
clearPoiMarkers()
|
|
334
|
340
|
teardownTownshipBoundary()
|
|
335
|
341
|
if (map) {
|
|
|
@@ -571,7 +577,6 @@ async function initMap() {
|
|
571
|
577
|
syncWmtsLayerVisibility(map)
|
|
572
|
578
|
resizeMap()
|
|
573
|
579
|
renderTownshipBoundary()
|
|
574
|
|
- renderPoiMarkers()
|
|
575
|
580
|
emit('ready', map)
|
|
576
|
581
|
})
|
|
577
|
582
|
// 瓦片/遥测等非致命错误不向页面报错
|
|
|
@@ -589,9 +594,6 @@ watch(
|
|
589
|
594
|
center: resolveCenter(),
|
|
590
|
595
|
zoom: resolveZoom()
|
|
591
|
596
|
})
|
|
592
|
|
- if (props.showPoiMarkers && getGisPoiSearchMode() === GIS_POI_SEARCH_MODE.NEARBY) {
|
|
593
|
|
- renderPoiMarkers()
|
|
594
|
|
- }
|
|
595
|
597
|
},
|
|
596
|
598
|
{ deep: true }
|
|
597
|
599
|
)
|
|
|
@@ -600,9 +602,9 @@ watch(
|
|
600
|
602
|
() => props.showPoiMarkers,
|
|
601
|
603
|
(show) => {
|
|
602
|
604
|
if (!map || !cmmapglRef) return
|
|
603
|
|
- if (show) {
|
|
|
605
|
+ if (show && poiSearchCenter) {
|
|
604
|
606
|
renderPoiMarkers()
|
|
605
|
|
- } else {
|
|
|
607
|
+ } else if (!show) {
|
|
606
|
608
|
clearPoiMarkers()
|
|
607
|
609
|
}
|
|
608
|
610
|
}
|