vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 26.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/vc-overview-map/index.ts"],"sourcesContent":["import type { VNode, WatchStopHandle, CSSProperties, PropType } from 'vue'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { VcBtn, VcBtnRef, VcTooltip, VcTooltipRef } from '@vue-cesium/components/ui'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport type { VcBtnTooltipProps, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, reactive, ref } from 'vue'\nimport VcViewer, { VcViewerProps, VcViewerRef } from '@vue-cesium/components/viewer'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { compareCesiumVersion, makeColor } from '@vue-cesium/utils/cesium-helpers'\n\nexport const overviewProps = {\n position: {\n type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>,\n default: 'bottom-right',\n validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left'].includes(v)\n },\n offset: {\n type: Array,\n validator: (v: Array<string>) => v.length === 2\n },\n width: {\n type: String,\n default: '150px'\n },\n height: {\n type: String,\n default: '150px'\n },\n border: {\n type: String,\n default: 'solid 4px rgb(255, 255, 255)'\n },\n borderRadius: {\n type: String\n },\n toggleOpts: {\n type: Object as PropType<VcBtnTooltipProps>\n },\n viewerOpts: {\n type: Object as PropType<VcViewerProps>\n },\n centerRectColor: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: '#ff000080'\n },\n widthFactor: {\n type: Number,\n default: 2\n },\n heightFactor: {\n type: Number,\n default: 2\n },\n modelValue: {\n type: Boolean,\n default: true\n }\n}\nexport default defineComponent({\n name: 'VcOverviewMap',\n props: overviewProps,\n emits: {\n ...commonEmits,\n 'update:modelValue': (value: boolean) => true\n },\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcOverviewMap'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { t } = useLocale()\n const { $services } = commonState\n const rootRef = ref<HTMLElement>(null)\n const toggleBtnRef = ref<VcBtnRef>(null)\n const rootStyle = reactive<CSSProperties>({})\n const tooltipRef = ref<VcTooltipRef>(null)\n const viewerRef = ref<VcViewerRef>(null)\n const positionState = usePosition(props, $services)\n const showing = ref(props.modelValue)\n let unwatchFns: Array<WatchStopHandle> = []\n let overviewViewer: Cesium.Viewer\n let centerRect: Cesium.ViewportQuad\n\n // computed\n const toggleOpts = computed(() => {\n return Object.assign(\n {},\n {\n color: '#fff',\n background: '#3f4854',\n icon: 'vc-icons-overview-toggle',\n size: '15px',\n tooltip: {\n delay: 500,\n anchor: 'bottom middle',\n offset: [0, 20],\n tip: void 0\n } as any\n },\n props.toggleOpts\n )\n })\n\n const viewerOpts = computed(() => {\n return Object.assign(\n {},\n {\n removeCesiumScript: false,\n showCredit: false,\n sceneMode: 2,\n containerId: 'vc-overview-map'\n },\n props.viewerOpts\n )\n })\n // watch\n\n // methods\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewerElement.appendChild($(rootRef))\n return [$(rootRef), $(viewerRef)]\n }\n\n instance.mount = async () => {\n updateRootStyle()\n const { viewer } = $services\n viewer.clock.onTick.addEventListener(onClockTick)\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element\n viewer.clock.onTick.removeEventListener(onClockTick)\n viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n return true\n }\n\n const onClockTick = () => {\n if (overviewViewer) {\n const { viewer: parentViewer } = $services\n const parentCameraRectangle = parentViewer.camera.computeViewRectangle()\n const { defined } = Cesium\n if (!defined(parentCameraRectangle)) {\n return\n }\n const rectangle = parentCameraRectangle.expand(props.widthFactor, props.heightFactor)\n\n overviewViewer.camera.flyTo({\n destination: rectangle.clone(),\n // destination: parentViewer.camera.position,\n orientation: {\n heading: parentViewer.camera.heading,\n pitch: parentViewer.camera.pitch,\n roll: parentViewer.camera.roll\n },\n duration: 0.0\n })\n const { Cartesian3, SceneTransforms } = Cesium\n const wnPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.north)\n const enPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.north)\n const wsPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.south)\n const esPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.south)\n const scene = overviewViewer.scene\n\n compareCesiumVersion(Cesium.VERSION, '1.121')\n ? SceneTransforms.worldToWindowCoordinates(scene, wnPosition)\n : SceneTransforms['wgs84ToWindowCoordinates'](scene, wnPosition)\n\n const wnWindowPosition = compareCesiumVersion(Cesium.VERSION, '1.121')\n ? SceneTransforms.worldToWindowCoordinates(scene, wnPosition)\n : SceneTransforms['wgs84ToWindowCoordinates'](scene, wnPosition)\n const enWindowPosition = compareCesiumVersion(Cesium.VERSION, '1.121')\n ? SceneTransforms.worldToWindowCoordinates(scene, enPosition)\n : SceneTransforms['wgs84ToWindowCoordinates'](scene, enPosition)\n\n const wsWindowPosition = compareCesiumVersion(Cesium.VERSION, '1.121')\n ? SceneTransforms.worldToWindowCoordinates(scene, wsPosition)\n : SceneTransforms['wgs84ToWindowCoordinates'](scene, wsPosition)\n const esWindowPosition = compareCesiumVersion(Cesium.VERSION, '1.121')\n ? SceneTransforms.worldToWindowCoordinates(scene, esPosition)\n : SceneTransforms['wgs84ToWindowCoordinates'](scene, esPosition)\n\n if (!defined(wnWindowPosition) || !defined(enWindowPosition) || !defined(wsWindowPosition) || !defined(esWindowPosition)) {\n return\n }\n\n const width = enWindowPosition.x - wnWindowPosition.x\n const height = wsWindowPosition.y - wnWindowPosition.y\n const x = (wnWindowPosition.x + enWindowPosition.x) / 2 - width / 2\n const y = (wnWindowPosition.y + wsWindowPosition.y) / 2 - height / 2\n\n if (width <= 0 || height <= 0) {\n return\n }\n const boundingRectangle = new Cesium.BoundingRectangle(x, y, width, height)\n centerRect.rectangle = boundingRectangle\n centerRect.material.uniforms.color = makeColor(props.centerRectColor)\n centerRect.show = true\n }\n }\n\n const onViewerReady = (readyObj: VcReadyObject) => {\n const { viewer } = readyObj\n overviewViewer = viewer\n const control = viewer.scene.screenSpaceCameraController\n control.enableRotate = false\n control.enableTranslate = false\n control.enableZoom = false\n control.enableTilt = false\n control.enableLook = false\n\n overviewViewer.scene.highDynamicRange = false\n overviewViewer.scene.globe.enableLighting = false\n overviewViewer.scene.globe.showWaterEffect = false\n overviewViewer.scene.globe.depthTestAgainstTerrain = false\n overviewViewer.scene.skyAtmosphere.show = false\n overviewViewer.scene.fog.enabled = false\n overviewViewer.scene.skyBox.show = false\n overviewViewer.scene.sun.show = false\n overviewViewer.scene.moon.show = false\n overviewViewer.scene.highDynamicRange = false\n overviewViewer.scene.globe.showGroundAtmosphere = false\n\n centerRect = new Cesium.ViewportQuad(new Cesium.BoundingRectangle(150, 100, 100, 50))\n centerRect.show = false\n overviewViewer.scene.primitives.add(centerRect)\n }\n\n const updateRootStyle = () => {\n const css: CSSProperties = positionState.style.value\n rootStyle.left = css.left\n rootStyle.top = css.top\n rootStyle.transform = css.transform\n rootStyle['pointer-events'] = 'none'\n\n css.borderRadius = props.borderRadius\n css.border = props.border\n\n if (showing.value) {\n css.width = props.width\n css.height = props.height\n } else {\n const reg = /(\\d+)/g\n const regResult = reg.exec(props.border)\n const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n css.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n css.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n }\n Object.assign(rootStyle, css)\n }\n\n // const onTooltipBeforeShow = () => {\n\n // }\n\n const onToggle = () => {\n if (showing.value) {\n minimize()\n } else {\n restore()\n }\n showing.value = !showing.value\n ctx.emit('update:modelValue', showing.value)\n }\n\n const minimize = () => {\n const reg = /(\\d+)/g\n const regResult = reg.exec(props.border)\n const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n rootStyle.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n rootStyle.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n }\n\n const restore = () => {\n rootStyle.width = props.width\n rootStyle.height = props.height\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n return () => {\n const children: Array<VNode> = []\n children.push(\n h(\n VcBtn,\n {\n ref: toggleBtnRef,\n class: 'toggle toggle-' + props.position + (!showing.value ? ' minimized ' : ''),\n flat: true,\n dense: true,\n icon: toggleOpts.value.icon,\n size: toggleOpts.value.size,\n style: { color: toggleOpts.value.color, background: toggleOpts.value.background, 'pointer-events': 'auto' },\n onClick: onToggle\n },\n () =>\n toggleOpts.value.tooltip\n ? h(\n VcTooltip,\n {\n ref: tooltipRef,\n ...toggleOpts.value.tooltip\n // onBeforeShow: onTooltipBeforeShow\n },\n () => h('strong', {}, toggleOpts.value.tooltip.tip || t(`vc.overview.${!showing.value ? 'show' : 'hidden'}`))\n )\n : createCommentVNode('v-if')\n )\n )\n children.push(\n h(\n VcViewer,\n {\n ref: viewerRef,\n ...viewerOpts.value,\n onReady: onViewerReady\n },\n () => hSlot(ctx.slots.default)\n )\n )\n return h(\n 'div',\n {\n ref: rootRef,\n class: 'vc-overview-map ' + positionState.classes.value,\n style: rootStyle\n },\n children\n )\n }\n }\n})\n\nexport type VcOverviewMapProps = {\n /**\n * Specify the position of the VcOverviewMap.\n * Default value: bottom-right\n */\n position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n /**\n * An array of two numbers to offset the VcOverviewMap horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify the width of the overviewmap component.\n * Default value: 150px\n */\n width?: string\n /**\n * Specify the height of the overviewmap component.\n * Default value: 150px\n */\n height?: string\n /**\n * Specify the border of the overviewmap component.\n * Default value: solid 4px rgb(255, 255, 255)\n */\n border?: string\n /**\n * Specify the border radius of the overviewmap component.\n */\n borderRadius?: string\n /**\n * Specify the toggle button options of the overviewmap component.\n */\n toggleOpts?: VcBtnTooltipProps\n /**\n * Specify the vc-viewer component options in the overviewmap component.\n */\n viewerOpts?: VcViewerProps\n /**\n * Specify the center rectangle color.\n * Default value: #ff000080\n */\n centerRectColor?: VcColor\n /**\n * Specify the width factor of center rectangle.\n * Default value: 2\n */\n widthFactor?: number\n /**\n * Specify the height factor of center rectangle.\n * Default value: 2\n */\n heightFactor?: number\n /**\n * Model of the component determining if VcOverviewMap should be expanded or not.\n * Default value: true\n */\n modelValue?: boolean\n /**\n * Triggers before the VcOverviewMap is loaded.\n * @param instance\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcOverviewMap is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcOverviewMap is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Emitted when showing/hidden state changes; Is also used by v-model.\n * @param value New state (showing/hidden)\n */\n 'onUpdate:modelValue'?: (value: boolean) => void\n}\n\nexport interface VcOverviewMapSlots {\n /**\n * Default slot content of the component\n */\n default: () => VNode[]\n}\n\nexport type VcOverviewMapRef = VcComponentPublicInstance<VcOverviewMapProps>\n"],"names":["VcViewer"],"mappings":"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"}