Cesium2D模式下绘制问题

一、问题:切换到2D模式时无法在地图上绘制了

handler = new Cesium.ScreenSpaceEventHandler(view.scene.canvas)
handler.setInputAction(function(movement) {
   let position = viewer.scene.pickPosition(movement.position) // 注意这里
   ......
},Cesium.ScreenSpaceEventType.LEFT_CLICK)

viewer.scene.pickPosition 无法获取2D模式下的笛卡尔坐标
(额外小知识:viewer.scene.pickPosition需要开启“地形深度检测”来解决在没有3dTile模型下的笛卡尔座标不准问题)

二、解决:

handler = new Cesium.ScreenSpaceEventHandler(view.scene.canvas)
handler.setInputAction(function(movement) {
   let ray = viewer.camera.getPickRay(movement.position) // camera发射线与地形的求交
   let earthPosition = viewer.scene.globe.pick(ray, viewer.scene) // 获取当前点击坐标
   ......
},Cesium.ScreenSpaceEventType.LEFT_CLICK)

viewer.camera.getPickRay
此方法无论是否存在地形,无论是否开启地形深度检测,获取与地形的笛卡尔坐标都是准确的

你可能感兴趣的:(cesium,cesium,2D绘制,getPickRay)