|
|
@ -3,11 +3,11 @@ |
|
|
*/ |
|
|
*/ |
|
|
// import type { Map } from 'ol'
|
|
|
// import type { Map } from 'ol'
|
|
|
|
|
|
|
|
|
import { ref, onUnmounted, reactive } from 'vue' |
|
|
|
|
|
|
|
|
import { onUnmounted } from 'vue' |
|
|
import type { MapProps } from '../types/map.types' |
|
|
import type { MapProps } from '../types/map.types' |
|
|
import { MapService } from '../services/map.service' |
|
|
import { MapService } from '../services/map.service' |
|
|
import { MarkerService } from '../services/marker.service' |
|
|
import { MarkerService } from '../services/marker.service' |
|
|
import { AnimationService } from '../services/animation.service' |
|
|
|
|
|
|
|
|
// import { AnimationService } from '../services/animation.service'
|
|
|
import { PopupService } from '../services/popup.service' |
|
|
import { PopupService } from '../services/popup.service' |
|
|
import { TrajectoryService } from '../services/trajectory.service' |
|
|
import { TrajectoryService } from '../services/trajectory.service' |
|
|
import { FenceService } from '../services/fence.service' |
|
|
import { FenceService } from '../services/fence.service' |
|
|
@ -16,7 +16,7 @@ import { FenceDrawService } from '../services/fence-draw.service' |
|
|
interface ServiceInstances { |
|
|
interface ServiceInstances { |
|
|
mapService: MapService | null |
|
|
mapService: MapService | null |
|
|
markerService: MarkerService | null |
|
|
markerService: MarkerService | null |
|
|
animationService: AnimationService | null |
|
|
|
|
|
|
|
|
// animationService: AnimationService | null
|
|
|
popupService: PopupService | null |
|
|
popupService: PopupService | null |
|
|
trajectoryService: TrajectoryService | null |
|
|
trajectoryService: TrajectoryService | null |
|
|
fenceService: FenceService | null |
|
|
fenceService: FenceService | null |
|
|
@ -28,7 +28,7 @@ export const useMapServices = () => { |
|
|
const services: ServiceInstances = { |
|
|
const services: ServiceInstances = { |
|
|
mapService: null, |
|
|
mapService: null, |
|
|
markerService: null, |
|
|
markerService: null, |
|
|
animationService: null, |
|
|
|
|
|
|
|
|
// animationService: null,
|
|
|
popupService: null, |
|
|
popupService: null, |
|
|
trajectoryService: null, |
|
|
trajectoryService: null, |
|
|
fenceService: null, |
|
|
fenceService: null, |
|
|
@ -48,7 +48,7 @@ export const useMapServices = () => { |
|
|
// 重新初始化服务,确保markerService有地图实例
|
|
|
// 重新初始化服务,确保markerService有地图实例
|
|
|
services.mapService = mapService |
|
|
services.mapService = mapService |
|
|
services.markerService = new MarkerService(mapService.map) |
|
|
services.markerService = new MarkerService(mapService.map) |
|
|
services.animationService = new AnimationService(mapService.map) |
|
|
|
|
|
|
|
|
// services.animationService = new AnimationService(mapService.map)
|
|
|
services.popupService = new PopupService() |
|
|
services.popupService = new PopupService() |
|
|
services.trajectoryService = new TrajectoryService(mapService.map) |
|
|
services.trajectoryService = new TrajectoryService(mapService.map) |
|
|
services.fenceService = new FenceService(mapService.map) |
|
|
services.fenceService = new FenceService(mapService.map) |
|
|
@ -56,8 +56,6 @@ export const useMapServices = () => { |
|
|
|
|
|
|
|
|
// 创建marker图层
|
|
|
// 创建marker图层
|
|
|
services.markerService.createMarkerLayer(props) |
|
|
services.markerService.createMarkerLayer(props) |
|
|
// 创建波纹图层
|
|
|
|
|
|
services.animationService.createRippleLayer(props.markers || [], props.enableCluster) |
|
|
|
|
|
// 创建轨迹图层
|
|
|
// 创建轨迹图层
|
|
|
services.trajectoryService.createTrajectoryLayer() |
|
|
services.trajectoryService.createTrajectoryLayer() |
|
|
// 创建围栏图层
|
|
|
// 创建围栏图层
|
|
|
@ -72,10 +70,10 @@ export const useMapServices = () => { |
|
|
const setMarkersVisible = (visible: boolean) => { |
|
|
const setMarkersVisible = (visible: boolean) => { |
|
|
if (visible) { |
|
|
if (visible) { |
|
|
services.markerService?.show() |
|
|
services.markerService?.show() |
|
|
services.animationService?.show() |
|
|
|
|
|
|
|
|
// services.animationService?.show()
|
|
|
} else { |
|
|
} else { |
|
|
services.markerService?.hide() |
|
|
services.markerService?.hide() |
|
|
services.animationService?.hide() |
|
|
|
|
|
|
|
|
// services.animationService?.hide()
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -135,19 +133,16 @@ export const useMapServices = () => { |
|
|
* 更新标记数据 |
|
|
* 更新标记数据 |
|
|
*/ |
|
|
*/ |
|
|
const updateMarkers = (markers: any[], currentProps?: MapProps) => { |
|
|
const updateMarkers = (markers: any[], currentProps?: MapProps) => { |
|
|
if (services.markerService && services.animationService) { |
|
|
|
|
|
|
|
|
if (services.markerService) { |
|
|
const map = services.mapService?.getMap() |
|
|
const map = services.mapService?.getMap() |
|
|
const enableCluster = currentProps?.enableCluster ?? true |
|
|
|
|
|
|
|
|
|
|
|
if (map) { |
|
|
if (map) { |
|
|
// console.log('updateMarkers', markers)
|
|
|
// console.log('updateMarkers', markers)
|
|
|
// 更新marker service(这会创建新的layer)
|
|
|
|
|
|
|
|
|
// 更新marker service(这可能会创建新的layer)
|
|
|
services.markerService.createMarkerLayer({ |
|
|
services.markerService.createMarkerLayer({ |
|
|
...currentProps, |
|
|
...currentProps, |
|
|
markers |
|
|
markers |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
// 重新创建波纹图层
|
|
|
|
|
|
services.animationService.createRippleLayer(markers, enableCluster) |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -169,7 +164,7 @@ export const useMapServices = () => { |
|
|
const servicesToDestroy = [ |
|
|
const servicesToDestroy = [ |
|
|
services.mapService, |
|
|
services.mapService, |
|
|
services.markerService, |
|
|
services.markerService, |
|
|
services.animationService, |
|
|
|
|
|
|
|
|
|
|
|
services.trajectoryService, |
|
|
services.trajectoryService, |
|
|
services.fenceService, |
|
|
services.fenceService, |
|
|
services.fenceDrawService |
|
|
services.fenceDrawService |
|
|
@ -184,7 +179,6 @@ export const useMapServices = () => { |
|
|
// 重置服务字段(保持 reactive 对象引用不变)
|
|
|
// 重置服务字段(保持 reactive 对象引用不变)
|
|
|
services.mapService = null |
|
|
services.mapService = null |
|
|
services.markerService = null |
|
|
services.markerService = null |
|
|
services.animationService = null |
|
|
|
|
|
services.popupService = null |
|
|
services.popupService = null |
|
|
services.trajectoryService = null |
|
|
services.trajectoryService = null |
|
|
services.fenceService = null |
|
|
services.fenceService = null |
|
|
|