leiting-bim 2.1.62 → 2.1.98

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 (61) hide show
  1. package/leiting-bim.es.js +1 -1
  2. package/leiting-bim.umd.js +42 -48
  3. package/leitingbim.css +1 -1
  4. package/package.json +1 -1
  5. package/plugins/cesium-core/dist/cesium-core.mjs +301 -295
  6. package/plugins/cesium-core/dist/cesium-core.mjs.map +1 -1
  7. package/plugins/cesium-core/dist/cesium-core.umd.js +13 -13
  8. package/plugins/cesium-core/dist/cesium-core.umd.js.map +1 -1
  9. package/plugins/cesium-core/dist/components/BufferedHierarchicalAggregator.d.ts +2 -0
  10. package/plugins/cesium-core/package.json +1 -1
  11. package/plugins/cesium-vue/dist/cesium-vue/src/components/basic-audio/index.d.ts +13 -0
  12. package/plugins/cesium-vue/dist/cesium-vue/src/components/basic-video/index.d.ts +98 -0
  13. package/plugins/cesium-vue/dist/cesium-vue/src/components/card-carousel/index.d.ts +147 -0
  14. package/plugins/cesium-vue/dist/cesium-vue/src/components/card-content/index.d.ts +16 -0
  15. package/plugins/cesium-vue/dist/cesium-vue/src/components/card-page/index.d.ts +64 -0
  16. package/plugins/cesium-vue/dist/cesium-vue/src/components/carousel-img/index.d.ts +34 -0
  17. package/plugins/cesium-vue/dist/cesium-vue/src/components/echarts-pro/index.d.ts +63 -0
  18. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-bubble/index.d.ts +73 -0
  19. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-default/index.d.ts +43 -0
  20. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-html/index.d.ts +43 -0
  21. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-manage/index.d.ts +159 -0
  22. package/plugins/cesium-vue/dist/cesium-vue/src/components/marker-text/index.d.ts +25 -0
  23. package/plugins/cesium-vue/dist/cesium-vue/src/components/measurement/index.d.ts +73 -0
  24. package/plugins/cesium-vue/dist/cesium-vue/src/components/position-picker/index.d.ts +58 -0
  25. package/plugins/cesium-vue/dist/cesium-vue/src/index.d.ts +46 -0
  26. package/plugins/cesium-vue/dist/components/basic-audio.d.ts +3 -3
  27. package/plugins/cesium-vue/dist/components/basic-audio.js.map +1 -1
  28. package/plugins/cesium-vue/dist/components/basic-video.d.ts +3 -3
  29. package/plugins/cesium-vue/dist/components/basic-video.js.map +1 -1
  30. package/plugins/cesium-vue/dist/components/card-carousel.d.ts +3 -3
  31. package/plugins/cesium-vue/dist/components/card-carousel.js.map +1 -1
  32. package/plugins/cesium-vue/dist/components/card-content.d.ts +3 -3
  33. package/plugins/cesium-vue/dist/components/card-content.js.map +1 -1
  34. package/plugins/cesium-vue/dist/components/card-page.d.ts +3 -3
  35. package/plugins/cesium-vue/dist/components/card-page.js.map +1 -1
  36. package/plugins/cesium-vue/dist/components/carousel-img.d.ts +3 -3
  37. package/plugins/cesium-vue/dist/components/carousel-img.js.map +1 -1
  38. package/plugins/cesium-vue/dist/components/echarts-pro.d.ts +3 -3
  39. package/plugins/cesium-vue/dist/components/marker-bubble.d.ts +3 -3
  40. package/plugins/cesium-vue/dist/components/marker-bubble.js.map +1 -1
  41. package/plugins/cesium-vue/dist/components/marker-default.d.ts +3 -3
  42. package/plugins/cesium-vue/dist/components/marker-default.js.map +1 -1
  43. package/plugins/cesium-vue/dist/components/marker-html.d.ts +3 -3
  44. package/plugins/cesium-vue/dist/components/marker-html.js.map +1 -1
  45. package/plugins/cesium-vue/dist/components/marker-manage.d.ts +3 -3
  46. package/plugins/cesium-vue/dist/components/marker-manage.js +511 -488
  47. package/plugins/cesium-vue/dist/components/marker-manage.js.map +1 -1
  48. package/plugins/cesium-vue/dist/components/marker-text.d.ts +3 -3
  49. package/plugins/cesium-vue/dist/components/marker-text.js.map +1 -1
  50. package/plugins/cesium-vue/dist/components/measurement.d.ts +3 -3
  51. package/plugins/cesium-vue/dist/components/measurement.js.map +1 -1
  52. package/plugins/cesium-vue/dist/components/position-picker.d.ts +3 -3
  53. package/plugins/cesium-vue/dist/components/position-picker.js.map +1 -1
  54. package/plugins/cesium-vue/dist/index-CUs_hd1V.js.map +1 -1
  55. package/plugins/cesium-vue/dist/index-Kdqw0FJN.js.map +1 -1
  56. package/plugins/cesium-vue/dist/index.d.ts +6 -46
  57. package/plugins/cesium-vue/dist/index.js.map +1 -1
  58. package/plugins/cesium-vue/package.json +4 -4
  59. package/plugins/theme-chalk/package.json +1 -1
  60. package/plugins/utils/package.json +1 -1
  61. package/snapdom-D8jRyUPk.js +0 -2896
