UNPKG

vue-cesium-jyt

Version:
1 lines 32.3 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/status-bar/index.ts"],"sourcesContent":["import type { ExtractPropTypes, VNode, CSSProperties } from 'vue'\nimport { defineComponent, getCurrentInstance, nextTick, ref, reactive, h, createCommentVNode, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport type { VcStatusBarEvt, VcComponentInternalInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport MouseCoords, { extendForMouseCoords } from './MouseCoords'\nimport throttle from '@vue-cesium/utils/private/throttle'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport { VcBtn, VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport defaultProps from './defaultProps'\nimport { isPlainObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { heightToLevel } from '@vue-cesium/utils/cesium-helpers'\n\nconst emits = {\n ...commonEmits,\n statusBarEvt: (evt: VcStatusBarEvt) => true\n}\nexport const statusBarProps = defaultProps\nexport default defineComponent({\n name: 'VcStatusBar',\n props: statusBarProps,\n emits: emits,\n setup(props: ExtractPropTypes<typeof defaultProps>, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcStatusBar'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const parentInstance = getVcParentInstance(instance)\n const { $services } = commonState\n const rootRef = ref<typeof VcBtn | null>(null)\n const tooltipRef = ref<typeof VcTooltip | null>(null)\n const { t } = useLocale()\n\n let lastMouseX = -1\n let lastMouseY = -1\n const cameraInfo = reactive({\n heading: 'NaN',\n pitch: 'NaN',\n roll: 'NaN',\n height: 'NaN',\n level: 'NaN'\n })\n const performanceInfo = reactive({\n fps: 'NaN',\n ms: 'NaN'\n })\n const mouseCoordsInfo = ref<MouseCoords>()\n const positionState = usePosition(props, $services)\n const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n const canRender = ref(hasVcNavigation)\n const rootStyle = reactive<CSSProperties>({})\n // watch\n watch(\n () => props,\n val => {\n nextTick(() => {\n if (!instance.mounted) {\n return\n }\n updateRootStyle()\n })\n },\n {\n deep: true\n }\n )\n // methods\n instance.createCesiumObject = async () => {\n canRender.value = true\n const { viewer } = $services\n\n const viewerElement = (viewer as any)._element as HTMLElement\n\n if (props.showMouseInfo) {\n mouseCoordsInfo.value = new MouseCoords({\n gridFileUrl: props.gridFileUrl,\n proj4Projection: props.proj4Projection,\n projectionUnits: props.projectionUnits,\n proj4longlat: props.proj4longlat\n })\n\n viewerElement.addEventListener('wheel', onMouseMove, false)\n viewerElement.addEventListener('mousemove', onMouseMove, false)\n viewerElement.addEventListener('touchmove', onMouseMove, false)\n extendForMouseCoords()\n }\n\n if (props.showCameraInfo) {\n viewer.camera.changed.addEventListener(onCameraChanged)\n onCameraChanged()\n }\n\n if (props.showPerformanceInfo) {\n viewer.scene.debugShowFramesPerSecond = true\n viewer.scene.postRender.addEventListener(onScenePostRender)\n }\n\n return new Promise((resolve, reject) => {\n nextTick(() => {\n if (!hasVcNavigation) {\n const viewerElement = (viewer as any)._element\n viewerElement.appendChild($(rootRef)?.$el)\n resolve($(rootRef)?.$el)\n } else {\n resolve($(rootRef)?.$el)\n }\n })\n })\n }\n\n instance.mount = async () => {\n updateRootStyle()\n const { viewer } = $services\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'mounted',\n target: $(rootRef)?.$el\n })\n return true\n }\n\n instance.unmount = async () => {\n const { viewer } = $services\n const viewerElement = (viewer as any)._element as HTMLElement\n if (props.showMouseInfo) {\n mouseCoordsInfo.value = undefined\n viewerElement.removeEventListener('wheel', onMouseMove)\n viewerElement.removeEventListener('mousemove', onMouseMove)\n viewerElement.removeEventListener('touchmove', onMouseMove)\n }\n\n if (props.showCameraInfo) {\n viewer.camera.changed.removeEventListener(onCameraChanged)\n }\n\n if (props.showPerformanceInfo) {\n if (viewer.scene._performanceDisplay) {\n viewer.scene._performanceDisplay._container.style.display = 'block'\n }\n\n viewer.scene.postRender.removeEventListener(onScenePostRender)\n }\n\n if (!hasVcNavigation) {\n viewerElement.contains($(rootRef)?.$el) && viewerElement.removeChild($(rootRef)?.$el)\n }\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)?.$el\n })\n\n return true\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\n css.background = props.background\n css.color = props.color\n const side = positionState.attach.value\n\n if ((side.bottom || side.top) && !side.left && !side.right) {\n css.left = '50%'\n css.transform = 'translate(-50%, 0)'\n }\n\n if ((side.left || side.right) && !side.top && !side.bottom) {\n css.top = '50%'\n css.transform = 'translate(0, -50%)'\n }\n\n Object.assign(rootStyle, css)\n }\n\n const onScenePostRender = throttle(scene => {\n performanceInfo.fps = scene._performanceDisplay?._fpsText.nodeValue\n performanceInfo.ms = scene._performanceDisplay?._msText.nodeValue\n scene._performanceDisplay._container.style.display = 'none'\n }, 500)\n\n const onCameraChanged = () => {\n const { viewer } = $services\n const { Math: CesiumMath } = Cesium\n cameraInfo.heading = CesiumMath.toDegrees(viewer.camera.heading).toFixed(1)\n cameraInfo.pitch = CesiumMath.toDegrees(viewer.camera.pitch).toFixed(1)\n cameraInfo.roll = CesiumMath.toDegrees(viewer.camera.roll).toFixed(1)\n cameraInfo.height = viewer.camera.positionCartographic.height.toFixed(2)\n cameraInfo.level = heightToLevel(Number(cameraInfo.height)).toFixed(0)\n }\n\n const onMouseMove = e => {\n const { Cartesian2 } = Cesium\n const { viewer } = $services\n\n const clientX = e.type === 'mousemove' || e.type === 'wheel' ? e.clientX : e.changedTouches[0].clientX\n const clientY = e.type === 'mousemove' || e.type === 'wheel' ? e.clientY : e.changedTouches[0].clientY\n\n if (clientX === lastMouseX && clientY === lastMouseY) {\n return\n }\n\n lastMouseX = clientX\n lastMouseY = clientY\n\n const viewerElement = (viewer as any)._element as HTMLElement\n\n if (viewer) {\n if (props.showMouseInfo) {\n const rect = viewerElement.getBoundingClientRect()\n const position = new Cartesian2(clientX - rect.left, clientY - rect.top)\n mouseCoordsInfo.value?.updateCoordinatesFromCesium(viewer, position)\n }\n const listener = getInstanceListener(instance, 'statusBarEvt')\n listener &&\n ctx.emit('statusBarEvt', {\n type: 'statusBar',\n mouseCoordsInfo: mouseCoordsInfo.value,\n cameraInfo: cameraInfo,\n performanceInfo: performanceInfo\n })\n }\n }\n\n const toggleUseProjection = () => {\n if (!props.useProjection) {\n return\n }\n $(tooltipRef)?.hide()\n if (props.showMouseInfo) {\n mouseCoordsInfo.value?.toggleUseProjection()\n }\n }\n\n // expose public methods\n Object.assign(instance.proxy, { mouseCoordsInfo, cameraInfo, performanceInfo })\n\n return () => {\n if (canRender.value) {\n const inner: Array<VNode> = []\n if (props.showMouseInfo) {\n if (!mouseCoordsInfo.value?.useProjection) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.lng')\n ),\n h('span', {}, mouseCoordsInfo.value?.longitude)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [h('span', {}, t('vc.navigation.statusBar.lat')), h('span', {}, mouseCoordsInfo.value?.latitude)]\n )\n )\n } else {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.zone')\n ),\n h('span', null, mouseCoordsInfo.value?.utmZone)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.e')\n ),\n h('span', null, mouseCoordsInfo.value?.east)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.n')\n ),\n h('span', null, mouseCoordsInfo.value?.north)\n ]\n )\n )\n }\n\n if (mouseCoordsInfo.value?.elevation) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.elev')\n ),\n h('span', {}, mouseCoordsInfo.value?.elevation)\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (props.showCameraInfo) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section-short-mini ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.level')\n ),\n h('span', null, cameraInfo.level)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.heading')\n ),\n h('span', null, `${cameraInfo.heading}°`)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.pitch')\n ),\n h('span', null, `${cameraInfo.pitch}°`)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.roll')\n ),\n h('span', null, `${cameraInfo.roll}°`)\n ]\n ),\n h(\n 'div',\n {\n class: 'vc-section ellipsis'\n },\n [\n h(\n 'span',\n {\n ...ctx.attrs\n },\n t('vc.navigation.statusBar.cameraHeight')\n ),\n h('span', null, `${cameraInfo.height}m`)\n ]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (props.showPerformanceInfo) {\n inner.push(\n h(\n 'div',\n {\n class: 'vc-section-short-mini ellipsis'\n },\n [h('span', null, performanceInfo.ms)]\n ),\n h(\n 'div',\n {\n class: 'vc-section-short-mini ellipsis'\n },\n [h('span', null, performanceInfo.fps)]\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n if (isPlainObject(props.tooltip) && props.showMouseInfo && props.useProjection) {\n inner.push(\n h(\n VcTooltip,\n {\n ref: tooltipRef,\n ...props.tooltip\n },\n () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.statusBar.tip'))\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n return h(\n VcBtn,\n {\n ref: rootRef,\n class: 'vc-status-bar ' + positionState.classes.value,\n style: rootStyle,\n noCaps: true,\n onClick: toggleUseProjection\n },\n () => inner\n )\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\n// export type VcStatusBarProps = ExtractPropTypes<typeof statusBarProps>\nexport type VcStatusBarEmits = typeof emits\n\nexport type VcStatusBarProps = {\n /**\n * Specify the position of the VcStatusBar.\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 VcStatusBar horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify the mouse to pick up the height model, use this to improve the accuracy of the height obtained.\n * Default value: https://zouyaoji.top/vue-cesium/statics/SampleData/WW15MGH.DAC\n */\n gridFileUrl?: string\n /**\n * Specify the proj4 projection.\n * Default value: +proj=utm +ellps=GRS80 +units=m +no_defs\n */\n proj4Projection?: string\n /**\n * Specify the projection units.\n * Default value: m\n */\n projectionUnits?: string\n /**\n * Specify the proj4 longlat.\n * Default value: +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs\n */\n proj4longlat?: string\n /**\n * Specify the css color of the information bar.\n * Default value: #fff\n */\n color?: string\n /**\n * Specify the background of the information bar.\n * Default value: #3f4854\n */\n background?: string\n /**\n * Specify whether to display camera information in the information bar.\n * Default value: true\n */\n showCameraInfo?: boolean\n /**\n * Specify whether to display mouse coords information in the information bar.\n * Default value: true\n */\n showMouseInfo?: boolean\n /**\n * Specify whether to display frame rate information in the information bar.\n * Default value: true\n */\n showPerformanceInfo?: boolean\n /**\n * Specify whether the latitude and longitude coordinates on the information bar can be switched to UTM projected coordinates.\n * Default value: true\n */\n useProjection?: boolean\n /**\n * The tooltip parameter.\n */\n tooltip?: false | VcTooltipProps\n /**\n * Triggers before the VcStatusBar is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcStatusBar is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the VcStatusBar is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the information changed.\n */\n onStatusBarEvt?: (evt: VcStatusBarEvt) => void\n}\n"],"names":["defaultProps"],"mappings":"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"}