@yimou6/common-ui 1.14.5 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/cdn/index.cdn.js +14 -14
  2. package/cdn/index.cdn.js.map +1 -1
  3. package/cdn/index.cdn.mjs +14 -14
  4. package/cdn/index.cdn.mjs.map +1 -1
  5. package/es/components/geoMark/index.d.ts +3 -77
  6. package/es/components/geoMark/src/geoMark.d.ts +1 -8
  7. package/es/components/geoMark/src/geoMark.mjs.map +1 -1
  8. package/es/components/geoMark/src/geoMark.vue.d.ts +4 -78
  9. package/es/components/geoMark/src/geoMark.vue2.mjs +696 -691
  10. package/es/components/geoMark/src/geoMark.vue2.mjs.map +1 -1
  11. package/es/components/geoMark/src/openMap.vue2.mjs +2 -1
  12. package/es/components/geoMark/src/openMap.vue2.mjs.map +1 -1
  13. package/lib/components/geoMark/index.d.ts +3 -77
  14. package/lib/components/geoMark/src/geoMark.d.ts +1 -8
  15. package/lib/components/geoMark/src/geoMark.js.map +1 -1
  16. package/lib/components/geoMark/src/geoMark.vue.d.ts +4 -78
  17. package/lib/components/geoMark/src/geoMark.vue2.js +695 -690
  18. package/lib/components/geoMark/src/geoMark.vue2.js.map +1 -1
  19. package/lib/components/geoMark/src/openMap.vue2.js +1 -0
  20. package/lib/components/geoMark/src/openMap.vue2.js.map +1 -1
  21. package/package.json +1 -1
  22. package/es/components/geoMark/src/DragIcon.vue.d.ts +0 -77
  23. package/es/components/geoMark/src/DragIcon.vue.mjs +0 -6
  24. package/es/components/geoMark/src/DragIcon.vue.mjs.map +0 -1
  25. package/es/components/geoMark/src/DragIcon.vue2.mjs +0 -67
  26. package/es/components/geoMark/src/DragIcon.vue2.mjs.map +0 -1
  27. package/lib/components/geoMark/src/DragIcon.vue.d.ts +0 -77
  28. package/lib/components/geoMark/src/DragIcon.vue.js +0 -10
  29. package/lib/components/geoMark/src/DragIcon.vue.js.map +0 -1
  30. package/lib/components/geoMark/src/DragIcon.vue2.js +0 -71
  31. package/lib/components/geoMark/src/DragIcon.vue2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"openMap.vue2.mjs","sources":["../../../../../../../packages/components/geoMark/src/openMap.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport DragPan from \"ol/interaction/DragPan\";\nimport Projection from \"ol/proj/Projection\";\nimport { Icon, Style } from \"ol/style\";\n// @ts-nocheck\nimport { nextTick, onMounted, ref, toRef, watch } from \"vue\";\nimport {\n Interactions as _Interactions,\n Layers as _Layers,\n Map as _Map,\n MapControls as _MapControls,\n Sources as _Sources,\n Styles as _Styles,\n} from \"vue3-openlayers\";\nimport type { Extent } from \"ol/extent\";\nimport \"ol/ol.css\";\n\n/**\n * openMap —— 重新实现的楼层图组件(替代丢失源码的 gkestor-battlefield-cesium-plus)\n *\n * 通过 vue3-openlayers 渲染一张静态楼层影像,并在其上叠加矢量图层,\n * 支持绘制(区域/逃生路线)、编辑、吸附、变换等交互。\n *\n * 关键点:\n * 1. 地图坐标系使用「像素」单位,坐标与图片像素一一对应,\n * 因此内部始终使用自建的像素投影(xkcd-image / pixels),\n * 忽略外部传入的 projection(如 EPSG:3857),否则楼层图坐标会错乱。\n * 2. center / zoom / size / extent / imgUrl 均与父组件双向联动,\n * 图片切换时会自动重设视图。\n */\nconst props = defineProps({\n apiKey: { type: String, default: \"\" },\n // 外部传入的中心点。图片切换后组件会以图片中心重置视图;外部显式修改 center 时立即生效\n center: { type: Array, default: () => [0, 0] },\n // 外部传入的缩放级别。首次加载/切换图片时组件会按图片 extent 自动适配(fit),\n // 之后外部显式修改 zoom 时立即生效并覆盖自动适配结果\n zoom: { type: Number, default: 1 },\n // 外部传入的投影(保留接口兼容,实际不使用,改用内部像素投影)\n projection: { type: [String, Object], default: undefined },\n imgUrl: { type: String, default: \"\" },\n // 图片的像素尺寸 [width, height],与 extent(图片的坐标范围)配套使用。\n // 原生 ol/source/ImageStatic 用它定义图片渲染分辨率;当 extent 宽高比与图片实际\n // 像素宽高比不一致时,该值可作图片真实像素尺寸用于拉伸矫正。\n // 注意:vue3-openlayers 的 ol-source-image-static 未暴露 imageSize 属性,\n // 实际渲染范围由 extent 决定,size 主要作为元数据保留(与父组件同步维护)\n size: { type: Array, default: () => [1024, 968] },\n extent: { type: Array, default: () => [0, 0, 1024, 968] },\n configMenuItems: { type: Array, default: () => [] },\n activatedBottomBar: { type: String, default: \"\" },\n waring: { type: [String, Number, null] as any, default: null },\n activatedPositionOverlayWaring: { type: Array, default: () => [] },\n activatedPositionOverlay: { type: Array, default: () => [] },\n activatedPropertiesOverlay: { type: Object, default: () => ({}) },\n listTitle: { type: String, default: \"\" },\n alarmType: { type: String, default: \"\" },\n svgOverlay: { type: String, default: \"\" },\n waringIcon: { type: String, default: \"\" },\n fnUpdateDrawFeature: { type: Function, default: undefined },\n fnUpdateDrawFeature2: { type: Function, default: undefined },\n fnOverrideStyle: { type: Function, default: undefined },\n});\nconst emit = defineEmits([\n \"ready\",\n \"featuresChanged\",\n \"customPointerMove\",\n \"customContextMenu\",\n \"customPostCompose\",\n]);\n// 组件擦除为 any:避免具体 ol 组件类型进入 _sfc_main 返回类型触发 TS2742/TS7056\nconst OlMap: any = _Map.OlMap;\nconst OlOverlay: any = _Map.OlOverlay;\nconst OlView: any = _Map.OlView;\nconst OlImageLayer: any = _Layers.OlImageLayer;\nconst OlVectorLayer: any = _Layers.OlVectorLayer;\nconst OlSourceImageStatic: any = _Sources.OlSourceImageStatic;\nconst OlSourceVector: any = _Sources.OlSourceVector;\nconst OlContextMenuControl: any = _MapControls.OlContextMenuControl;\nconst OlZoomControl: any = _MapControls.OlZoomControl;\nconst OlDrawInteraction: any = _Interactions.OlDrawInteraction;\nconst OlModifyInteraction: any = _Interactions.OlModifyInteraction;\nconst OlSnapInteraction: any = _Interactions.OlSnapInteraction;\nconst OlTransformInteraction: any = _Interactions.OlTransformInteraction;\nconst OlStyle: any = _Styles.OlStyle;\n\nconst mapRef = ref<any>(null);\nconst viewRef = ref<any>(null);\nconst vectorSourceRef = ref<any>(null);\nconst currentImageUrl = toRef(props, \"imgUrl\");\n\n// 内部像素投影:使地图坐标与图片像素一一对应\nconst pixelProjection: any = new Projection({\n code: \"xkcd-image\",\n units: \"pixels\",\n extent: props.extent as unknown as Extent,\n});\n\n// 图片尺寸变化时,同步投影的 extent\nwatch(\n () => props.extent,\n (extent) => {\n if (extent && pixelProjection) {\n pixelProjection.setExtent(extent as unknown as Extent);\n }\n // 图片范围更新后重新适配视图,确保图片按新尺寸正确显示(无需二次操作)\n nextTick(() => {\n // eslint-disable-next-line no-use-before-define\n calculateAutoZoom();\n });\n },\n);\n\n// 外部传入的 zoom 变化时直接同步到视图,保证外部控制立即生效\nwatch(\n () => props.zoom,\n (val) => {\n const view = viewRef.value?.view;\n if (view && typeof val === \"number\" && !Number.isNaN(val)) {\n view.setZoom(val);\n }\n },\n);\n\n// 外部传入的 center 变化时直接同步到视图,保证外部控制立即生效\nwatch(\n () => props.center,\n (val) => {\n const view = viewRef.value?.view;\n if (view && Array.isArray(val) && val.length === 2) {\n view.setCenter(val);\n }\n },\n);\n\nconst getVectorSource = () => vectorSourceRef.value?.source;\nconst getMap = () => mapRef.value?.map;\nconst getView = () => viewRef.value?.view;\n\n// 状态图标处理缓存:key = `${src}#${mode}`,value = 处理后图片的 dataURL。\n// 同一张图片的同一状态只处理一次,后续 createIcon 直接读缓存,避免重复做像素级转换。\n// 仅放内存、不写 localStorage:图标源有限且体积小(几十 KB/张),会话级缓存完全无压力;\n// localStorage 有 5MB 配额、base64 膨胀约 37%、且同步 I/O 阻塞主线程,没有必要持久化。\nconst iconColorCache = new Map<string, string>();\n// 正在处理的缓存 key,防止同一 src+状态被并发重复触发\nconst iconColorPending = new Set<string>();\n\n// 设备图标基准高度(px)。最终高度 = ICON_SIZE * scale,宽度按原图宽高比自动计算(不变形)。\n// scale 作为「高度倍率」保留(告警/编辑=1、普通=0.8),故标点高度会随 scale 变化,见 createIcon。\nconst ICON_SIZE = 40;\n\n// 着色目标色:0 故障=橙、1 报警=红\nconst STATE_COLORS: Record<string, { r: number; g: number; b: number }> = {\n orange: { r: 255, g: 140, b: 0 },\n red: { r: 230, g: 30, b: 30 },\n};\n// 设备状态 → 处理模式:0 故障=orange、1 报警=red、4 离线=gray;\n// 2(正常)及其它(-1 未启用/缺失)返回 null,直接使用原图,不产生新图与缓存。\nconst getIconMode = (state: unknown): string | null => {\n const s = Number(state);\n if (s === 0) return \"orange\";\n if (s === 1) return \"red\";\n if (s === 4) return \"gray\";\n return null;\n};\n\n// 同步创建设备图标样式(style 函数必须同步 return):\n// 1) 状态为 0/1/4:优先使用按状态处理后的缓存图;缓存未就绪时先用原图占位,\n// 同时异步处理,完成后写缓存并刷新当前图层要素使图标更新;\n// 2) 状态为 2(正常)及其它:直接使用原图 src,不做任何处理。\nconst createIcon = (src: string, scale: number, state?: unknown): any => {\n const mode = getIconMode(state);\n let effectiveSrc = src;\n if (mode) {\n const key = `${src}#${mode}`;\n effectiveSrc = iconColorCache.get(key) || src;\n if (!iconColorCache.has(key) && !iconColorPending.has(key)) {\n iconColorPending.add(key);\n processIcon(key, src, mode, (result: string) => {\n iconColorCache.set(key, result);\n iconColorPending.delete(key);\n // eslint-disable-next-line no-use-before-define\n refreshFeaturesUsingIcon();\n });\n }\n }\n return new Style({\n image: new Icon({\n src: effectiveSrc,\n anchor: [0.5, 1],\n anchorXUnits: \"fraction\",\n anchorYUnits: \"fraction\",\n // 高度 = ICON_SIZE * scale,宽度按原图宽高比自动计算(不变形)。\n // 注意:Icon 的 height 与 scale 选项不能同时使用,因此把 scale 折进 height(标量 → 直接乘高度)。\n height: ICON_SIZE * scale,\n }),\n });\n};\n\n// 某张按状态处理后的图片就绪后,重设当前图层所有设备要素的样式,\n// 使仍使用原图占位的图标切换到处理后的状态图。\n// 依赖 index.vue 传入的 fnOverrideStyle(其内部会再次调用 createIcon 读取缓存)。\nconst refreshFeaturesUsingIcon = (): void => {\n const source = vectorSourceRef.value?.source;\n const fn = props.fnOverrideStyle;\n if (!source || typeof fn !== \"function\") return;\n source.getFeatures().forEach((feature: any) => {\n if (feature.get(\"code\")) {\n fn(feature);\n }\n });\n};\n\n// 将图片异步处理为 dataURL:mode=gray 灰度化;mode=orange/red 按目标色着色。\n// 着色保留原图亮度层次(亮部更接近目标色、暗部更暗),透明区域保持不变。\n// 失败(如跨域导致 canvas 被污染)时仅移除 pending,回退继续使用原图。\nfunction processIcon(\n key: string,\n imageSrc: string,\n mode: string,\n callback: (dataUrl: string) => void,\n): void {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onload = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n // 1. 绘制原图\n ctx.drawImage(img, 0, 0);\n // 2. 获取像素数据,按状态处理(透明度通道保持不变)\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const data = imageData.data;\n const tint = STATE_COLORS[mode];\n for (let i = 0; i < data.length; i += 4) {\n const lum = 0.299 * data[i] + 0.587 * data[i + 1] + 0.114 * data[i + 2];\n if (tint) {\n // 着色:用亮度调制目标色,保留图标明暗层次\n const factor = 0.4 + 0.6 * (lum / 255);\n data[i] = tint.r * factor;\n data[i + 1] = tint.g * factor;\n data[i + 2] = tint.b * factor;\n } else {\n // 离线:标准灰度\n data[i] = lum;\n data[i + 1] = lum;\n data[i + 2] = lum;\n }\n }\n // 3. 写回 canvas 并导出 dataURL\n ctx.putImageData(imageData, 0, 0);\n callback(canvas.toDataURL(\"image/png\"));\n } catch (error) {\n iconColorPending.delete(key);\n }\n };\n img.onerror = () => {\n iconColorPending.delete(key);\n };\n img.src = imageSrc;\n}\n\nconst clearSource = () => vectorSourceRef.value?.source?.clear();\nconst addFeature = (feature: any) =>\n vectorSourceRef.value?.source?.addFeature(feature);\nconst addFeatures = (features: any[]) =>\n vectorSourceRef.value?.source?.addFeatures(features);\nconst removeFeature = (feature: any) =>\n vectorSourceRef.value?.source?.removeFeature(feature);\nconst getFeatures = () =>\n vectorSourceRef.value?.source\n ? vectorSourceRef.value.source.getFeatures()\n : [];\nconst getZoom = () => mapRef.value?.map?.getView()?.getZoom();\nconst setZoom = (zoom: number) => mapRef.value?.map?.getView()?.setZoom(zoom);\n\nconst calculateAutoZoom = () => {\n const view = viewRef.value?.view;\n if (!view || typeof view.fit !== \"function\") return;\n // 屏幕显示大小必须取 size(底图像素尺寸),而不是容器 DOM 尺寸。\n // 这样 fit 后 resolution≈1,1 地图单位 = 1 CSS 像素,图片按 size 里的大小显示(如 800×600),\n // 不会因为用了容器尺寸而被撑满整个视口,也保证点位坐标与图片像素一一对应。\n const [width, height] = props.size as number[];\n if (!width || !height) return;\n view.fit(props.extent as unknown as Extent, {\n size: [width, height],\n padding: [10, 10, 10, 10],\n constrainResolution: false,\n nearest: false,\n });\n};\n\n// 绘制模式下,地图拖拽平移(DragPan)会与绘制交互冲突,\n// 导致按住鼠标拖动放置顶点时底图跟着平移,因此绘制期间禁用 DragPan。\nconst isDrawingMode = (): boolean =>\n props.activatedBottomBar === \"区域绘制\" ||\n props.activatedBottomBar === \"逃生路线\";\n\nconst setDragPanActive = (active: boolean): void => {\n const map = mapRef.value?.map;\n if (!map) return;\n map\n .getInteractions()\n .getArray()\n .forEach((interaction: any) => {\n if (interaction instanceof DragPan) {\n interaction.setActive(active);\n }\n });\n};\n\n// 切换底部栏按钮时,同步 DragPan 的启用/禁用状态\nwatch(\n () => props.activatedBottomBar,\n () => {\n setDragPanActive(!isDrawingMode());\n },\n);\n\ndefineExpose({\n getVectorSource,\n getMap,\n getView,\n createIcon,\n clearSource,\n addFeature,\n addFeatures,\n removeFeature,\n getFeatures,\n getZoom,\n setZoom,\n calculateAutoZoom,\n});\n\nonMounted(() => {\n nextTick(() => {\n emit(\"ready\");\n const map = mapRef.value?.map;\n if (map) {\n map.on(\"postcompose\", (e: any) => emit(\"customPostCompose\", e));\n map.on(\"pointermove\", (e: any) => emit(\"customPointerMove\", e));\n map.on(\"contextmenu\", (e: any) => emit(\"customContextMenu\", e));\n setDragPanActive(!isDrawingMode());\n }\n });\n});\n</script>\n\n<template>\n <OlMap ref=\"mapRef\" class=\"w-full\" style=\"height: 100%\">\n <OlView\n ref=\"viewRef\"\n :center=\"center\"\n :zoom=\"zoom\"\n :projection=\"pixelProjection\"\n />\n\n <OlZoomControl />\n\n <OlContextMenuControl :items=\"configMenuItems\" />\n\n <!-- 底图静态影像层:key 绑定 imgUrl+extent,二者任一变化即整体销毁重建影像层。\n 因为 OL ImageStatic 的 imageExtent 在构造后不可变,vue3-openlayers 只能靠重建 source\n 来应用新 extent;若不加 key,重建/图片异步加载期间会短暂以旧 imageExtent 渲染,\n 导致首帧图标与底图错位(再次点击楼层后才对齐) -->\n <OlImageLayer\n id=\"xkcd\"\n :key=\"`${currentImageUrl}|${extent.join(',')}`\"\n :z-index=\"-1\"\n >\n <OlSourceImageStatic\n :url=\"currentImageUrl\"\n :image-extent=\"extent\"\n :projection=\"pixelProjection\"\n />\n </OlImageLayer>\n\n <!-- 矢量图层 -->\n <OlVectorLayer :z-index=\"1\">\n <OlSourceVector ref=\"vectorSourceRef\">\n <!-- 区域设置 -->\n <OlModifyInteraction v-if=\"activatedBottomBar === '区域设置'\" />\n <!-- 区域绘制 -->\n <OlDrawInteraction\n v-if=\"activatedBottomBar === '区域绘制'\"\n type=\"Polygon\"\n :stop-click=\"true\"\n @drawend=\"fnUpdateDrawFeature\"\n />\n <!-- 逃生路线 -->\n <OlDrawInteraction\n v-if=\"activatedBottomBar === '逃生路线'\"\n ref=\"drawRef\"\n type=\"LineString\"\n :stop-click=\"true\"\n @drawend=\"fnUpdateDrawFeature2\"\n />\n <!-- 区域设置吸附 -->\n <OlSnapInteraction v-if=\"activatedBottomBar === '区域设置'\" />\n </OlSourceVector>\n\n <OlStyle :override-style-function=\"fnOverrideStyle\" />\n </OlVectorLayer>\n\n <!-- 编辑 / 区域模板 -->\n <OlTransformInteraction\n v-if=\"activatedBottomBar === '编辑' || activatedBottomBar === '区域模板'\"\n />\n\n <!-- 警告气泡:activatedPositionOverlayWaring 为告警设备坐标 -->\n <OlOverlay\n v-if=\"\n waring &&\n activatedPositionOverlayWaring &&\n activatedPositionOverlayWaring.length > 0\n \"\n :position=\"activatedPositionOverlayWaring\"\n :auto-pan=\"true\"\n :anchor=\"[0.5, 1]\"\n :offset=\"[-50, -30]\"\n >\n <div\n class=\"waring-bubble flex flex-col justify-start text-white flex-nowrap\"\n >\n <img :src=\"waringIcon\" alt=\"\" class=\"absolute w-full h-full\" />\n </div>\n </OlOverlay>\n\n <!-- 位置气泡(插槽) -->\n <OlOverlay\n v-if=\"activatedPositionOverlay.length > 0\"\n :position=\"activatedPositionOverlay\"\n :offset=\"[-175, -255]\"\n :auto-pan=\"true\"\n >\n <slot name=\"overlay\" />\n </OlOverlay>\n </OlMap>\n</template>\n"],"names":["_Map","_Layers","_Sources","_MapControls","_Interactions","_Styles","_createBlock","_unref","_createVNode","_createCommentVNode","_createElementVNode","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"openMap.vue2.mjs","sources":["../../../../../../../packages/components/geoMark/src/openMap.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport DragPan from \"ol/interaction/DragPan\";\nimport Projection from \"ol/proj/Projection\";\nimport { Icon, Style } from \"ol/style\";\n// @ts-nocheck\nimport { inject, nextTick, onMounted, provide, ref, toRef, watch } from \"vue\";\nimport {\n Interactions as _Interactions,\n Layers as _Layers,\n Map as _Map,\n MapControls as _MapControls,\n Sources as _Sources,\n Styles as _Styles,\n} from \"vue3-openlayers\";\nimport type { Extent } from \"ol/extent\";\nimport \"ol/ol.css\";\n\n/**\n * openMap —— 重新实现的楼层图组件(替代丢失源码的 gkestor-battlefield-cesium-plus)\n *\n * 通过 vue3-openlayers 渲染一张静态楼层影像,并在其上叠加矢量图层,\n * 支持绘制(区域/逃生路线)、编辑、吸附、变换等交互。\n *\n * 关键点:\n * 1. 地图坐标系使用「像素」单位,坐标与图片像素一一对应,\n * 因此内部始终使用自建的像素投影(xkcd-image / pixels),\n * 忽略外部传入的 projection(如 EPSG:3857),否则楼层图坐标会错乱。\n * 2. center / zoom / size / extent / imgUrl 均与父组件双向联动,\n * 图片切换时会自动重设视图。\n */\nconst props = defineProps({\n apiKey: { type: String, default: \"\" },\n // 外部传入的中心点。图片切换后组件会以图片中心重置视图;外部显式修改 center 时立即生效\n center: { type: Array, default: () => [0, 0] },\n // 外部传入的缩放级别。首次加载/切换图片时组件会按图片 extent 自动适配(fit),\n // 之后外部显式修改 zoom 时立即生效并覆盖自动适配结果\n zoom: { type: Number, default: 1 },\n // 外部传入的投影(保留接口兼容,实际不使用,改用内部像素投影)\n projection: { type: [String, Object], default: undefined },\n imgUrl: { type: String, default: \"\" },\n // 图片的像素尺寸 [width, height],与 extent(图片的坐标范围)配套使用。\n // 原生 ol/source/ImageStatic 用它定义图片渲染分辨率;当 extent 宽高比与图片实际\n // 像素宽高比不一致时,该值可作图片真实像素尺寸用于拉伸矫正。\n // 注意:vue3-openlayers 的 ol-source-image-static 未暴露 imageSize 属性,\n // 实际渲染范围由 extent 决定,size 主要作为元数据保留(与父组件同步维护)\n size: { type: Array, default: () => [1024, 968] },\n extent: { type: Array, default: () => [0, 0, 1024, 968] },\n configMenuItems: { type: Array, default: () => [] },\n activatedBottomBar: { type: String, default: \"\" },\n waring: { type: [String, Number, null] as any, default: null },\n activatedPositionOverlayWaring: { type: Array, default: () => [] },\n activatedPositionOverlay: { type: Array, default: () => [] },\n activatedPropertiesOverlay: { type: Object, default: () => ({}) },\n listTitle: { type: String, default: \"\" },\n alarmType: { type: String, default: \"\" },\n svgOverlay: { type: String, default: \"\" },\n waringIcon: { type: String, default: \"\" },\n fnUpdateDrawFeature: { type: Function, default: undefined },\n fnUpdateDrawFeature2: { type: Function, default: undefined },\n fnOverrideStyle: { type: Function, default: undefined },\n});\nconst emit = defineEmits([\n \"ready\",\n \"featuresChanged\",\n \"customPointerMove\",\n \"customContextMenu\",\n \"customPostCompose\",\n]);\n// 组件擦除为 any:避免具体 ol 组件类型进入 _sfc_main 返回类型触发 TS2742/TS7056\nconst OlMap: any = _Map.OlMap;\nconst OlOverlay: any = _Map.OlOverlay;\nconst OlView: any = _Map.OlView;\nconst OlImageLayer: any = _Layers.OlImageLayer;\nconst OlVectorLayer: any = _Layers.OlVectorLayer;\nconst OlSourceImageStatic: any = _Sources.OlSourceImageStatic;\nconst OlSourceVector: any = _Sources.OlSourceVector;\nconst OlContextMenuControl: any = _MapControls.OlContextMenuControl;\nconst OlZoomControl: any = _MapControls.OlZoomControl;\nconst OlDrawInteraction: any = _Interactions.OlDrawInteraction;\nconst OlModifyInteraction: any = _Interactions.OlModifyInteraction;\nconst OlSnapInteraction: any = _Interactions.OlSnapInteraction;\nconst OlTransformInteraction: any = _Interactions.OlTransformInteraction;\nconst OlStyle: any = _Styles.OlStyle;\n\nconst mapRef = ref<any>(null);\nconst viewRef = ref<any>(null);\nconst vectorSourceRef = ref<any>(null);\nconst currentImageUrl = toRef(props, \"imgUrl\");\n\n// vue3-openlayers 的 ol-options 只在插件 app.use() 时通过 app.provide 注入。本组件是按需\n// import 使用(不依赖全局注册),因此下游每个 ol 组件 inject 都会打印\n// `injection \"ol-options\" not found`。这里兜底 provide 消除该告警:\n// 该配置的唯一用途是 globalOptions.debug(调试日志开关),缺失不影响任何功能;\n// inject 带默认值本身不触发告警,且使用方若已安装插件,仍会沿用其 debug 配置。\nprovide(\"ol-options\", inject(\"ol-options\", {}));\n\n// 内部像素投影:使地图坐标与图片像素一一对应\nconst pixelProjection: any = new Projection({\n code: \"xkcd-image\",\n units: \"pixels\",\n extent: props.extent as unknown as Extent,\n});\n\n// 图片尺寸变化时,同步投影的 extent\nwatch(\n () => props.extent,\n (extent) => {\n if (extent && pixelProjection) {\n pixelProjection.setExtent(extent as unknown as Extent);\n }\n // 图片范围更新后重新适配视图,确保图片按新尺寸正确显示(无需二次操作)\n nextTick(() => {\n // eslint-disable-next-line no-use-before-define\n calculateAutoZoom();\n });\n },\n);\n\n// 外部传入的 zoom 变化时直接同步到视图,保证外部控制立即生效\nwatch(\n () => props.zoom,\n (val) => {\n const view = viewRef.value?.view;\n if (view && typeof val === \"number\" && !Number.isNaN(val)) {\n view.setZoom(val);\n }\n },\n);\n\n// 外部传入的 center 变化时直接同步到视图,保证外部控制立即生效\nwatch(\n () => props.center,\n (val) => {\n const view = viewRef.value?.view;\n if (view && Array.isArray(val) && val.length === 2) {\n view.setCenter(val);\n }\n },\n);\n\nconst getVectorSource = () => vectorSourceRef.value?.source;\nconst getMap = () => mapRef.value?.map;\nconst getView = () => viewRef.value?.view;\n\n// 状态图标处理缓存:key = `${src}#${mode}`,value = 处理后图片的 dataURL。\n// 同一张图片的同一状态只处理一次,后续 createIcon 直接读缓存,避免重复做像素级转换。\n// 仅放内存、不写 localStorage:图标源有限且体积小(几十 KB/张),会话级缓存完全无压力;\n// localStorage 有 5MB 配额、base64 膨胀约 37%、且同步 I/O 阻塞主线程,没有必要持久化。\nconst iconColorCache = new Map<string, string>();\n// 正在处理的缓存 key,防止同一 src+状态被并发重复触发\nconst iconColorPending = new Set<string>();\n\n// 设备图标基准高度(px)。最终高度 = ICON_SIZE * scale,宽度按原图宽高比自动计算(不变形)。\n// scale 作为「高度倍率」保留(告警/编辑=1、普通=0.8),故标点高度会随 scale 变化,见 createIcon。\nconst ICON_SIZE = 40;\n\n// 着色目标色:0 故障=橙、1 报警=红\nconst STATE_COLORS: Record<string, { r: number; g: number; b: number }> = {\n orange: { r: 255, g: 140, b: 0 },\n red: { r: 230, g: 30, b: 30 },\n};\n// 设备状态 → 处理模式:0 故障=orange、1 报警=red、4 离线=gray;\n// 2(正常)及其它(-1 未启用/缺失)返回 null,直接使用原图,不产生新图与缓存。\nconst getIconMode = (state: unknown): string | null => {\n const s = Number(state);\n if (s === 0) return \"orange\";\n if (s === 1) return \"red\";\n if (s === 4) return \"gray\";\n return null;\n};\n\n// 同步创建设备图标样式(style 函数必须同步 return):\n// 1) 状态为 0/1/4:优先使用按状态处理后的缓存图;缓存未就绪时先用原图占位,\n// 同时异步处理,完成后写缓存并刷新当前图层要素使图标更新;\n// 2) 状态为 2(正常)及其它:直接使用原图 src,不做任何处理。\nconst createIcon = (src: string, scale: number, state?: unknown): any => {\n const mode = getIconMode(state);\n let effectiveSrc = src;\n if (mode) {\n const key = `${src}#${mode}`;\n effectiveSrc = iconColorCache.get(key) || src;\n if (!iconColorCache.has(key) && !iconColorPending.has(key)) {\n iconColorPending.add(key);\n processIcon(key, src, mode, (result: string) => {\n iconColorCache.set(key, result);\n iconColorPending.delete(key);\n // eslint-disable-next-line no-use-before-define\n refreshFeaturesUsingIcon();\n });\n }\n }\n return new Style({\n image: new Icon({\n src: effectiveSrc,\n anchor: [0.5, 1],\n anchorXUnits: \"fraction\",\n anchorYUnits: \"fraction\",\n // 高度 = ICON_SIZE * scale,宽度按原图宽高比自动计算(不变形)。\n // 注意:Icon 的 height 与 scale 选项不能同时使用,因此把 scale 折进 height(标量 → 直接乘高度)。\n height: ICON_SIZE * scale,\n }),\n });\n};\n\n// 某张按状态处理后的图片就绪后,重设当前图层所有设备要素的样式,\n// 使仍使用原图占位的图标切换到处理后的状态图。\n// 依赖 index.vue 传入的 fnOverrideStyle(其内部会再次调用 createIcon 读取缓存)。\nconst refreshFeaturesUsingIcon = (): void => {\n const source = vectorSourceRef.value?.source;\n const fn = props.fnOverrideStyle;\n if (!source || typeof fn !== \"function\") return;\n source.getFeatures().forEach((feature: any) => {\n if (feature.get(\"code\")) {\n fn(feature);\n }\n });\n};\n\n// 将图片异步处理为 dataURL:mode=gray 灰度化;mode=orange/red 按目标色着色。\n// 着色保留原图亮度层次(亮部更接近目标色、暗部更暗),透明区域保持不变。\n// 失败(如跨域导致 canvas 被污染)时仅移除 pending,回退继续使用原图。\nfunction processIcon(\n key: string,\n imageSrc: string,\n mode: string,\n callback: (dataUrl: string) => void,\n): void {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onload = () => {\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n // 1. 绘制原图\n ctx.drawImage(img, 0, 0);\n // 2. 获取像素数据,按状态处理(透明度通道保持不变)\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const data = imageData.data;\n const tint = STATE_COLORS[mode];\n for (let i = 0; i < data.length; i += 4) {\n const lum = 0.299 * data[i] + 0.587 * data[i + 1] + 0.114 * data[i + 2];\n if (tint) {\n // 着色:用亮度调制目标色,保留图标明暗层次\n const factor = 0.4 + 0.6 * (lum / 255);\n data[i] = tint.r * factor;\n data[i + 1] = tint.g * factor;\n data[i + 2] = tint.b * factor;\n } else {\n // 离线:标准灰度\n data[i] = lum;\n data[i + 1] = lum;\n data[i + 2] = lum;\n }\n }\n // 3. 写回 canvas 并导出 dataURL\n ctx.putImageData(imageData, 0, 0);\n callback(canvas.toDataURL(\"image/png\"));\n } catch (error) {\n iconColorPending.delete(key);\n }\n };\n img.onerror = () => {\n iconColorPending.delete(key);\n };\n img.src = imageSrc;\n}\n\nconst clearSource = () => vectorSourceRef.value?.source?.clear();\nconst addFeature = (feature: any) =>\n vectorSourceRef.value?.source?.addFeature(feature);\nconst addFeatures = (features: any[]) =>\n vectorSourceRef.value?.source?.addFeatures(features);\nconst removeFeature = (feature: any) =>\n vectorSourceRef.value?.source?.removeFeature(feature);\nconst getFeatures = () =>\n vectorSourceRef.value?.source\n ? vectorSourceRef.value.source.getFeatures()\n : [];\nconst getZoom = () => mapRef.value?.map?.getView()?.getZoom();\nconst setZoom = (zoom: number) => mapRef.value?.map?.getView()?.setZoom(zoom);\n\nconst calculateAutoZoom = () => {\n const view = viewRef.value?.view;\n if (!view || typeof view.fit !== \"function\") return;\n // 屏幕显示大小必须取 size(底图像素尺寸),而不是容器 DOM 尺寸。\n // 这样 fit 后 resolution≈1,1 地图单位 = 1 CSS 像素,图片按 size 里的大小显示(如 1024×968),\n // 不会因为用了容器尺寸而被撑满整个视口,也保证点位坐标与图片像素一一对应。\n const [width, height] = props.size as number[];\n if (!width || !height) return;\n view.fit(props.extent as unknown as Extent, {\n size: [width, height],\n padding: [10, 10, 10, 10],\n constrainResolution: false,\n nearest: false,\n });\n};\n\n// 绘制模式下,地图拖拽平移(DragPan)会与绘制交互冲突,\n// 导致按住鼠标拖动放置顶点时底图跟着平移,因此绘制期间禁用 DragPan。\nconst isDrawingMode = (): boolean =>\n props.activatedBottomBar === \"区域绘制\" ||\n props.activatedBottomBar === \"逃生路线\";\n\nconst setDragPanActive = (active: boolean): void => {\n const map = mapRef.value?.map;\n if (!map) return;\n map\n .getInteractions()\n .getArray()\n .forEach((interaction: any) => {\n if (interaction instanceof DragPan) {\n interaction.setActive(active);\n }\n });\n};\n\n// 切换底部栏按钮时,同步 DragPan 的启用/禁用状态\nwatch(\n () => props.activatedBottomBar,\n () => {\n setDragPanActive(!isDrawingMode());\n },\n);\n\ndefineExpose({\n getVectorSource,\n getMap,\n getView,\n createIcon,\n clearSource,\n addFeature,\n addFeatures,\n removeFeature,\n getFeatures,\n getZoom,\n setZoom,\n calculateAutoZoom,\n});\n\nonMounted(() => {\n nextTick(() => {\n emit(\"ready\");\n const map = mapRef.value?.map;\n if (map) {\n map.on(\"postcompose\", (e: any) => emit(\"customPostCompose\", e));\n map.on(\"pointermove\", (e: any) => emit(\"customPointerMove\", e));\n map.on(\"contextmenu\", (e: any) => emit(\"customContextMenu\", e));\n setDragPanActive(!isDrawingMode());\n }\n });\n});\n</script>\n\n<template>\n <OlMap ref=\"mapRef\" class=\"w-full\" style=\"height: 100%\">\n <OlView\n ref=\"viewRef\"\n :center=\"center\"\n :zoom=\"zoom\"\n :projection=\"pixelProjection\"\n />\n\n <OlZoomControl />\n\n <OlContextMenuControl :items=\"configMenuItems\" />\n\n <!-- 底图静态影像层:key 绑定 imgUrl+extent,二者任一变化即整体销毁重建影像层。\n 因为 OL ImageStatic 的 imageExtent 在构造后不可变,vue3-openlayers 只能靠重建 source\n 来应用新 extent;若不加 key,重建/图片异步加载期间会短暂以旧 imageExtent 渲染,\n 导致首帧图标与底图错位(再次点击楼层后才对齐) -->\n <OlImageLayer\n id=\"xkcd\"\n :key=\"`${currentImageUrl}|${extent.join(',')}`\"\n :z-index=\"-1\"\n >\n <OlSourceImageStatic\n :url=\"currentImageUrl\"\n :image-extent=\"extent\"\n :projection=\"pixelProjection\"\n />\n </OlImageLayer>\n\n <!-- 矢量图层 -->\n <OlVectorLayer :z-index=\"1\">\n <OlSourceVector ref=\"vectorSourceRef\">\n <!-- 区域设置 -->\n <OlModifyInteraction v-if=\"activatedBottomBar === '区域设置'\" />\n <!-- 区域绘制 -->\n <OlDrawInteraction\n v-if=\"activatedBottomBar === '区域绘制'\"\n type=\"Polygon\"\n :stop-click=\"true\"\n @drawend=\"fnUpdateDrawFeature\"\n />\n <!-- 逃生路线 -->\n <OlDrawInteraction\n v-if=\"activatedBottomBar === '逃生路线'\"\n ref=\"drawRef\"\n type=\"LineString\"\n :stop-click=\"true\"\n @drawend=\"fnUpdateDrawFeature2\"\n />\n <!-- 区域设置吸附 -->\n <OlSnapInteraction v-if=\"activatedBottomBar === '区域设置'\" />\n </OlSourceVector>\n\n <OlStyle :override-style-function=\"fnOverrideStyle\" />\n </OlVectorLayer>\n\n <!-- 编辑 / 区域模板 -->\n <OlTransformInteraction\n v-if=\"activatedBottomBar === '编辑' || activatedBottomBar === '区域模板'\"\n />\n\n <!-- 警告气泡:activatedPositionOverlayWaring 为告警设备坐标 -->\n <OlOverlay\n v-if=\"\n waring &&\n activatedPositionOverlayWaring &&\n activatedPositionOverlayWaring.length > 0\n \"\n :position=\"activatedPositionOverlayWaring\"\n :auto-pan=\"true\"\n :anchor=\"[0.5, 1]\"\n :offset=\"[-50, -30]\"\n >\n <div\n class=\"waring-bubble flex flex-col justify-start text-white flex-nowrap\"\n >\n <img :src=\"waringIcon\" alt=\"\" class=\"absolute w-full h-full\" />\n </div>\n </OlOverlay>\n\n <!-- 位置气泡(插槽) -->\n <OlOverlay\n v-if=\"activatedPositionOverlay.length > 0\"\n :position=\"activatedPositionOverlay\"\n :offset=\"[-175, -255]\"\n :auto-pan=\"true\"\n >\n <slot name=\"overlay\" />\n </OlOverlay>\n </OlMap>\n</template>\n"],"names":["_Map","_Layers","_Sources","_MapControls","_Interactions","_Styles","_createBlock","_unref","_createVNode","_createCommentVNode","_createElementVNode","_renderSlot"],"mappings":"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"}
