vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 24.9 kB
Source Map (JSON)
{"version":3,"file":"use-zoom-control.mjs","sources":["../../../../../../packages/components/controls/navigation-sm/use-zoom-control.ts"],"sourcesContent":["import type { AnyFunction, VcComponentInternalInstance, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { ref } from 'vue'\nimport type { VcTooltipRef } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n // state\n const zoombarTop = ref(65)\n const zoomInTooltipRef = ref<VcTooltipRef>(null)\n const zoomOutTooltipRef = ref<VcTooltipRef>(null)\n const zoomBarTooltipRef = ref<VcTooltipRef>(null)\n let screenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n\n let zoominTickFunction: AnyFunction<void>\n let zoominMouseUpFunction: AnyFunction<void>\n let isZoomin = false\n let zoominLastTimestamp = 0\n let unsubscribeFromClockTickZoomin: AnyFunction<void>\n\n let zoomoutTickFunction: AnyFunction<void>\n let zoomoutMouseUpFunction: AnyFunction<void>\n let iszoomout = false\n let zoomoutLastTimestamp = 0\n let unsubscribeFromClockTickZoomout: AnyFunction<void>\n\n let zoomBarScrollMouseMoveFunction: AnyFunction<void>\n let zoomBarScrollMouseUpFunction: AnyFunction<void>\n let zoombarTickFunction: AnyFunction<void>\n let isZoomBarScrolling = false\n let unsubscribeFromClockTickZoomBar: AnyFunction<void>\n let container: HTMLElement\n\n // methods\n const handleZoomInMouseDown = e => {\n const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n const { viewer } = $services\n $(zoomInTooltipRef)?.hide()\n $(zoomOutTooltipRef)?.hide()\n $(zoomBarTooltipRef)?.hide()\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n ;(zoominMouseUpFunction as any) = undefined\n ;(zoominTickFunction as any) = undefined\n isZoomin = true\n zoominLastTimestamp = getTimestamp()\n const scene = viewer.scene\n const camera = scene.camera\n zoominTickFunction = () => {\n viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D ? camera.zoomIn() : handlezoom(1)\n }\n\n zoominMouseUpFunction = () => {\n isZoomin = false\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n ;(zoominMouseUpFunction as any) = undefined\n ;(zoominTickFunction as any) = undefined\n }\n\n screenSpaceEventHandler.setInputAction(zoominMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n unsubscribeFromClockTickZoomin = viewer.clock.onTick.addEventListener(zoominTickFunction)\n }\n\n const handleZoomOutMouseDown = event => {\n $(zoomInTooltipRef)?.hide()\n $(zoomOutTooltipRef)?.hide()\n $(zoomBarTooltipRef)?.hide()\n const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n const { viewer } = $services\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n ;(zoomoutMouseUpFunction as any) = undefined\n ;(zoomoutTickFunction as any) = undefined\n iszoomout = false\n zoomoutLastTimestamp = getTimestamp()\n const scene = viewer.scene\n const camera = scene.camera\n zoomoutTickFunction = () => {\n viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D ? camera.zoomOut() : handlezoom(-1)\n }\n\n zoomoutMouseUpFunction = () => {\n iszoomout = false\n screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n ;(zoomoutMouseUpFunction as any) = undefined\n ;(zoomoutTickFunction as any) = undefined\n }\n\n screenSpaceEventHandler.setInputAction(zoomoutMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n unsubscribeFromClockTickZoomout = viewer.clock.onTick.addEventListener(zoomoutTickFunction)\n }\n\n const handleZoomBarScrollMouseDown = event => {\n $(zoomInTooltipRef)?.hide()\n $(zoomOutTooltipRef)?.hide()\n $(zoomBarTooltipRef)?.hide()\n const { Cartesian2, defined, SceneMode } = Cesium\n const { viewer } = $services\n document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n ;(zoomBarScrollMouseUpFunction as any) = undefined\n ;(zoombarTickFunction as any) = undefined\n isZoomBarScrolling = true\n const scene = viewer.scene\n const camera = scene.camera\n\n zoombarTickFunction = () => {\n const zoomOffset = zoombarTop.value - 65\n if (zoomOffset > 0) {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n camera.zoomOut()\n } else {\n handlezoom(-1)\n }\n } else if (zoomOffset < 0) {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n camera.zoomIn()\n } else {\n handlezoom(1)\n }\n }\n }\n zoomBarScrollMouseMoveFunction = e => {\n const zoombarTopMove = zoombarTop.value\n const clientRect = e.target.parentElement.getBoundingClientRect()\n const rectNavigation = container.getBoundingClientRect()\n const endPosition = new Cesium.Cartesian2()\n endPosition.x = e.type === 'touchmove' ? e.changedTouches[0].clientX - rectNavigation.left : e.clientX - rectNavigation.left\n endPosition.y = e.type === 'touchmove' ? e.changedTouches[0].clientY - rectNavigation.top : e.clientY - rectNavigation.top\n const padding = new Cartesian2(clientRect.width - endPosition.x, clientRect.height - endPosition.y)\n let offset = padding.y - 16\n offset = offset < 0 ? 0 : offset\n offset = offset > 120 ? 120 : offset\n zoombarTop.value = 120 - offset\n\n const zoomFlag = zoombarTop.value - zoombarTopMove\n if (zoomFlag > 0) {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n camera.zoomOut()\n } else {\n handlezoom(-1)\n }\n } else {\n if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n camera.zoomIn()\n } else {\n handlezoom(1)\n }\n }\n }\n\n zoomBarScrollMouseUpFunction = () => {\n isZoomBarScrolling = false\n document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n ;(zoomBarScrollMouseUpFunction as any) = undefined\n ;(zoomBarScrollMouseMoveFunction as any) = undefined\n ;(zoombarTickFunction as any) = undefined\n zoombarTop.value = 65\n }\n document.addEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.addEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.addEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.addEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n unsubscribeFromClockTickZoomBar = viewer.clock.onTick.addEventListener(zoombarTickFunction)\n }\n\n const handlezoom = i => {\n const { Cartesian2, Cartesian3, defined, Ellipsoid, Math } = Cesium\n const { viewer } = $services\n const scene = viewer.scene\n const camera = scene.camera\n const canvas = scene.canvas\n const centerPixel = new Cartesian2()\n centerPixel.x = canvas.clientWidth / 2\n centerPixel.y = canvas.clientHeight / 2\n const centerPosition = pickGlobe(centerPixel)\n if (defined(centerPosition)) {\n const distance = Cartesian3.distance(camera.position, centerPosition)\n let factor = 0.0618 * i * 0.2\n factor = distance > 300 ? factor : 2 * factor\n const amount = distance * factor\n const direction = new Cartesian3()\n Cartesian3.subtract(centerPosition, camera.position, direction)\n const cameraRight = Cartesian3.clone(camera.right)\n const dot = Cartesian3.dot(direction, cameraRight)\n const movementVector = new Cartesian3()\n Cartesian3.multiplyByScalar(cameraRight, dot, movementVector)\n Cartesian3.subtract(direction, movementVector, direction)\n Cartesian3.normalize(direction, direction)\n camera.move(direction, amount)\n const centerPositionNormal = new Cartesian3()\n Cartesian3.normalize(centerPosition, centerPositionNormal)\n\n const pickPosition = camera.pickEllipsoid(centerPixel, viewer.scene.globe.ellipsoid)\n if (\n isObject(pickPosition) &&\n defined(pickPosition) &&\n !isNaN(pickPosition.x) &&\n !isNaN(pickPosition.y) &&\n !isNaN(pickPosition.z) &&\n !(camera.positionCartographic.height < 0)\n ) {\n Cartesian3.normalize(pickPosition, pickPosition)\n const angle = Cartesian3.angleBetween(centerPositionNormal, pickPosition)\n if (!Math.equalsEpsilon(angle, 0, Math.EPSILON10)) {\n const axis = Cartesian3.cross(centerPositionNormal, pickPosition, new Cartesian3())\n camera.rotate(axis, angle)\n const listener = getInstanceListener(vcInstance, 'zoomEvt')\n listener &&\n emit('zoomEvt', {\n type: i === 1 ? 'zoomIn' : 'zoomOut',\n camera: viewer.camera,\n status: 'end'\n })\n }\n }\n }\n }\n\n const pickGlobe = mousePosition => {\n const { defined, Cartesian3 } = Cesium\n const { viewer } = $services\n const scene = viewer.scene\n const globe = scene.globe\n const camera = scene.camera\n if (defined(globe)) {\n let depthIntersection\n if (scene.pickPositionSupported) {\n depthIntersection = scene.pickPositionWorldCoordinates(mousePosition)\n }\n const ray = camera.getPickRay(mousePosition)\n const rayIntersection = globe.pick(ray, scene)\n const pickDistance = defined(depthIntersection) ? Cartesian3.distance(depthIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n const rayDistance =\n isObject(rayIntersection) && defined(rayIntersection) ? Cartesian3.distance(rayIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n return rayDistance > pickDistance ? depthIntersection : rayIntersection\n }\n }\n\n const onTooltipBeforeShow = e => {\n if (zoomBarScrollMouseMoveFunction !== undefined || zoominTickFunction !== undefined || zoomoutTickFunction !== undefined) {\n e.cancel = true\n }\n }\n\n const load = el => {\n container = el\n screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(el)\n return true\n }\n\n const unload = () => {\n document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n unsubscribeFromClockTickZoomin?.()\n unsubscribeFromClockTickZoomout?.()\n unsubscribeFromClockTickZoomBar?.()\n screenSpaceEventHandler?.destroy()\n return true\n }\n\n return {\n handleZoomInMouseDown,\n handleZoomOutMouseDown,\n handleZoomBarScrollMouseDown,\n load,\n unload,\n zoombarTop,\n zoomInTooltipRef,\n zoomOutTooltipRef,\n zoomBarTooltipRef,\n onTooltipBeforeShow\n }\n}\n"],"names":[],"mappings":"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"}