QQ交換グループ:607330463GIS開発技術の最強の交換グループ。許可なく転載することは禁止されています。参照してください。
#var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
セシウムのキャンバスを制御するための画面制御インスタンスを作成しました
#Call setInputAction、これはセット入力アクションであることが英語からわかります
handler.setInputAction(function(x){y}、イベントタイプScreenSpaceEventType);
ここで注意してください:動きは動きであり、動きの終わりの位置はmovement.endPositionです;クリックはクリックであり、クリックの位置はclick.positionです
コアコードは以下の通りで、上位ロジックと下位ロジックは掲載されません。
//鼠标移动的事件
handler.setInputAction(function(movement){
//获取鼠标位置,camera.pickEllipsoid()返回一个cartesian类型位置
let click_position = viewer.scene.camera.pickEllipsoid(movement.endPosition,my_ellipsoid);
//位置数据转换只地理数据类型
let carto_position = my_ellipsoid.cartesianToCartographic(click_position);
//cesium函数转换至地理数据类型的经纬度
let longitude_x = Cesium.Math.toDegrees(carto_position.longitude);
let longitude_y = Cesium.Math.toDegrees(carto_position.latitude);
//topDiv是html中的div
topDiv.innerHTML="点击坐标的位置为"+longitude_x+"经度,"+longitude_y+"纬度";
},Cesium.ScreenSpaceEventType.MOUSE_MOVE)//ScreenSpaceEventType
//鼠标左键点击事件
handler.setInputAction(function(click){
var click_position = viewer.camera.pickEllipsoid(click.position,my_ellipsoid);//click换成movement也可实现,但是position不是endposition
var carto_position = Cesium.Cartographic.fromCartesian(click_position);
//var carto_position = my_ellipsoid.cartesianToCartographic(click_position);
var longitude_x = Cesium.Math.toDegrees(carto_position.longitude).toFixed(3);
var longitude_y = Cesium.Math.toDegrees(carto_position.latitude).toFixed(3);
topDdv.innerHTML="点击坐标的位置为"+longitude_x+"经度,"+longitude_y+"纬度";},Cesium.ScreenSpaceEventType.LEFT_CLICK)