出現(xiàn)這問題我遇到的一般有兩種原因
- 因為地形深度原因?qū)е碌牟粶?zhǔn)
參考博客:Cesium的拾取問題總結(jié)
解決辦法:viewer.scene.globe.depthTestAgainstTerrain = true; //默認(rèn)為false
- 頁面使用了縮放的方式解決自適應(yīng)問題
如:scale translate等
之前網(wǎng)站的時候自適應(yīng)用了translate縮放,沒有用rem導(dǎo)致cesium點擊的時候,根據(jù)屏幕坐標(biāo)獲取的經(jīng)緯度不準(zhǔn)女阀,拿不到點信息,后來把屏幕坐標(biāo)打印出來就發(fā)現(xiàn)原因艺糜,雖然頁面是縮放了,但是屏幕坐標(biāo)還是頁面原本的信息,所以對應(yīng)不上豁鲤,要把獲取到的屏幕坐標(biāo)根據(jù)縮放比例進行換算或链,再去獲取經(jīng)緯度
例子如下:
viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(){
let x = _this.$store.state.scale_x; // x軸的縮放比例
let y = _this.$store.state.scale_y; // y軸的縮放比例
let position = {
x: movement.position.x / x,
y: movement.position.y / y,
}; // 轉(zhuǎn)化后的屏幕坐標(biāo)
var pickRay = viewer.camera.getPickRay(position);
.......
})