问题描述
我在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 (将#修改为@)