vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 8.14 kB
Source Map (JSON)
{"version":3,"file":"terrain.mjs","sources":["../../../../../../packages/components/providers/tianditu/terrain.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2023-07-28 00:41:35\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\providers\\tianditu\\terrain.ts\n */\nimport { createCommentVNode, defineComponent, getCurrentInstance, PropType } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { useProviders, useVueCesium } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { providerEmits } from '@vue-cesium/utils/emits'\n\nexport const tiandituTerrainProviderProps = {\n url: {\n type: String,\n default: 'https://{s}.tianditu.gov.cn/'\n },\n subdomains: {\n type: Array as PropType<Array<string>>,\n default: () => ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7']\n },\n pluginPath: {\n type: String,\n default: 'https://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js'\n },\n dataType: {\n type: String,\n default: 'int',\n validator: (v: string) => ['int', 'float'].includes(v)\n },\n tileType: {\n type: String,\n default: 'heightmap',\n validator: (v: string) => ['heightmap', 'quantized-mesh'].includes(v)\n },\n token: String\n}\nexport default defineComponent({\n name: 'VcTerrainProviderTianditu',\n props: tiandituTerrainProviderProps,\n emits: providerEmits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'GeoTerrainProvider'\n const providersState = useProviders(props, ctx, instance)\n\n if (undefined === providersState) {\n return\n }\n\n const { emit } = ctx\n const vc = useVueCesium()\n let $script\n // methods\n instance.createCesiumObject = async () => {\n return new Promise((resolve, reject) => {\n $script = document.createElement('script')\n document.body.appendChild($script)\n $script.src = props.pluginPath\n $script.onload = () => {\n if (providersState.unwatchFns.length === 0) {\n providersState.setPropsWatcher(true)\n }\n const terrainUrls: Array<string> = []\n\n for (let i = 0; i < props.subdomains.length; i++) {\n const url = props.url.replace('{s}', props.subdomains[i]) + 'mapservice/swdx?tk=' + props.token\n terrainUrls.push(url)\n }\n\n resolve(\n new Cesium.GeoTerrainProvider({\n urls: terrainUrls\n })\n )\n }\n })\n }\n instance.unmount = async () => {\n const terrainProvider = new Cesium.EllipsoidTerrainProvider()\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n terrainProvider?.readyPromise?.then(() => {\n const listener = getInstanceListener(instance, 'readyPromise')\n listener && emit('readyPromise', terrainProvider, vc?.viewer, instance.proxy as VcComponentPublicInstance)\n })\n vc && (vc.viewer.terrainProvider = terrainProvider)\n $script?.parentNode.removeChild($script)\n return true\n }\n return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n }\n})\n\nexport type VcTerrainProviderTiandituProps = {\n /**\n * Specify the service address.\n * Default value: https://{s}.tianditu.gov.cn\n */\n url?: string\n /**\n * Specify the polling subdomain name.\n * Default value: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7']\n */\n subdomains?: Array<string>\n /**\n * Specify the address of the Tiantu terrain plugin library.\n * Default value: https://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js\n */\n pluginPath?: string\n /**\n * Specify the data type.\n * Default value: init\n */\n dataType?: 'int' | 'float'\n /**\n * Specify the tile type.\n * Default value: heightmap\n */\n tileType?: 'heightmap' | 'quantized-mesh'\n /**\n * Specify the Tiantu service secret key.\n */\n token?: string\n /**\n * Triggers before the VcTerrainProviderTianditu is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcTerrainProviderTianditu 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 VcTerrainProviderTianditu is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the terrain provider encounters an asynchronous error.\n */\n onErrorEvent?: (evt: Cesium.TileProviderError) => void\n /**\n * Triggers when the provider is ready for use.\n */\n onReadyPromise?: (evt: boolean, viewer: Cesium.Viewer, instance: VcComponentPublicInstance) => void\n}\n\nexport type VcTerrainProviderTiandituRef = VcComponentPublicInstance<VcTerrainProviderTiandituProps>\n"],"names":[],"mappings":"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"}