在二维地图中,如何在鼠标位置获取地形高度?

问题描述

我在2D模式下使用铯。 这是我用来获取鼠标位置的地形高度的代码

cartographic = Cesium.Ellipsoid.wgs84.cartesianToCartographic( position );
var longitudeString = Cesium.Math.todegrees(cartographic.longitude).toFixed(10);
var latitudeString = Cesium.Math.todegrees(cartographic.latitude).toFixed(10);          

mapPointerLatitude = latitudeString.slice(-15);
mapPointerLongitude = longitudeString.slice(-15);
var tempHeight = cartographic.height;
if( tempHeight < 0 ) tempHeight = 0; 
mapPointerHeight = tempHeight.toFixed(2);

position来自Cesium.ScreenSpaceEventType.MOUSE_MOVE事件的地方:

if ( mapStyle === '2D' ) {
    var position = viewer.camera.pickEllipsoid(movement.endPosition,scene.globe.ellipsoid);
    if (position) {
        return position;
    } 
}

if ( mapStyle === '3D' ) {
    var ray = viewer.camera.getPickRay(movement.endPosition);
    var position = viewer.scene.globe.pick(ray,viewer.scene);
    if (Cesium.defined(position)) {
        return position;
    } 
}

当地图处于3D模式(Cesium.SceneMode.SCENE3D中时,我的高度值位于tempHeight中,但是当地图处于Cesium.SceneMode.SCENE2D中时,该值始终为零。我在做什么错了?

编辑 不知道这是否是最好的方法,但是我可以将其放入其中:

cartographic = Cesium.Ellipsoid.wgs84.cartesianToCartographic( position );

var positions = [ cartographic ];
var promise = Cesium.sampleTerrain(terrainProvider,11,positions);
Cesium.when(promise,function( updatedPositions ) {
    // PUT ALL HERE
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)