UNPKG

@dspacev-bundle/vue-cesium

Version:
1 lines 35 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/my-location/index.ts"],"sourcesContent":["import AMapLoader from '@amap/amap-jsapi-loader'\nimport { CSSProperties, Teleport, VNode } from 'vue'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, nextTick, reactive, ref, watch } from 'vue'\nimport {\n VcBtn,\n VcTooltip,\n VcIcon,\n VcSpinnerPuff,\n VcSpinnerOval,\n VcSpinnerTail,\n VcSpinnerIos,\n VcSpinnerOrbit,\n VcSpinnerBars,\n VcTooltipProps\n} from '@vue-cesium/components/ui'\nimport type { VcTooltipRef, VcBtnRef } from '@vue-cesium/components/ui'\nimport type { VcLocationEvt, VcColor, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { gcj02towgs84 } from '@vue-cesium/utils/coordtransform'\nimport { makeColor, makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\nimport { isArray, isFunction, isPlainObject } from '@vue-cesium/utils/util'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport defaultProps from './defaultProps'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nconst emits = {\n ...commonEmits,\n locationEvt: (evt: VcLocationEvt) => true\n}\nexport const myLocationProps = defaultProps\nexport default defineComponent({\n name: 'VcMyLocation',\n props: myLocationProps,\n emits: emits,\n setup(props: VcMyLocationProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcMyLocation'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { $services } = commonState\n const { t } = useLocale()\n const rootRef = ref<HTMLElement>(null)\n const tooltipRef = ref<VcTooltipRef>(null)\n const btnRef = ref<VcBtnRef>(null)\n const positioning = ref(false)\n const positionState = usePosition(props, $services)\n const parentInstance = getVcParentInstance(instance)\n const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n const canRender = ref(hasVcNavigation)\n const rootStyle = reactive<CSSProperties>({})\n let datasource: Cesium.CustomDataSource\n let amapGeolocation: any = undefined\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 // computed\n const myLocationTip = computed(() => {\n return positioning.value\n ? t('vc.navigation.myLocation.positioning')\n : (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.myLocation.myLocationTip')\n })\n // methods\n instance.createCesiumObject = async () => {\n const { viewer } = $services\n const { CustomDataSource } = Cesium\n const locationDsArray = viewer.dataSources.getByName('__vc-myLocation__')\n if (locationDsArray.length) {\n datasource = locationDsArray[0]\n } else {\n viewer.dataSources.add(new CustomDataSource('__vc-myLocation__')).then(ds => {\n datasource = ds\n })\n }\n\n let promiseLoadAmap: Promise<unknown> | undefined = undefined\n if (props.amap && props.amap.key) {\n const options = props.amap.options\n promiseLoadAmap = new Promise((resolve, reject) => {\n AMapLoader.load({\n key: props.amap?.key,\n version: props.amap?.version,\n plugins: ['AMap.Geolocation']\n })\n .then(Amap => {\n amapGeolocation = new Amap.Geolocation(options)\n resolve(amapGeolocation)\n })\n .catch(e => {\n commonState.logger.error(e)\n reject(e)\n })\n })\n }\n\n const promiseAppend = new Promise((resolve, reject) => {\n nextTick(() => {\n resolve($(rootRef))\n })\n })\n return Promise.all([promiseAppend, promiseLoadAmap]).then(e => {\n return e[0]\n })\n }\n\n instance.mount = async () => {\n canRender.value = true\n nextTick(() => {\n updateRootStyle()\n })\n const { viewer } = $services\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'mounted',\n target: $(rootRef)\n })\n return true\n }\n\n instance.unmount = async () => {\n canRender.value = false\n const { viewer } = $services\n if (amapGeolocation) {\n const scripts = document.getElementsByTagName('script')\n const removeScripts: HTMLScriptElement[] = []\n for (const script of scripts) {\n if (script.src.indexOf('/webapi.amap.com/maps') > -1) {\n removeScripts.push(script)\n }\n }\n removeScripts.forEach(script => {\n document.getElementsByTagName('body')[0].removeChild(script)\n })\n }\n\n viewer.viewerWidgetResized?.raiseEvent({\n type: instance.cesiumClass,\n status: 'unmounted',\n target: $(rootRef)\n })\n return viewer.dataSources.remove(datasource, 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 if (!hasVcNavigation) {\n const side = positionState.attach.value\n const btnTarget = $(btnRef)?.$el\n if (btnTarget !== void 0) {\n // const clientRect = btnTarget.getBoundingClientRect()\n // css.width = `${clientRect.width}px`\n // css.height = `${clientRect.height}px`\n\n if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\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 }\n }\n\n Object.assign(rootStyle, css)\n }\n\n const onHandleClick = () => {\n $(tooltipRef)?.hide()\n positioning.value = true\n const customApi = props.customApi || props.customAPI\n if (isFunction(customApi)) {\n const position = customApi(handleLocationError)\n zoomToMyLocation(position)\n } else if (amapGeolocation && props.amap && props.amap.key) {\n amapGeolocation.getCurrentPosition((status, result) => {\n if (status === 'complete') {\n let position: number[] = [result.position.lng, result.position.lat]\n if (props.amap?.transformToWGS84) {\n position = gcj02towgs84(position[0], position[1])\n }\n zoomToMyLocation(\n {\n lng: position[0],\n lat: position[1],\n address: result.formattedAddress\n },\n result\n )\n } else {\n handleLocationError(t('vc.navigation.myLocation.fail'), result.message)\n }\n })\n } else if (props.geolocation) {\n navigator.geolocation.getCurrentPosition(\n position => {\n zoomToMyLocation(\n {\n lng: position.coords.longitude,\n lat: position.coords.latitude\n },\n position\n )\n },\n handleLocationError,\n {\n enableHighAccuracy: props.geolocation.enableHighAccuracy,\n timeout: props.geolocation.timeout,\n maximumAge: props.geolocation.maximumAge\n }\n )\n } else {\n handleLocationError(t('vc.navigation.myLocation.fail'))\n }\n }\n\n const zoomToMyLocation = (position, detail?) => {\n const longitude = position.lng\n const latitude = position.lat\n const address = position.address\n const { Rectangle, sampleTerrain, defined, SceneMode } = Cesium\n const { viewer } = $services\n datasource.entities.removeAll()\n const myPositionEntity = datasource.entities.add({\n id: props.id,\n position: makeCartesian3([longitude, latitude], viewer.scene.globe.ellipsoid) as Cesium.Cartesian3,\n point: {\n color: makeColor(props.pointColor),\n pixelSize: props.pixelSize,\n outlineWidth: props.outlineWidth,\n outlineColor: makeColor(props.outlineColor)\n },\n properties: {\n ...detail\n },\n description:\n props.description?.call(this, position, detail) ||\n describeWithoutUnderscores({\n [t('vc.navigation.myLocation.lng')]: longitude,\n [t('vc.navigation.myLocation.lat')]: latitude,\n [t('vc.navigation.myLocation.address')]: address\n })\n })\n\n const listener = getInstanceListener(instance, 'locationEvt')\n listener &&\n ctx.emit('locationEvt', {\n type: 'location',\n position,\n detail,\n entity: myPositionEntity\n })\n\n const options: any = {\n duration: props.duration\n }\n\n defined(props.maximumHeight) && (options.maximumHeight = props.maximumHeight)\n defined(props.hpr) && isArray(props.hpr) && (options.offset = new Cesium.HeadingPitchRange(props.hpr[0], props.hpr[1], props.hpr[2]))\n\n if (viewer.scene.mode === SceneMode.SCENE2D || viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n return viewer.flyTo(myPositionEntity, options).then(() => {\n positioning.value = false\n listener &&\n ctx.emit('locationEvt', {\n type: 'zoomIn',\n camera: viewer.camera,\n status: 'end'\n })\n })\n }\n\n // west, south, east, north, result\n const factor = props.factor\n const rectangle = Rectangle.fromDegrees(longitude - factor, latitude - factor, longitude + factor, latitude + factor)\n const camera = viewer.scene.camera\n // Work out the destination that the camera would naturally fly to\n const destinationCartesian = camera.getRectangleCameraCoordinates(rectangle)\n const destination = viewer.scene.globe.ellipsoid.cartesianToCartographic(destinationCartesian)\n const terrainProvider = viewer.scene.globe.terrainProvider\n const level = props.level // A sufficiently coarse tile level that still has approximately accurate height\n const positions = [Rectangle.center(rectangle)]\n\n // Perform an elevation query at the centre of the rectangle\n return sampleTerrain(terrainProvider, level, positions).then(function (results) {\n // Add terrain elevation to camera altitude\n const finalDestinationCartographic: any = {\n longitude: destination.longitude,\n latitude: destination.latitude,\n height: destination.height + results[0].height\n }\n const finalDestination = viewer.scene.globe.ellipsoid.cartographicToCartesian(finalDestinationCartographic)\n listener &&\n ctx.emit('locationEvt', {\n type: 'zoomIn',\n camera: viewer.camera,\n status: 'start'\n })\n\n camera.flyTo({\n duration: props.duration,\n destination: finalDestination,\n complete: () => {\n positioning.value = false\n listener &&\n ctx.emit('locationEvt', {\n type: 'zoomIn',\n camera: viewer.camera,\n status: 'end'\n })\n },\n cancel: () => {\n positioning.value = false\n listener &&\n ctx.emit('locationEvt', {\n type: 'zoomIn',\n camera: viewer.camera,\n status: 'cancel'\n })\n }\n })\n })\n }\n\n const describeWithoutUnderscores = (properties, nameProperty?) => {\n let html = ''\n if (properties instanceof Cesium.PropertyBag) {\n // unwrap the properties from the PropertyBag\n properties = properties.getValue(Cesium.JulianDate.now())\n }\n for (let key in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, key)) {\n if (key === nameProperty) {\n continue\n }\n let value = properties[key]\n if (typeof value === 'object') {\n value = describeWithoutUnderscores(value)\n } else {\n // value = formatPropertyValue(value)\n }\n key = key.replace(/_/g, ' ')\n if (Cesium.defined(value)) {\n html += '<tr><th>' + key + '</th><td>' + value + '</td></tr>'\n }\n }\n }\n if (html.length > 0) {\n html = '<table class=\"cesium-infoBox-defaultTable\"><tbody>' + html + '</tbody></table>'\n }\n return html\n }\n\n const handleLocationError = (...args) => {\n positioning.value = false\n commonState.logger.error(...args)\n }\n\n const getLoadingCmp = () => {\n switch (props.loadingType) {\n case 'bars':\n return VcSpinnerBars\n case 'ios':\n return VcSpinnerIos\n case 'orbit':\n return VcSpinnerOrbit\n case 'oval':\n return VcSpinnerOval\n case 'puff':\n return VcSpinnerPuff\n case 'tail':\n return VcSpinnerTail\n default:\n return VcSpinnerBars\n }\n }\n\n const onTooltipBeforeShow = e => {\n if (positioning.value) {\n e.cancel = true\n }\n }\n\n return () => {\n if (canRender.value) {\n const inner: VNode[] = []\n inner.push(\n h(VcIcon, {\n name: props.icon,\n size: props.size\n })\n )\n\n inner.push(h('div', null, props.label))\n\n if (isPlainObject(props.tooltip)) {\n inner.push(\n h(\n VcTooltip,\n {\n ref: tooltipRef,\n onBeforeShow: onTooltipBeforeShow,\n ...props.tooltip\n },\n () => h('strong', null, myLocationTip.value)\n )\n )\n } else {\n inner.push(createCommentVNode('v-if'))\n }\n\n const renderContent = h(\n 'div',\n {\n ref: rootRef,\n class: `vc-my-location ${positionState.classes.value} ${props.customClass}`,\n style: rootStyle\n },\n [\n h(\n VcBtn,\n {\n ref: btnRef,\n size: props.size,\n flat: props.flat,\n stack: props.stack,\n round: props.round,\n loading: positioning.value,\n dense: true,\n style: { color: props.color, background: props.background },\n onClick: onHandleClick\n },\n {\n default: () => inner,\n loading: () => h(getLoadingCmp())\n }\n )\n ]\n )\n\n return !hasVcNavigation && props.teleportToViewer ? h(Teleport, { to: $services.viewer._element }, renderContent) : renderContent\n } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\nexport type VcMyLocationEmits = typeof emits\nexport type VcMyLocationProps = {\n /**\n * Specify the position of the VcDistanceLegend.\n * Default value: top-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 VcDistanceLegend horizontally and vertically in pixels.\n * Default value: [0, 0]\n */\n offset?: [number, number]\n /**\n * Specify the browser geolocation positioning parameters.\n * Default value:\n * {\n * enableHighAccuracy: true,\n * timeout: 5000,\n * maximumAge: 0\n * }\n */\n geolocation?: PositionOptions\n /**\n * Specify the AMap positioning parameters. If set, use AMap api positioning first.\n */\n amap?: {\n key: string\n version: string\n options: {\n timeout?: number\n convert?: false\n noGeoLocation?: 0 | 1 | 2 | 3\n needAddress?: boolean\n extensions?: 'all' | 'base'\n }\n transformToWGS84?: boolean\n }\n /**\n * Specify the id of the location point after the positioning is successful.\n */\n id?: string\n /**\n * Specify the color of the location point after the positioning is successful.\n * Default value: #08ABD5\n */\n pointColor?: VcColor\n /**\n * Specify the pixel size of the location point after the positioning is successful.\n * Default value: 12\n */\n pixelSize?: number\n /**\n * Specify the outline width of the location point after the positioning is successful.\n * Default value: 3\n */\n outlineWidth?: number\n /**\n * Specify the outline color of the location point after the positioning is successful.\n * Default value: #fff\n */\n outlineColor?: VcColor\n /**\n * Specify the sampling level when the altitude is automatically recognized based on the terrain after the positioning is successful.\n * Default value: 6\n */\n level?: number\n /**\n * Specify the time to fly to the location point.\n * Default value: 3\n */\n duration?: number\n /**\n * Specify the factor by which the anchor point is converted to a rectangle.\n * Default: 0.01\n */\n factor?: number\n /**\n * The maximum height at the peak of the flight.\n */\n maximumHeight?: number\n /**\n * The offset from the target in the local east-north-up reference frame centered at the target. 2D or Columbus view works.\n */\n hpr?: [number, number, number]\n /**\n * Specify a custom API for positioning.\n */\n customAPI?: (errorCallback) => { lng: number; lat: number }\n /**\n * Specify a custom API for positioning.\n */\n customApi?: (errorCallback) => { lng: number; lat: number }\n /**\n * Specify the description of the location point\n */\n description?: (position, detail) => string\n /**\n * Specify the icon of the VcMyLocation.\n * Default value: vc-icons-geolocation\n */\n icon?: string\n /**\n * Specify the size of the VcMyLocation.\n * Default value: 24px\n */\n size?: string\n /**\n * Specify the css color of the VcMyLocation.\n * Default value: #3f4854\n */\n color?: string\n /**\n * Specify the css background of the VcMyLocation.\n * Default value: #fff\n */\n background?: string\n /**\n * Makes a circle shaped VcMyLocation.\n */\n round?: boolean\n /**\n * Use 'flat' design.\n */\n flat?: boolean\n /**\n * The text that will be shown on the VcMyLocation.\n */\n label?: string\n /**\n * Stack icon and label vertically instead of on same line.\n */\n stack?: boolean\n /**\n * The tooltip parameter.\n */\n tooltip?: false | VcTooltipProps\n /**\n * Specify the spinner style of the positioning transition\n */\n loadingType?: 'bars' | 'ios' | 'orbit' | 'oval' | 'puff' | 'tail'\n /**\n * Specify the customClass of the vc-my-location.\n */\n customClass?: string\n /**\n * Specify whether to add to the cesium-viewer node.\n * Default value: true\n */\n teleportToViewer?: boolean\n /**\n * Triggers before the VcCompass is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcCompass 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 VcCompass is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the positioning button is clicked.\n */\n onLocationEvt?: (evt: VcLocationEvt) => void\n}\n\nexport type VcMyLocationRef = VcComponentPublicInstance<VcMyLocationProps>\n"],"names":["defaultProps","_a"],"mappings":"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"}