获取cesium坐标的方法
export default class Handler {
constructor(viewer) {
this.viewer = viewer
this.handler = ''
this.mapPosition = {}
}
getTerrainCoord(callback) {
if (this.handler) {
this.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
}
let viewer = this.viewer
this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
this.handler.setInputAction((evt) => {
let ray = viewer.camera.getPickRay(evt.position);
let cartesian = viewer.scene.globe.pick(ray, viewer.scene);
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
let lon = Cesium.Math.toDegrees(cartographic.longitude);
let lat = Cesium.Math.toDegrees(cartographic.latitude);
let height = viewer.scene.globe.getHeight(cartographic);
let mapPosition = {
lon,
lat,
height
};
callback(mapPosition)
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}
getModelCoord(callback) {
if (this.handler) {
this.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
}
let viewer = this.viewer
this.handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
this.handler.setInputAction((evt) => {
let scene = viewer.scene;
if (scene.mode !== Cesium.SceneMode.MORPHING) {
let pickedObject = scene.pick(evt.position);
if (scene.pickPositionSupported && Cesium.defined(pickedObject) && pickedObject.node) {
let cartesian = viewer.scene.pickPosition(evt.position);
if (Cesium.defined(cartesian)) {
let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
let lon = Cesium.Math.toDegrees(cartographic.longitude);
let lat = Cesium.Math.toDegrees(cartographic.latitude);
let height = cartographic.height;
let mapPosition = {
lon,
lat,
height
}
callback(mapPosition)
}
}
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}
}