{"version":3,"file":"dep-d367b5aa.mjs","sources":["../../src/jue-map/useLayerManager/useMarkerLayer.ts"],"sourcesContent":["import useLayerListeners from './useLayerListeners';\nimport mapValues from 'lodash/mapValues';\nimport omit from 'lodash/omit';\nimport { Ref, WatchStopHandle } from 'vue';\nimport { LAYER_CONFIG_OMIT_PROP } from '../constants';\n\nexport default function useMarkerLayer(mapInstance: LooseObject, layerInfo: Ref<MapLayer<MarkerLayerConfig>>) {\n  if (!layerInfo.value || !layerInfo.value.config) return;\n\n  const { id: layerId } = layerInfo.value;\n\n  const { data, onClick, onHover } = toRefs(reactive(layerInfo.value.config));\n\n  if (!data.value.length) return;\n\n  let markerStyle; let geometries;\n  let unwatchList: WatchStopHandle[] | null = [];\n\n  const markerLayer = new JUE.MultiMarker({\n    id: layerId,\n    map: mapInstance,\n  });\n\n  unwatchList.push(watchEffect(() => {\n    const styleConfig = omit(layerInfo.value.config, LAYER_CONFIG_OMIT_PROP);\n    const styleOption = mapValues(styleConfig, val => toRaw(unref(val)));\n    if (!styleOption.src) delete styleOption.src; // 未传src时去掉，避免GL报错\n    markerStyle = new JUE.MarkerStyle(styleOption);\n    if (markerLayer) markerLayer.setStyles({ markerStyle });\n  }));\n\n  unwatchList.push(watchEffect(() => {\n    if (!Array.isArray(data.value)) return;\n    geometries = data.value.map((geometry: MarkerGeometry, index: number) => {\n      const { id, position, rank } = geometry;\n      return {\n        id: id ? id : `${index}`,\n        position: new JUE.LatLng(position.lat, position.lng, position.height),\n        rank: rank ? rank : index,\n        styleId: 'markerStyle',\n      };\n    });\n    if (markerLayer) markerLayer.setGeometries(geometries);\n  }));\n\n  // 用户传入的事件回调在这里处理\n  unwatchList.push(watchEffect(() => {\n    useLayerListeners(markerLayer, [\n      { eventName: 'click', callbackList: onClick?.value },\n      { eventName: 'hover', callbackList: onHover?.value },\n    ]);\n  }));\n\n  markerLayer.unmount = (): void => {\n    markerLayer?.destroy();\n    unwatchList?.forEach(unwatch => unwatch());\n    unwatchList = null;\n  };\n\n  return markerLayer;\n}\n"],"names":["useMarkerLayer","mapInstance","layerInfo","value","config","id","layerId","data","onClick","onHover","toRefs","reactive","length","markerStyle","geometries","unwatchList","markerLayer","JUE","MultiMarker","map","push","watchEffect","styleConfig","omit","LAYER_CONFIG_OMIT_PROP","styleOption","mapValues","val","toRaw","unref","src","MarkerStyle","setStyles","Array","isArray","geometry","index","position","rank","LatLng","lat","lng","height","styleId","setGeometries","useLayerListeners","eventName","callbackList","unmount","destroy","forEach","unwatch"],"mappings":"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"}