vue-cesium-jyt
Version:
Vue 3.x components for CesiumJS.
92 lines (89 loc) • 4.7 kB
JavaScript
import { getInstanceListener, getVcParentInstance } from '../../utils/private/vm.mjs';
import * as coordtransform from '../../utils/coordtransform.mjs';
import useCommon from '../use-common/index.mjs';
function useProviders(props, ctx, vcInstance) {
vcInstance.cesiumEvents = ["errorEvent"];
const commonState = useCommon(props, ctx, vcInstance);
if (commonState === void 0) {
return;
}
const { emit } = ctx;
vcInstance.mount = async () => {
var _a, _b, _c, _d;
const { viewer } = commonState.$services;
if (vcInstance.cesiumClass.indexOf("ImageryProvider") !== -1) {
vcInstance.renderByParent = true;
const imageryProvider = vcInstance.cesiumObject;
(_a = imageryProvider == null ? void 0 : imageryProvider.readyPromise) == null ? void 0 : _a.then(() => {
const listener = getInstanceListener(vcInstance, "readyPromise");
listener && emit("readyPromise", imageryProvider, viewer, vcInstance.proxy);
});
if (props.projectionTransforms && props.projectionTransforms.from !== props.projectionTransforms.to) {
const ignoreTransforms = ((_b = vcInstance.proxy) == null ? void 0 : _b.$options.name) === "VcImageryProviderBaidu" || ((_c = vcInstance.proxy) == null ? void 0 : _c.$options.name) === "VcImageryProviderTianditu" && imageryProvider._epsgCode === "4490";
if (!ignoreTransforms) {
const { WebMercatorTilingScheme, Cartographic, Math: CesiumMath } = Cesium;
const tilingScheme = new WebMercatorTilingScheme();
const projection = tilingScheme.projection;
const nativeProject = projection.project;
const nativeUnProject = projection.unproject;
let projectMethods;
let unprojectMethods;
if (props.projectionTransforms.to.toUpperCase() === "WGS84") {
projectMethods = "wgs84togcj02";
unprojectMethods = "gcj02towgs84";
} else if (props.projectionTransforms.to.toUpperCase() === "GCJ02") {
projectMethods = "gcj02towgs84";
unprojectMethods = "wgs84togcj02";
}
if (projectMethods && unprojectMethods) {
projection.project = function(cartographic, result) {
result = result || new Cesium.Cartesian3();
result = coordtransform[projectMethods](CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude));
return nativeProject.call(this, new Cartographic(CesiumMath.toRadians(result == null ? void 0 : result[0]), CesiumMath.toRadians(result == null ? void 0 : result[1])));
};
projection.unproject = function(cartesian2, result) {
result = result || new Cartographic();
const cartographic = nativeUnProject.call(this, cartesian2);
result = coordtransform[unprojectMethods](CesiumMath.toDegrees(cartographic.longitude), CesiumMath.toDegrees(cartographic.latitude));
return new Cartographic(CesiumMath.toRadians(result == null ? void 0 : result[0]), CesiumMath.toRadians(result == null ? void 0 : result[1]));
};
imageryProvider._tilingScheme = tilingScheme;
}
}
}
const parentVM = getVcParentInstance(vcInstance).proxy;
return parentVM && ((_d = parentVM.__updateProvider) == null ? void 0 : _d.call(parentVM, imageryProvider));
} else {
const terrainProvider = vcInstance.cesiumObject;
terrainProvider.readyPromise.then(() => {
const listener = getInstanceListener(vcInstance, "readyPromise");
listener && emit("readyPromise", terrainProvider, viewer, vcInstance.proxy);
});
viewer.terrainProvider = terrainProvider;
return true;
}
};
vcInstance.unmount = async () => {
var _a;
const { viewer } = commonState.$services;
if (vcInstance.cesiumClass.indexOf("ImageryProvider") !== -1) {
const parentVM = getVcParentInstance(vcInstance).proxy;
return parentVM && ((_a = parentVM.__updateProvider) == null ? void 0 : _a.call(parentVM, void 0));
} else {
const terrainProvider = new Cesium.EllipsoidTerrainProvider();
terrainProvider.readyPromise.then(() => {
const listener = getInstanceListener(vcInstance, "readyPromise");
listener && emit("readyPromise", terrainProvider, viewer, vcInstance.proxy);
});
viewer.terrainProvider = terrainProvider;
return true;
}
};
return {
transformProps: commonState.transformProps,
unwatchFns: commonState.unwatchFns,
setPropsWatcher: commonState.setPropsWatcher
};
}
export { useProviders as default };
//# sourceMappingURL=index.mjs.map