UNPKG

vue-cesium-jyt

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 type { ExtractPropTypes, CSSProperties, 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 { VcLocationEvt, VcColor, VcComponentInternalInstance, VcReadyObject } 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, 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>(null)\n const tooltipRef = ref<typeof VcTooltip | null>(null)\n const btnRef = ref<typeof VcBtn | null>(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 canRender.value = true\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 if (!hasVcNavigation) {\n const viewerElement = ($services.viewer as any)._element\n viewerElement.appendChild($(rootRef))\n resolve($(rootRef))\n } else {\n resolve($(rootRef))\n }\n })\n })\n return Promise.all([promiseAppend, promiseLoadAmap]).then(e => {\n return e[0]\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)\n })\n return true\n }\n\n instance.unmount = async () => {\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 const viewerElement = ($services.viewer as any)._element\n if (!hasVcNavigation) {\n viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\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 ((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 Object.assign(rootStyle, css)\n }\n\n const onHandleClick = () => {\n $(tooltipRef)?.hide()\n positioning.value = true\n if (isFunction(props.customAPI)) {\n const position = props.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(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 return h(\n 'div',\n {\n ref: rootRef,\n class: 'vc-my-location ' + positionState.classes.value,\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 } else {\n return createCommentVNode('v-if')\n }\n }\n }\n})\n\n// export type VcMyLocationProps = ExtractPropTypes<typeof myLocationProps>\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 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 loadingType?: string\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 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"],"names":["defaultProps"],"mappings":"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"}