@@ -1,6 +1,6 @@
1
- export * from './position-picker/index'
1
+ export * from '../cesium-vue/src/components/position-picker/index'
2
2
  export {}
3
- import CesiumVue from './position-picker/index'
3
+ import CesiumVue from '../cesium-vue/src/components/position-picker/index'
4
4
  export default CesiumVue
5
- export * from './position-picker/index'
5
+ export * from '../cesium-vue/src/components/position-picker/index'
6
6
  export {}
@@ -1 +1 @@
1
- {"version":3,"file":"position-picker.js","sources":["../../src/components/position-picker/src/positionPicker.ts","../../src/components/position-picker/src/PositionPicker.vue","../../src/components/position-picker/index.ts"],"sourcesContent":["import { ExtractPropTypes, PropType } from 'vue';\r\n\r\nexport interface CameraPoint {\r\n destination: {\r\n x: number;\r\n y: number;\r\n z: number;\r\n };\r\n orientation: {\r\n heading: number;\r\n pitch: number;\r\n roll: number;\r\n };\r\n duration?: number;\r\n}\r\n\r\nexport interface PositionValue {\r\n position: [number, number, number];\r\n cameraPoint: CameraPoint;\r\n}\r\n\r\nexport const positionPickerProps = {\r\n modelValue: {\r\n type: Object as PropType<PositionValue | null>,\r\n default: null,\r\n },\r\n Cesium: {\r\n type: Object as PropType<any>,\r\n required: false,\r\n },\r\n viewer: {\r\n type: Object as PropType<any>,\r\n required: false,\r\n },\r\n label: {\r\n type: String,\r\n default: '位置',\r\n },\r\n tiandituKey: {\r\n type: String,\r\n default: '',\r\n },\r\n} as const;\r\n\r\nexport type PositionPickerProps = ExtractPropTypes<typeof positionPickerProps>;\r\n\r\n","<template>\n <div :class=\"bem.b('position-picker')\">\n <div :class=\"bem.be('position-picker', 'search')\">\n <input\n v-model=\"keyword\"\n :class=\"bem.be('position-picker', 'input')\"\n type=\"text\"\n placeholder=\"请输入地区,回车搜索\"\n @keyup.enter=\"handleSearch\"\n />\n <div v-if=\"results.length\" :class=\"bem.be('position-picker', 'result-list')\">\n <div\n v-for=\"item in results\"\n :key=\"item.id || item.name\"\n :class=\"bem.be('position-picker', 'result-item')\"\n @click=\"handleResultClick(item)\"\n >\n <div>{{ item.name }}</div>\n <div :class=\"bem.be('position-picker', 'result-address')\">\n {{ item.address }}\n </div>\n </div>\n </div>\n </div>\n <div\n :class=\"bem.be('position-picker', 'viewer')\"\n ref=\"viewerContainerRef\"\n style=\"width: 100%; height: 100%\"\n ></div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { ref, onMounted, onUnmounted, inject, unref, Ref, watch } from 'vue';\n import { createNamespace, prefix } from '../../../../../utils/create';\n import { positionPickerProps, PositionValue, CameraPoint } from './positionPicker';\n\n defineOptions({ name: `${prefix}-position-picker` });\n const props = defineProps(positionPickerProps);\n const emits = defineEmits<{\n (e: 'update:modelValue', value: PositionValue | null): void;\n (e: 'change', value: PositionValue | null): void;\n }>();\n\n const bem = createNamespace('position-picker');\n const leitingMethods = inject('leitingMethods') as Ref<any>;\n\n let CesiumRef: any | null = null;\n let viewerRef: any | null = null;\n let isInternalViewer = false;\n const handlerRef = ref<any | null>(null);\n const viewerContainerRef = ref<HTMLElement | null>(null);\n const markerEntityId = `cx-position-picker-${Math.random().toString(36).slice(2)}`;\n\n const keyword = ref('');\n const results = ref<any[]>([]);\n\n const init = (Cesium: any, viewer: any) => {\n if (!Cesium || !viewer) return;\n CesiumRef = Cesium;\n viewerRef = viewer;\n setupClickHandler();\n applyInitialValue(props.modelValue);\n };\n\n const setupClickHandler = () => {\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer || handlerRef.value) return;\n\n const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);\n handler.setInputAction((click: any) => {\n const cartesian = pickWorldPosition(click.position);\n if (!cartesian) return;\n const cartographic = Cesium.Cartographic.fromCartesian(cartesian);\n const longitude = Cesium.Math.toDegrees(cartographic.longitude);\n const latitude = Cesium.Math.toDegrees(cartographic.latitude);\n const height = cartographic.height || 0;\n updateSelection([longitude, latitude, height]);\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\n handlerRef.value = handler;\n };\n\n const pickWorldPosition = (position: any) => {\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer || !position) return null;\n const ray = viewer.camera.getPickRay(position);\n const cartesian = viewer.scene.globe.pick(ray, viewer.scene);\n if (cartesian) return cartesian;\n if (viewer.scene.pickPositionSupported) {\n return viewer.scene.pickPosition(position);\n }\n return null;\n };\n\n const createOrUpdateMarker = (cartesian: any) => {\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer) return;\n let entity = viewer.entities.getById(markerEntityId) as any;\n if (!entity) {\n entity = viewer.entities.add({\n id: markerEntityId,\n position: cartesian,\n point: {\n pixelSize: 10,\n color: Cesium.Color.YELLOW,\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 1,\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\n },\n label: {\n text: props.label,\n font: '14px sans-serif',\n fillColor: Cesium.Color.WHITE,\n outlineColor: Cesium.Color.BLACK,\n outlineWidth: 2,\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\n verticalOrigin: Cesium.VerticalOrigin.TOP,\n pixelOffset: new Cesium.Cartesian2(0, -16),\n },\n });\n } else {\n entity.position = cartesian;\n }\n };\n\n const buildCameraPoint = (): CameraPoint | null => {\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer) return null;\n const camera = viewer.camera;\n const destination = camera.position.clone();\n return {\n destination: {\n x: destination.x,\n y: destination.y,\n z: destination.z,\n },\n orientation: {\n heading: camera.heading,\n pitch: camera.pitch,\n roll: camera.roll,\n },\n duration: 1,\n };\n };\n\n const updateSelection = (position: [number, number, number]) => {\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer) return;\n const cartesian = Cesium.Cartesian3.fromDegrees(position[0], position[1], position[2] || 0);\n createOrUpdateMarker(cartesian);\n const cameraPoint = buildCameraPoint();\n const value: PositionValue | null = cameraPoint\n ? {\n position,\n cameraPoint,\n }\n : null;\n emits('update:modelValue', value);\n emits('change', value);\n };\n\n const applyInitialValue = (value: PositionValue | null | undefined) => {\n if (!value) return;\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer) return;\n const [longitude, latitude, height] = value.position || [];\n if (typeof longitude !== 'number' || typeof latitude !== 'number') return;\n const cartesian = Cesium.Cartesian3.fromDegrees(longitude, latitude, height || 0);\n createOrUpdateMarker(cartesian);\n if (value.cameraPoint) {\n viewer.camera.flyTo({\n ...value.cameraPoint,\n });\n }\n };\n\n const handleSearch = () => {\n if (!props.tiandituKey || !keyword.value) {\n results.value = [];\n return;\n }\n const key = keyword.value.trim();\n if (!key) {\n results.value = [];\n return;\n }\n const postStr = `{\"keyWord\":\"${key}\",\"queryType\":12,\"start\":0,\"count\":10,\"specify\":\"156000000\"}`;\n const url = `https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(\n postStr,\n )}&type=query&tk=${props.tiandituKey}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n const list = data?.pois || [];\n if (data?.area) {\n list.unshift(data.area);\n }\n results.value = list;\n })\n .catch(() => {\n results.value = [];\n });\n };\n\n const locateByCoordinates = (coordinateStr: string, altitude = 1000) => {\n const Cesium = CesiumRef;\n const viewer = viewerRef;\n if (!Cesium || !viewer) return;\n const [longitude, latitude] = coordinateStr.split(',').map((coord) => parseFloat(coord));\n const position = Cesium.Cartesian3.fromDegrees(longitude, latitude, altitude);\n viewer.camera.flyTo({\n destination: position,\n duration: 3,\n });\n };\n\n const handleResultClick = (info: any) => {\n if (!info?.lonlat) return;\n locateByCoordinates(info.lonlat);\n };\n\n const createInternalViewer = (Cesium: any) => {\n if (!viewerContainerRef.value || !Cesium) return null;\n const viewer = new Cesium.Viewer(viewerContainerRef.value, {\n animation: false,\n timeline: false,\n homeButton: false,\n sceneModePicker: false,\n baseLayerPicker: true,\n fullscreenButton: false,\n geocoder: false,\n navigationHelpButton: false,\n infoBox: false,\n selectionIndicator: false,\n });\n isInternalViewer = true;\n return viewer;\n };\n\n const load = () => {\n if (CesiumRef && viewerRef) {\n return;\n }\n const methods = unref(leitingMethods) as any;\n let Cesium = props.Cesium as any;\n let viewer = props.viewer as any;\n\n if (!Cesium && methods?.getCesium) {\n Cesium = methods.getCesium();\n }\n if (!viewer && methods?.getViewer) {\n viewer = methods.getViewer();\n }\n if (!Cesium && (window as any).Cesium) {\n Cesium = (window as any).Cesium;\n }\n\n if (Cesium && viewer) {\n init(Cesium, viewer);\n } else if (Cesium && !viewer) {\n const internalViewer = createInternalViewer(Cesium);\n if (internalViewer) {\n init(Cesium, internalViewer);\n }\n }\n };\n\n onMounted(() => {\n load();\n });\n\n watch(\n () => [props.Cesium, props.viewer],\n ([newCesium, newViewer]) => {\n if (newCesium && newViewer && !viewerRef) {\n init(newCesium as any, newViewer as any);\n }\n },\n );\n\n watch(\n () => leitingMethods?.value,\n () => {\n load();\n },\n { deep: false },\n );\n\n watch(\n () => props.modelValue,\n (val) => {\n if (val && CesiumRef && viewerRef) {\n applyInitialValue(val);\n } else if (!val && viewerRef) {\n const viewer = viewerRef;\n const entity = viewer.entities.getById(markerEntityId);\n if (entity) {\n viewer.entities.remove(entity);\n }\n }\n },\n { deep: true },\n );\n\n onUnmounted(() => {\n const viewer = viewerRef;\n if (viewer) {\n const entity = viewer.entities.getById(markerEntityId);\n if (entity) {\n viewer.entities.remove(entity);\n }\n if (isInternalViewer && typeof viewer.destroy === 'function') {\n viewer.destroy();\n }\n }\n CesiumRef = null;\n viewerRef = null;\n isInternalViewer = false;\n if (handlerRef.value) {\n handlerRef.value.destroy?.();\n handlerRef.value = null;\n }\n });\n</script>\n","import { withInstall } from '../../../../utils/with-install';\nimport _PositionPicker from './src/PositionPicker.vue';\nexport * from './src/positionPicker';\n\nconst CxPositionPicker = withInstall(_PositionPicker);\nexport { CxPositionPicker };\nexport default CxPositionPicker;\n"],"names":["positionPickerProps","props","__props","emits","__emit","bem","createNamespace","leitingMethods","inject","CesiumRef","viewerRef","isInternalViewer","handlerRef","ref","viewerContainerRef","markerEntityId","keyword","results","init","Cesium","viewer","setupClickHandler","applyInitialValue","handler","click","cartesian","pickWorldPosition","cartographic","longitude","latitude","height","updateSelection","position","ray","createOrUpdateMarker","entity","buildCameraPoint","camera","destination","cameraPoint","value","handleSearch","key","postStr","url","response","data","list","locateByCoordinates","coordinateStr","altitude","coord","handleResultClick","info","createInternalViewer","load","methods","unref","internalViewer","onMounted","watch","newCesium","newViewer","val","onUnmounted","_createElementBlock","_normalizeClass","_unref","_createElementVNode","$event","_Fragment","_renderList","item","_toDisplayString","CxPositionPicker","withInstall","_PositionPicker"],"mappings":"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"}
1
+ {"version":3,"file":"position-picker.js","sources":["../../src/components/position-picker/src/positionPicker.ts","../../src/components/position-picker/src/PositionPicker.vue","../../src/components/position-picker/index.ts"],"sourcesContent":["import { ExtractPropTypes, PropType } from 'vue';\n\nexport interface CameraPoint {\n destination: {\n x: number;\n y: number;\n z: number;\n };\n orientation: {\n heading: number;\n pitch: number;\n roll: number;\n };\n duration?: number;\n}\n\nexport interface PositionValue {\n position: [number, number, number];\n cameraPoint: CameraPoint;\n}\n\nexport const positionPickerProps = {\n modelValue: {\n type: Object as PropType<PositionValue | null>,\n default: null,\n },\n Cesium: {\n type: Object as PropType<any>,\n required: false,\n },\n viewer: {\n type: Object as PropType<any>,\n required: false,\n },\n label: {\n type: String,\n default: '位置',\n },\n tiandituKey: {\n type: String,\n default: '',\n },\n} as const;\n\nexport type PositionPickerProps = ExtractPropTypes<typeof positionPickerProps>;\n\n","<template>\r\n <div :class=\"bem.b('position-picker')\">\r\n <div :class=\"bem.be('position-picker', 'search')\">\r\n <input\r\n v-model=\"keyword\"\r\n :class=\"bem.be('position-picker', 'input')\"\r\n type=\"text\"\r\n placeholder=\"请输入地区,回车搜索\"\r\n @keyup.enter=\"handleSearch\"\r\n />\r\n <div v-if=\"results.length\" :class=\"bem.be('position-picker', 'result-list')\">\r\n <div\r\n v-for=\"item in results\"\r\n :key=\"item.id || item.name\"\r\n :class=\"bem.be('position-picker', 'result-item')\"\r\n @click=\"handleResultClick(item)\"\r\n >\r\n <div>{{ item.name }}</div>\r\n <div :class=\"bem.be('position-picker', 'result-address')\">\r\n {{ item.address }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n :class=\"bem.be('position-picker', 'viewer')\"\r\n ref=\"viewerContainerRef\"\r\n style=\"width: 100%; height: 100%\"\r\n ></div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n import { ref, onMounted, onUnmounted, inject, unref, Ref, watch } from 'vue';\r\n import { createNamespace, prefix } from '../../../../../utils/create';\r\n import { positionPickerProps, PositionValue, CameraPoint } from './positionPicker';\r\n\r\n defineOptions({ name: `${prefix}-position-picker` });\r\n const props = defineProps(positionPickerProps);\r\n const emits = defineEmits<{\r\n (e: 'update:modelValue', value: PositionValue | null): void;\r\n (e: 'change', value: PositionValue | null): void;\r\n }>();\r\n\r\n const bem = createNamespace('position-picker');\r\n const leitingMethods = inject('leitingMethods') as Ref<any>;\r\n\r\n let CesiumRef: any | null = null;\r\n let viewerRef: any | null = null;\r\n let isInternalViewer = false;\r\n const handlerRef = ref<any | null>(null);\r\n const viewerContainerRef = ref<HTMLElement | null>(null);\r\n const markerEntityId = `cx-position-picker-${Math.random().toString(36).slice(2)}`;\r\n\r\n const keyword = ref('');\r\n const results = ref<any[]>([]);\r\n\r\n const init = (Cesium: any, viewer: any) => {\r\n if (!Cesium || !viewer) return;\r\n CesiumRef = Cesium;\r\n viewerRef = viewer;\r\n setupClickHandler();\r\n applyInitialValue(props.modelValue);\r\n };\r\n\r\n const setupClickHandler = () => {\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer || handlerRef.value) return;\r\n\r\n const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);\r\n handler.setInputAction((click: any) => {\r\n const cartesian = pickWorldPosition(click.position);\r\n if (!cartesian) return;\r\n const cartographic = Cesium.Cartographic.fromCartesian(cartesian);\r\n const longitude = Cesium.Math.toDegrees(cartographic.longitude);\r\n const latitude = Cesium.Math.toDegrees(cartographic.latitude);\r\n const height = cartographic.height || 0;\r\n updateSelection([longitude, latitude, height]);\r\n }, Cesium.ScreenSpaceEventType.LEFT_CLICK);\r\n handlerRef.value = handler;\r\n };\r\n\r\n const pickWorldPosition = (position: any) => {\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer || !position) return null;\r\n const ray = viewer.camera.getPickRay(position);\r\n const cartesian = viewer.scene.globe.pick(ray, viewer.scene);\r\n if (cartesian) return cartesian;\r\n if (viewer.scene.pickPositionSupported) {\r\n return viewer.scene.pickPosition(position);\r\n }\r\n return null;\r\n };\r\n\r\n const createOrUpdateMarker = (cartesian: any) => {\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer) return;\r\n let entity = viewer.entities.getById(markerEntityId) as any;\r\n if (!entity) {\r\n entity = viewer.entities.add({\r\n id: markerEntityId,\r\n position: cartesian,\r\n point: {\r\n pixelSize: 10,\r\n color: Cesium.Color.YELLOW,\r\n outlineColor: Cesium.Color.BLACK,\r\n outlineWidth: 1,\r\n disableDepthTestDistance: Number.POSITIVE_INFINITY,\r\n },\r\n label: {\r\n text: props.label,\r\n font: '14px sans-serif',\r\n fillColor: Cesium.Color.WHITE,\r\n outlineColor: Cesium.Color.BLACK,\r\n outlineWidth: 2,\r\n style: Cesium.LabelStyle.FILL_AND_OUTLINE,\r\n verticalOrigin: Cesium.VerticalOrigin.TOP,\r\n pixelOffset: new Cesium.Cartesian2(0, -16),\r\n },\r\n });\r\n } else {\r\n entity.position = cartesian;\r\n }\r\n };\r\n\r\n const buildCameraPoint = (): CameraPoint | null => {\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer) return null;\r\n const camera = viewer.camera;\r\n const destination = camera.position.clone();\r\n return {\r\n destination: {\r\n x: destination.x,\r\n y: destination.y,\r\n z: destination.z,\r\n },\r\n orientation: {\r\n heading: camera.heading,\r\n pitch: camera.pitch,\r\n roll: camera.roll,\r\n },\r\n duration: 1,\r\n };\r\n };\r\n\r\n const updateSelection = (position: [number, number, number]) => {\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer) return;\r\n const cartesian = Cesium.Cartesian3.fromDegrees(position[0], position[1], position[2] || 0);\r\n createOrUpdateMarker(cartesian);\r\n const cameraPoint = buildCameraPoint();\r\n const value: PositionValue | null = cameraPoint\r\n ? {\r\n position,\r\n cameraPoint,\r\n }\r\n : null;\r\n emits('update:modelValue', value);\r\n emits('change', value);\r\n };\r\n\r\n const applyInitialValue = (value: PositionValue | null | undefined) => {\r\n if (!value) return;\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer) return;\r\n const [longitude, latitude, height] = value.position || [];\r\n if (typeof longitude !== 'number' || typeof latitude !== 'number') return;\r\n const cartesian = Cesium.Cartesian3.fromDegrees(longitude, latitude, height || 0);\r\n createOrUpdateMarker(cartesian);\r\n if (value.cameraPoint) {\r\n viewer.camera.flyTo({\r\n ...value.cameraPoint,\r\n });\r\n }\r\n };\r\n\r\n const handleSearch = () => {\r\n if (!props.tiandituKey || !keyword.value) {\r\n results.value = [];\r\n return;\r\n }\r\n const key = keyword.value.trim();\r\n if (!key) {\r\n results.value = [];\r\n return;\r\n }\r\n const postStr = `{\"keyWord\":\"${key}\",\"queryType\":12,\"start\":0,\"count\":10,\"specify\":\"156000000\"}`;\r\n const url = `https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(\r\n postStr,\r\n )}&type=query&tk=${props.tiandituKey}`;\r\n fetch(url)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n const list = data?.pois || [];\r\n if (data?.area) {\r\n list.unshift(data.area);\r\n }\r\n results.value = list;\r\n })\r\n .catch(() => {\r\n results.value = [];\r\n });\r\n };\r\n\r\n const locateByCoordinates = (coordinateStr: string, altitude = 1000) => {\r\n const Cesium = CesiumRef;\r\n const viewer = viewerRef;\r\n if (!Cesium || !viewer) return;\r\n const [longitude, latitude] = coordinateStr.split(',').map((coord) => parseFloat(coord));\r\n const position = Cesium.Cartesian3.fromDegrees(longitude, latitude, altitude);\r\n viewer.camera.flyTo({\r\n destination: position,\r\n duration: 3,\r\n });\r\n };\r\n\r\n const handleResultClick = (info: any) => {\r\n if (!info?.lonlat) return;\r\n locateByCoordinates(info.lonlat);\r\n };\r\n\r\n const createInternalViewer = (Cesium: any) => {\r\n if (!viewerContainerRef.value || !Cesium) return null;\r\n const viewer = new Cesium.Viewer(viewerContainerRef.value, {\r\n animation: false,\r\n timeline: false,\r\n homeButton: false,\r\n sceneModePicker: false,\r\n baseLayerPicker: true,\r\n fullscreenButton: false,\r\n geocoder: false,\r\n navigationHelpButton: false,\r\n infoBox: false,\r\n selectionIndicator: false,\r\n });\r\n isInternalViewer = true;\r\n return viewer;\r\n };\r\n\r\n const load = () => {\r\n if (CesiumRef && viewerRef) {\r\n return;\r\n }\r\n const methods = unref(leitingMethods) as any;\r\n let Cesium = props.Cesium as any;\r\n let viewer = props.viewer as any;\r\n\r\n if (!Cesium && methods?.getCesium) {\r\n Cesium = methods.getCesium();\r\n }\r\n if (!viewer && methods?.getViewer) {\r\n viewer = methods.getViewer();\r\n }\r\n if (!Cesium && (window as any).Cesium) {\r\n Cesium = (window as any).Cesium;\r\n }\r\n\r\n if (Cesium && viewer) {\r\n init(Cesium, viewer);\r\n } else if (Cesium && !viewer) {\r\n const internalViewer = createInternalViewer(Cesium);\r\n if (internalViewer) {\r\n init(Cesium, internalViewer);\r\n }\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n load();\r\n });\r\n\r\n watch(\r\n () => [props.Cesium, props.viewer],\r\n ([newCesium, newViewer]) => {\r\n if (newCesium && newViewer && !viewerRef) {\r\n init(newCesium as any, newViewer as any);\r\n }\r\n },\r\n );\r\n\r\n watch(\r\n () => leitingMethods?.value,\r\n () => {\r\n load();\r\n },\r\n { deep: false },\r\n );\r\n\r\n watch(\r\n () => props.modelValue,\r\n (val) => {\r\n if (val && CesiumRef && viewerRef) {\r\n applyInitialValue(val);\r\n } else if (!val && viewerRef) {\r\n const viewer = viewerRef;\r\n const entity = viewer.entities.getById(markerEntityId);\r\n if (entity) {\r\n viewer.entities.remove(entity);\r\n }\r\n }\r\n },\r\n { deep: true },\r\n );\r\n\r\n onUnmounted(() => {\r\n const viewer = viewerRef;\r\n if (viewer) {\r\n const entity = viewer.entities.getById(markerEntityId);\r\n if (entity) {\r\n viewer.entities.remove(entity);\r\n }\r\n if (isInternalViewer && typeof viewer.destroy === 'function') {\r\n viewer.destroy();\r\n }\r\n }\r\n CesiumRef = null;\r\n viewerRef = null;\r\n isInternalViewer = false;\r\n if (handlerRef.value) {\r\n handlerRef.value.destroy?.();\r\n handlerRef.value = null;\r\n }\r\n });\r\n</script>\r\n","import { withInstall } from '../../../../utils/with-install';\r\nimport _PositionPicker from './src/PositionPicker.vue';\r\nexport * from './src/positionPicker';\r\n\r\nconst CxPositionPicker = withInstall(_PositionPicker);\r\nexport { CxPositionPicker };\r\nexport default CxPositionPicker;\r\n"],"names":["positionPickerProps","props","__props","emits","__emit","bem","createNamespace","leitingMethods","inject","CesiumRef","viewerRef","isInternalViewer","handlerRef","ref","viewerContainerRef","markerEntityId","keyword","results","init","Cesium","viewer","setupClickHandler","applyInitialValue","handler","click","cartesian","pickWorldPosition","cartographic","longitude","latitude","height","updateSelection","position","ray","createOrUpdateMarker","entity","buildCameraPoint","camera","destination","cameraPoint","value","handleSearch","key","postStr","url","response","data","list","locateByCoordinates","coordinateStr","altitude","coord","handleResultClick","info","createInternalViewer","load","methods","unref","internalViewer","onMounted","watch","newCesium","newViewer","val","onUnmounted","_createElementBlock","_normalizeClass","_unref","_createElementVNode","$event","_Fragment","_renderList","item","_toDisplayString","CxPositionPicker","withInstall","_PositionPicker"],"mappings":"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"}