UNPKG

vue-cesium

Version:
91 lines (88 loc) 3.15 kB
import { defineComponent, getCurrentInstance, createCommentVNode } from 'vue'; import '../../../composables/index.mjs'; import { kebabCase } from '../../../utils/util.mjs'; import { getInstanceListener } from '../../../utils/private/vm.mjs'; import { providerEmits } from '../../../utils/emits.mjs'; import useProviders from '../../../composables/use-providers/index.mjs'; import useVueCesium from '../../../composables/use-vue-cesium/index.mjs'; "use strict"; const tiandituTerrainProviderProps = { url: { type: String, default: "https://{s}.tianditu.gov.cn/" }, subdomains: { type: Array, default: () => ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"] }, pluginPath: { type: String, default: "https://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js" }, dataType: { type: String, default: "int", validator: (v) => ["int", "float"].includes(v) }, tileType: { type: String, default: "heightmap", validator: (v) => ["heightmap", "quantized-mesh"].includes(v) }, token: String }; var TerrainProviderTianditu = defineComponent({ name: "VcTerrainProviderTianditu", props: tiandituTerrainProviderProps, emits: providerEmits, setup(props, ctx) { const instance = getCurrentInstance(); instance.cesiumClass = "GeoTerrainProvider"; const providersState = useProviders(props, ctx, instance); if (void 0 === providersState) { return; } const { emit } = ctx; const vc = useVueCesium(); let $script; instance.createCesiumObject = async () => { return new Promise((resolve, reject) => { $script = document.createElement("script"); document.body.appendChild($script); $script.src = props.pluginPath; $script.onload = () => { if (providersState.unwatchFns.length === 0) { providersState.setPropsWatcher(true); } const terrainUrls = []; for (let i = 0; i < props.subdomains.length; i++) { const url = props.url.replace("{s}", props.subdomains[i]) + "mapservice/swdx?tk=" + props.token; terrainUrls.push(url); } resolve( new Cesium.GeoTerrainProvider({ urls: terrainUrls }) ); }; }); }; instance.unmount = async () => { var _a; const terrainProvider = new Cesium.EllipsoidTerrainProvider(); (_a = terrainProvider == null ? void 0 : terrainProvider.readyPromise) == null ? void 0 : _a.then(() => { const listener = getInstanceListener(instance, "readyPromise"); listener && emit("readyPromise", terrainProvider, vc == null ? void 0 : vc.viewer, instance.proxy); }); vc && (vc.viewer.terrainProvider = terrainProvider); $script == null ? void 0 : $script.parentNode.removeChild($script); return true; }; return () => { var _a; return createCommentVNode(kebabCase(((_a = instance.proxy) == null ? void 0 : _a.$options.name) || "")); }; } }); export { TerrainProviderTianditu as default, tiandituTerrainProviderProps }; //# sourceMappingURL=terrain.mjs.map