代碼:
function getPosition() {
//得到當前三維場景
var scene = viewer.scene;
//得到當前三維場景的橢球體
var ellipsoid = scene.globe.ellipsoid;
var entity = viewer.entities.add({
label : {
show : false
}
});
var longitudeString = null;
var latitudeString = null;
var height = null;
var cartesian = null;
// 定義當前場景的畫布元素的事件處理
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
//設置鼠標移動事件的處理函數,這里負責監聽x,y坐標值變化
handler.setInputAction(function(movement) {
//通過指定的橢球或者地圖對應的坐標系,將鼠標的二維坐標轉換為對應橢球體三維坐標
cartesian = viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
if (cartesian) {
//將笛卡爾坐標轉換為地理坐標
var cartographic = ellipsoid.cartesianToCartographic(cartesian);
//將弧度轉為度的十進制度表示
longitudeString = Cesium.Math.toDegrees(cartographic.longitude);
latitudeString = Cesium.Math.toDegrees(cartographic.latitude);
//獲取相機高度
height = Math.ceil(viewer.camera.positionCartographic.height);
entity.position = cartesian;
entity.label.show = true;
entity.label.text = '(' + longitudeString + ', ' + latitudeString + "," + height + ')' ;
}else {
entity.label.show = false;
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
//設置鼠標滾動事件的處理函數,這里負責監聽高度值變化
handler.setInputAction(function(wheelment) {
height = Math.ceil(viewer.camera.positionCartographic.height);
entity.position = cartesian;
entity.label.show = true;
entity.label.text = '(' + longitudeString + ', ' + latitudeString + "," + height + ')' ;
}, Cesium.ScreenSpaceEventType.WHEEL);
}
效果:
