vue-cesium
Version:
Vue 3.x components for CesiumJS.
91 lines (88 loc) • 3.15 kB
JavaScript
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';
;
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