@@ -269,6 +269,7 @@ export declare const IGeoMark: import("../../types").SFCWithInstall<import("vue"
269
269
  width: number;
270
270
  height: number;
271
271
  }>;
272
+ loadSeq: number;
272
273
  loadingSource: (data: import("./src/geoMark").Floor, centerOnWarning?: boolean) => Promise<void>;
273
274
  FnUpdateFloor: (item: import("./src/geoMark").Floor) => void;
274
275
  fnUpdateDrawFeature2: (event: import("./src/geoMark").DrawEvent) => void;
@@ -279,7 +280,7 @@ export declare const IGeoMark: import("../../types").SFCWithInstall<import("vue"
279
280
  FnSetColor: (color: string) => void;
280
281
  handlerChecked: (key: string) => void;
281
282
  dragStart: (item: import("./src/geoMark").Device) => void;
282
- dragEnd: (evt: import("./src/geoMark").DragEvent) => void;
283
+ dragEnd: () => void;
283
284
  listUnitDevice: import("vue").ComputedRef<{
284
285
  [x: string]: any;
285
286
  code: string;
@@ -302,86 +303,11 @@ export declare const IGeoMark: import("../../types").SFCWithInstall<import("vue"
302
303
  callback: (val: any) => void;
303
304
  classname?: string | undefined;
304
305
  }[]>;
306
+ clearHoverOverlay: () => void;
305
307
  readonly defaultImage: string;
306
308
  readonly waringIcon: string;
307
309
  readonly svgOverlay: string;
308
310
  readonly defaultIcon: string;
309
- DragIcon: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
310
- icon: {
311
- type: StringConstructor;
312
- required: true;
313
- };
314
- item: {
315
- type: ObjectConstructor;
316
- required: true;
317
- };
318
- mapRef: {
319
- type: ObjectConstructor;
320
- required: true;
321
- };
322
- move1: {
323
- type: ObjectConstructor;
324
- required: true;
325
- };
326
- onDrop: {
327
- type: FunctionConstructor;
328
- required: false;
329
- };
330
- }>, {
331
- props: import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
332
- icon: {
333
- type: StringConstructor;
334
- required: true;
335
- };
336
- item: {
337
- type: ObjectConstructor;
338
- required: true;
339
- };
340
- mapRef: {
341
- type: ObjectConstructor;
342
- required: true;
343
- };
344
- move1: {
345
- type: ObjectConstructor;
346
- required: true;
347
- };
348
- onDrop: {
349
- type: FunctionConstructor;
350
- required: false;
351
- };
352
- }>> & Readonly<{
353
- onDragend?: ((...args: any[]) => any) | undefined;
354
- onDragstart?: ((...args: any[]) => any) | undefined;
355
- }> & {}>;
356
- emit: (event: "dragend" | "dragstart", ...args: any[]) => void;
357
- activatedDragItem: import("vue").Ref<any, any>;
358
- handleDragStart: (evt: DragEvent) => void;
359
- handleDragEnd: (evt: DragEvent) => void;
360
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("dragend" | "dragstart")[], "dragend" | "dragstart", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
361
- icon: {
362
- type: StringConstructor;
363
- required: true;
364
- };
365
- item: {
366
- type: ObjectConstructor;
367
- required: true;
368
- };
369
- mapRef: {
370
- type: ObjectConstructor;
371
- required: true;
372
- };
373
- move1: {
374
- type: ObjectConstructor;
375
- required: true;
376
- };
377
- onDrop: {
378
- type: FunctionConstructor;
379
- required: false;
380
- };
381
- }>> & Readonly<{
382
- onDragend?: ((...args: any[]) => any) | undefined;
383
- onDragstart?: ((...args: any[]) => any) | undefined;
384
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
385
311
  FloorMark: import("vue").DefineComponent<{}, {
386
312
  emit: (event: "changeFloor", ...args: any[]) => void;
387
313
  ElScrollbar: any;
@@ -57,12 +57,6 @@ interface ColorPickerValue {
57
57
  interface FloorComponent {
58
58
  init: (floors: Floor[], defaultFloor: Floor) => void;
59
59
  }
60
- interface DragIconComponent {
61
- icon: string;
62
- item: Device;
63
- mapRef: MapComponent;
64
- move1: number[];
65
- }
66
60
  interface Device {
67
61
  code: string;
68
62
  deviceType?: string;
@@ -111,7 +105,6 @@ interface QueryDeviceListType {
111
105
  interface OpenParams {
112
106
  listFloor: Floor[];
113
107
  listDevice: Device[];
114
- mode?: string;
115
108
  defaultFloor?: Floor | null;
116
109
  waring?: string | number | null;
117
110
  listTitle?: string;
@@ -152,7 +145,7 @@ interface Injections {
152
145
  "ol-feature": OpenLayersFeatureConstructor;
153
146
  "ol-geom": OpenLayersGeometryConstructor;
154
147
  }
155
- export type { ColorPickerValue, ComponentEmits, ComponentProps, ConfigBottomBarItem, ConfigIcon, ConfigTopBarItem, Device, DragEvent, DragIconComponent, DrawEvent, FeatureTypeEnum, Floor, FloorComponent, Injections, MapComponent, MapEvent, MapPointerEvent, MenuItem, OpenLayersFeature, OpenLayersFeatureConstructor, OpenLayersFormat, OpenLayersGeometry, OpenLayersGeometryConstructor, OpenLayersMap, OpenLayersVectorSource, OpenLayersView, OpenParams, OptionType, QueryDeviceListType, SaveResult, StyleUpdateParams, };
148
+ export type { ColorPickerValue, ComponentEmits, ComponentProps, ConfigBottomBarItem, ConfigIcon, ConfigTopBarItem, Device, DragEvent, DrawEvent, FeatureTypeEnum, Floor, FloorComponent, Injections, MapComponent, MapEvent, MapPointerEvent, MenuItem, OpenLayersFeature, OpenLayersFeatureConstructor, OpenLayersFormat, OpenLayersGeometry, OpenLayersGeometryConstructor, OpenLayersMap, OpenLayersVectorSource, OpenLayersView, OpenParams, OptionType, QueryDeviceListType, SaveResult, StyleUpdateParams, };
156
149
  export declare const GeoMarkProps: {
157
150
  type: {
158
151
  type: PropType<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"geoMark.js","sources":["../../../../../../../packages/components/geoMark/src/geoMark.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType } from \"vue\";\n\ntype FeatureTypeEnum = \"Areas\" | \"Devices\" | \"Facilities\" | \"Cameras\";\n\n// OpenLayers 相关类型定义\n// 说明:ol 库真实类型(Feature/Map/View/VectorSource 等)结构复杂,\n// 手写简化类型会与 ol 的强类型冲突,这里统一用 any 以兼容真实 ol 对象。\ntype OpenLayersFeature = any;\ntype OpenLayersGeometry = any;\ntype OpenLayersMap = any;\ntype OpenLayersView = any;\ntype OpenLayersVectorSource = any;\n\ninterface OpenLayersFormat {\n GeoJSON: {\n new (): {\n readFeatures: (geojson: any) => OpenLayersFeature[];\n writeFeatures: (features: OpenLayersFeature[]) => string;\n };\n };\n}\n\ninterface OpenLayersFeatureConstructor {\n new (properties: Record<string, any>): OpenLayersFeature;\n}\n\ninterface OpenLayersGeometryConstructor {\n Point: {\n new (coordinates: number[]): OpenLayersGeometry;\n };\n Polygon: {\n new (coordinates: number[][][]): OpenLayersGeometry;\n };\n}\n\n// 地图组件相关类型\ninterface MapComponent {\n getMap: () => OpenLayersMap;\n getVectorSource: () => OpenLayersVectorSource;\n getView: () => OpenLayersView;\n calculateAutoZoom: () => void;\n createIcon: (iconUrl: string, scale: number) => any;\n}\n\n// 事件相关类型\ninterface DragEvent {\n screenX: number;\n screenY: number;\n [key: string]: any;\n}\n\ninterface MapPointerEvent {\n pixel: number[];\n originalEvent: any;\n}\n\n// 颜色选择器类型\ninterface ColorPickerValue {\n rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n };\n hex?: string;\n hsl?: {\n h: number;\n s: number;\n l: number;\n };\n}\n\n// 楼层组件类型\ninterface FloorComponent {\n init: (floors: Floor[], defaultFloor: Floor) => void;\n}\n\n// 拖拽图标组件类型\ninterface DragIconComponent {\n icon: string;\n item: Device;\n mapRef: MapComponent;\n move1: number[];\n}\n\n// 扩展原有的接口定义\ninterface Device {\n code: string;\n deviceType?: string;\n deviceTypeName?: string;\n videoName?: string;\n remark?: string;\n floor?: string | number;\n [key: string]: any;\n}\n\ninterface Floor {\n floor: string | number;\n bucketName?: string;\n geojson?: any;\n videoGeoJson?: any;\n facilityGeoJson?: any;\n [key: string]: any;\n}\n\ninterface ConfigIcon {\n [code: string]: string;\n}\n\ninterface ConfigTopBarItem {\n name: string;\n icon: string;\n value: string;\n}\n\ninterface ConfigBottomBarItem {\n name: string;\n icon: string;\n}\n\ninterface MenuItem {\n text: string;\n icon: string;\n callback: (val: any) => void;\n classname?: string;\n}\n\ninterface OptionType {\n label: string;\n value: string;\n key: string;\n}\n\ninterface QueryDeviceListType {\n activatedDeviceType: string;\n activatedManufacturer: string;\n activatedDeviceModel: string;\n}\n\ninterface OpenParams {\n listFloor: Floor[];\n listDevice: Device[];\n mode?: string;\n defaultFloor?: Floor | null;\n waring?: string | number | null;\n listTitle?: string;\n configIcon?: ConfigIcon;\n configTopBar?: ConfigTopBarItem[];\n type?: string;\n featureType?: FeatureTypeEnum[] | [];\n /**\n * 是否按底图真实像素尺寸建立坐标系。\n * - true(默认):按当前楼层底图的 naturalWidth/Height 动态设置 extent。\n * - false:保持旧版本行为,extent/size 固定为 [0,0,800,600],兼容旧点位数据。\n */\n useRealImageSize?: boolean;\n}\n\ninterface MapEvent {\n pixel: number[];\n coordinate: number[];\n feature?: OpenLayersFeature;\n geometry?: OpenLayersGeometry;\n}\n\ninterface DrawEvent {\n feature: OpenLayersFeature;\n type?: string;\n}\n\ninterface StyleUpdateParams {\n feature?: OpenLayersFeature;\n isSelected?: boolean;\n offset?: number;\n}\n\ninterface SaveResult {\n geojson: string;\n floor: Floor | undefined;\n}\n\n// 组件事件类型\ninterface ComponentEmits {\n closeMain: [];\n saveMain: [result: SaveResult];\n}\n\n// 组件Props类型\ninterface ComponentProps {\n type?: string;\n}\n\n// 注入的类型\ninterface Injections {\n \"ol-format\": OpenLayersFormat;\n \"ol-feature\": OpenLayersFeatureConstructor;\n \"ol-geom\": OpenLayersGeometryConstructor;\n}\n\nexport type {\n ColorPickerValue,\n ComponentEmits,\n ComponentProps,\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DragIconComponent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n FloorComponent,\n Injections,\n MapComponent,\n MapEvent,\n MapPointerEvent,\n MenuItem,\n OpenLayersFeature,\n OpenLayersFeatureConstructor,\n OpenLayersFormat,\n OpenLayersGeometry,\n OpenLayersGeometryConstructor,\n OpenLayersMap,\n OpenLayersVectorSource,\n OpenLayersView,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n SaveResult,\n StyleUpdateParams,\n};\n\nexport const GeoMarkProps = {\n type: { type: String as PropType<string>, default: \"\" },\n};\n\nexport type GeoMarkPropsType = ExtractPropTypes<typeof GeoMarkProps>;\nexport type GeoMarkInstance = ComponentPublicInstance & {\n open: (params: OpenParams) => Promise<void>;\n};\n"],"names":[],"mappings":";;AAyOO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAA4B,SAAS,EAAG;AACxD;;;;"}
1
+ {"version":3,"file":"geoMark.js","sources":["../../../../../../../packages/components/geoMark/src/geoMark.ts"],"sourcesContent":["import type { ComponentPublicInstance, ExtractPropTypes, PropType } from \"vue\";\n\ntype FeatureTypeEnum = \"Areas\" | \"Devices\" | \"Facilities\" | \"Cameras\";\n\n// OpenLayers 相关类型定义\n// 说明:ol 库真实类型(Feature/Map/View/VectorSource 等)结构复杂,\n// 手写简化类型会与 ol 的强类型冲突,这里统一用 any 以兼容真实 ol 对象。\ntype OpenLayersFeature = any;\ntype OpenLayersGeometry = any;\ntype OpenLayersMap = any;\ntype OpenLayersView = any;\ntype OpenLayersVectorSource = any;\n\ninterface OpenLayersFormat {\n GeoJSON: {\n new (): {\n readFeatures: (geojson: any) => OpenLayersFeature[];\n writeFeatures: (features: OpenLayersFeature[]) => string;\n };\n };\n}\n\ninterface OpenLayersFeatureConstructor {\n new (properties: Record<string, any>): OpenLayersFeature;\n}\n\ninterface OpenLayersGeometryConstructor {\n Point: {\n new (coordinates: number[]): OpenLayersGeometry;\n };\n Polygon: {\n new (coordinates: number[][][]): OpenLayersGeometry;\n };\n}\n\n// 地图组件相关类型\ninterface MapComponent {\n getMap: () => OpenLayersMap;\n getVectorSource: () => OpenLayersVectorSource;\n getView: () => OpenLayersView;\n calculateAutoZoom: () => void;\n createIcon: (iconUrl: string, scale: number) => any;\n}\n\n// 事件相关类型\ninterface DragEvent {\n screenX: number;\n screenY: number;\n [key: string]: any;\n}\n\ninterface MapPointerEvent {\n pixel: number[];\n originalEvent: any;\n}\n\n// 颜色选择器类型\ninterface ColorPickerValue {\n rgba: {\n r: number;\n g: number;\n b: number;\n a: number;\n };\n hex?: string;\n hsl?: {\n h: number;\n s: number;\n l: number;\n };\n}\n\n// 楼层组件类型\ninterface FloorComponent {\n init: (floors: Floor[], defaultFloor: Floor) => void;\n}\n\n// 扩展原有的接口定义\ninterface Device {\n code: string;\n deviceType?: string;\n deviceTypeName?: string;\n videoName?: string;\n remark?: string;\n floor?: string | number;\n [key: string]: any;\n}\n\ninterface Floor {\n floor: string | number;\n bucketName?: string;\n geojson?: any;\n videoGeoJson?: any;\n facilityGeoJson?: any;\n [key: string]: any;\n}\n\ninterface ConfigIcon {\n [code: string]: string;\n}\n\ninterface ConfigTopBarItem {\n name: string;\n icon: string;\n value: string;\n}\n\ninterface ConfigBottomBarItem {\n name: string;\n icon: string;\n}\n\ninterface MenuItem {\n text: string;\n icon: string;\n callback: (val: any) => void;\n classname?: string;\n}\n\ninterface OptionType {\n label: string;\n value: string;\n key: string;\n}\n\ninterface QueryDeviceListType {\n activatedDeviceType: string;\n activatedManufacturer: string;\n activatedDeviceModel: string;\n}\n\ninterface OpenParams {\n listFloor: Floor[];\n listDevice: Device[];\n defaultFloor?: Floor | null;\n waring?: string | number | null;\n listTitle?: string;\n configIcon?: ConfigIcon;\n configTopBar?: ConfigTopBarItem[];\n type?: string;\n featureType?: FeatureTypeEnum[] | [];\n /**\n * 是否按底图真实像素尺寸建立坐标系。\n * - false(默认):保持旧版本行为,extent/size 固定为 [0,0,1024,968],兼容旧点位数据。\n * - true:按当前楼层底图的 naturalWidth/Height 动态设置 extent(新项目推荐)。\n */\n useRealImageSize?: boolean;\n}\n\ninterface MapEvent {\n pixel: number[];\n coordinate: number[];\n feature?: OpenLayersFeature;\n geometry?: OpenLayersGeometry;\n}\n\ninterface DrawEvent {\n feature: OpenLayersFeature;\n type?: string;\n}\n\ninterface StyleUpdateParams {\n feature?: OpenLayersFeature;\n isSelected?: boolean;\n offset?: number;\n}\n\ninterface SaveResult {\n geojson: string;\n floor: Floor | undefined;\n}\n\n// 组件事件类型\ninterface ComponentEmits {\n closeMain: [];\n saveMain: [result: SaveResult];\n}\n\n// 组件Props类型\ninterface ComponentProps {\n type?: string;\n}\n\n// 注入的类型\ninterface Injections {\n \"ol-format\": OpenLayersFormat;\n \"ol-feature\": OpenLayersFeatureConstructor;\n \"ol-geom\": OpenLayersGeometryConstructor;\n}\n\nexport type {\n ColorPickerValue,\n ComponentEmits,\n ComponentProps,\n ConfigBottomBarItem,\n ConfigIcon,\n ConfigTopBarItem,\n Device,\n DragEvent,\n DrawEvent,\n FeatureTypeEnum,\n Floor,\n FloorComponent,\n Injections,\n MapComponent,\n MapEvent,\n MapPointerEvent,\n MenuItem,\n OpenLayersFeature,\n OpenLayersFeatureConstructor,\n OpenLayersFormat,\n OpenLayersGeometry,\n OpenLayersGeometryConstructor,\n OpenLayersMap,\n OpenLayersVectorSource,\n OpenLayersView,\n OpenParams,\n OptionType,\n QueryDeviceListType,\n SaveResult,\n StyleUpdateParams,\n};\n\nexport const GeoMarkProps = {\n type: { type: String as PropType<string>, default: \"\" },\n};\n\nexport type GeoMarkPropsType = ExtractPropTypes<typeof GeoMarkProps>;\nexport type GeoMarkInstance = ComponentPublicInstance & {\n open: (params: OpenParams) => Promise<void>;\n};\n"],"names":[],"mappings":";;AA+NO,MAAM,YAAe,GAAA;AAAA,EAC1B,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAA4B,SAAS,EAAG;AACxD;;;;"}
@@ -1,5 +1,5 @@
1
1
  import Style from "ol/style/Style";
2
- import type { ConfigBottomBarItem, ConfigIcon, ConfigTopBarItem, Device, DragEvent, DrawEvent, FeatureTypeEnum, Floor, MenuItem, OpenLayersFeature, OpenParams, OptionType, QueryDeviceListType } from "./geoMark";
2
+ import type { ConfigBottomBarItem, ConfigIcon, ConfigTopBarItem, Device, DrawEvent, FeatureTypeEnum, Floor, MenuItem, OpenLayersFeature, OpenParams, OptionType, QueryDeviceListType } from "./geoMark";
3
3
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
4
  type: {
5
5
  type: import("vue").PropType<string>;
@@ -270,6 +270,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
270
270
  width: number;
271
271
  height: number;
272
272
  }>;
273
+ loadSeq: number;
273
274
  loadingSource: (data: Floor, centerOnWarning?: boolean) => Promise<void>;
274
275
  FnUpdateFloor: (item: Floor) => void;
275
276
  fnUpdateDrawFeature2: (event: DrawEvent) => void;
@@ -280,7 +281,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
280
281
  FnSetColor: (color: string) => void;
281
282
  handlerChecked: (key: string) => void;
282
283
  dragStart: (item: Device) => void;
283
- dragEnd: (evt: DragEvent) => void;
284
+ dragEnd: () => void;
284
285
  listUnitDevice: import("vue").ComputedRef<{
285
286
  [x: string]: any;
286
287
  code: string;
@@ -303,86 +304,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
303
304
  callback: (val: any) => void;
304
305
  classname?: string | undefined;
305
306
  }[]>;
307
+ clearHoverOverlay: () => void;
306
308
  readonly defaultImage: string;
307
309
  readonly waringIcon: string;
308
310
  readonly svgOverlay: string;
309
311
  readonly defaultIcon: string;
310
- DragIcon: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
311
- icon: {
312
- type: StringConstructor;
313
- required: true;
314
- };
315
- item: {
316
- type: ObjectConstructor;
317
- required: true;
318
- };
319
- mapRef: {
320
- type: ObjectConstructor;
321
- required: true;
322
- };
323
- move1: {
324
- type: ObjectConstructor;
325
- required: true;
326
- };
327
- onDrop: {
328
- type: FunctionConstructor;
329
- required: false;
330
- };
331
- }>, {
332
- props: import("@vue/shared").LooseRequired<Readonly<import("vue").ExtractPropTypes<{
333
- icon: {
334
- type: StringConstructor;
335
- required: true;
336
- };
337
- item: {
338
- type: ObjectConstructor;
339
- required: true;
340
- };
341
- mapRef: {
342
- type: ObjectConstructor;
343
- required: true;
344
- };
345
- move1: {
346
- type: ObjectConstructor;
347
- required: true;
348
- };
349
- onDrop: {
350
- type: FunctionConstructor;
351
- required: false;
352
- };
353
- }>> & Readonly<{
354
- onDragend?: ((...args: any[]) => any) | undefined;
355
- onDragstart?: ((...args: any[]) => any) | undefined;
356
- }> & {}>;
357
- emit: (event: "dragend" | "dragstart", ...args: any[]) => void;
358
- activatedDragItem: import("vue").Ref<any, any>;
359
- handleDragStart: (evt: globalThis.DragEvent) => void;
360
- handleDragEnd: (evt: globalThis.DragEvent) => void;
361
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("dragend" | "dragstart")[], "dragend" | "dragstart", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
362
- icon: {
363
- type: StringConstructor;
364
- required: true;
365
- };
366
- item: {
367
- type: ObjectConstructor;
368
- required: true;
369
- };
370
- mapRef: {
371
- type: ObjectConstructor;
372
- required: true;
373
- };
374
- move1: {
375
- type: ObjectConstructor;
376
- required: true;
377
- };
378
- onDrop: {
379
- type: FunctionConstructor;
380
- required: false;
381
- };
382
- }>> & Readonly<{
383
- onDragend?: ((...args: any[]) => any) | undefined;
384
- onDragstart?: ((...args: any[]) => any) | undefined;
385
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
386
312
  FloorMark: import("vue").DefineComponent<{}, {
387
313
  emit: (event: "changeFloor", ...args: any[]) => void;
388
314
  ElScrollbar: any;