{"version":3,"file":"dep-84409257.mjs","sources":["../../src/base-map/useLayerManager/useDotLayer.ts"],"sourcesContent":["/**\n * @Description: 数据可视化散点图接口，https://lbs.qq.com/webApi/visualizationApi/visualizationDoc/visualizationDocDot#5\n * @date 2022/9/6\n * @params\n*/\nimport { Ref, WatchStopHandle } from 'vue';\nimport omit from 'lodash/omit';\nimport { LAYER_CONFIG_OMIT_PROP } from '../constants';\nconst reInitProps = ['enableBloom'];\nconst STYLE_PROPS = ['type', 'fillColor', 'strokeColor', 'strokeWidth', 'radius', 'width', 'height', 'anchor', 'src'];\nexport default function useDotLayer(mapInstance: LooseObject, layerInfo: Ref<MapLayer<DotLayerConfig>>) {\n  if (!layerInfo.value || !layerInfo.value.config || !TMap.visualization?.Dot) return;\n\n  const options = omit(layerInfo.value.config, LAYER_CONFIG_OMIT_PROP);\n\n  let unwatchList: WatchStopHandle[] | null = [];\n\n  const dotOptions = {\n    ...omit(options),\n    minZoom: options.zoomRange?.[0] || 3,\n    maxZoom: options.zoomRange?.[1] || 20,\n    type: options.type || 'circle',\n    // color: options.color,\n    faceTo: options.faceTo || 'screen',\n    enableBloom: options.enableBloom || false,\n  };\n  const { imageStyle, circleStyle } = getStyleFromLayerOpts(layerInfo.value.config);\n  const initLayer = () => {\n    const initDotLayer = new TMap.visualization.Dot({ ...dotOptions,\n      styles: { dotStyle: dotOptions.type === 'image' ? imageStyle : circleStyle } });\n    initDotLayer.addTo(mapInstance);\n    return initDotLayer;\n  };\n  let dotLayer = initLayer();\n  unwatchList.push(watchEffect(() => {\n    try {\n      dotLayer?.setData(layerInfo.value.config.data?.map(item => ({ ...item, styleId: 'dotStyle' })));\n    } catch (error) {\n      dotLayer?.setData([]);\n    }\n  }));\n  Object.keys(options).forEach((key) => {\n    unwatchList?.push(watch(() => layerInfo.value.config[key], (newVal) => {\n      const styleType =  layerInfo.value.config.type;\n      const { imageStyle, circleStyle } = getStyleFromLayerOpts(layerInfo.value.config);\n      // 部分属性没有对应set方法,需要重新初始化图层\n      if (reInitProps.includes(key)) {\n        !!dotLayer && dotLayer.destroy();\n        dotLayer = initLayer();\n        dotLayer?.setData(layerInfo.value.config.data?.map(item => ({ ...item, styleId: 'dotStyle' })));\n        return;\n      }\n      if (STYLE_PROPS.includes(key)) {\n        dotLayer.setStyles({ dotStyle: styleType === 'image' ? imageStyle : circleStyle });\n        return;\n      }\n      dotOptionsHandlers[key](newVal, dotLayer);\n    }, { deep: true }));\n  });\n\n  dotLayer.unmount = (): void => {\n    dotLayer?.destroy();\n    unwatchList?.forEach(unwatch => unwatch());\n    unwatchList = null;\n  };\n\n  return dotLayer;\n}\n// 对散点层每个属性响应\nconst dotOptionsHandlers = {\n  faceTo(val: string, layerInstance: LooseObject): void {\n    layerInstance.setFaceTo(val);\n  },\n  zoomRange(val: DotLayerConfig['zoomRange'], layerInstance: LooseObject): void {\n    layerInstance.setMinZoom(val?.[0]);\n    layerInstance.setMaxZoom(val?.[1]);\n  },\n};\nconst getStyleFromLayerOpts = (layerOpts: DotLayerConfig) => {\n  const { width, height, anchor, src, fillColor, strokeColor, strokeWidth, radius } = layerOpts;\n  const imageStyle = {\n    type: 'image',\n    width,\n    height,\n    anchor,\n    src,\n  };\n  if (!imageStyle.src) delete imageStyle.src; // 未传src时去掉，可用默认图，避免GL报错\n  const circleStyle = {\n    type: 'circle',\n    fillColor,\n    strokeColor,\n    strokeWidth,\n    radius,\n  };\n  return { imageStyle, circleStyle };\n};\n"],"names":["reInitProps","STYLE_PROPS","useDotLayer","mapInstance","layerInfo","value","config","TMap","visualization","Dot","options","omit","LAYER_CONFIG_OMIT_PROP","unwatchList","dotOptions","_objectSpread","minZoom","zoomRange","maxZoom","type","faceTo","enableBloom","imageStyle","circleStyle","getStyleFromLayerOpts","initLayer","initDotLayer","styles","dotStyle","addTo","dotLayer","push","watchEffect","setData","data","map","item","styleId","error","Object","keys","forEach","key","watch","newVal","styleType","imageStyle2","circleStyle2","includes","destroy","setStyles","dotOptionsHandlers","deep","unmount","unwatch","val","layerInstance","setFaceTo","setMinZoom","setMaxZoom","layerOpts","width","height","anchor","src","fillColor","strokeColor","strokeWidth","radius"],"mappings":"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"}