cesium工具:鼠标获取经纬度

	//获取经纬度
	getPosition = (viewer) => {
        //得到当前三维场景
        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 + ')' ;
			entity.label.fillColor = Cesium.Color.BLACK;
        }, Cesium.ScreenSpaceEventType.WHEEL);
    }

 

Cesium是一个基于WebGL的开源地理可视化库,它可以用于创建高性能的3D地球和地理信息应用程序。在Cesium中,标绘基础工具用于在地球上绘制各种几何图形,如点、线、面等。 要使用Cesium进行标绘,首先你需要创建一个Cesium的场景(Scene),然后在场景上添加标绘工具Cesium提供了一些内置的标绘工具,如点、线、面的绘制工具,你也可以根据自己的需求自定义标绘工具。 下面是一个使用Cesium进行点标绘的示例代码: ```javascript // 创建Cesium场景 var viewer = new Cesium.Viewer('cesiumContainer'); // 创建点标绘工具 var drawPointHandler = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point); // 监听鼠标左击事件 viewer.canvas.addEventListener('click', function(event) { var cartesian = viewer.camera.pickEllipsoid(event.position, viewer.scene.globe.ellipsoid); if (cartesian) { // 获取点击位置的经纬度坐标 var cartographic = Cesium.Cartographic.fromCartesian(cartesian); var longitude = Cesium.Math.toDegrees(cartographic.longitude); var latitude = Cesium.Math.toDegrees(cartographic.latitude); // 在点击位置添加一个点 drawPointHandler.startDrawing(); drawPointHandler.finishDrawing(); drawPointHandler.clear(); drawPointHandler.startDrawing(); drawPointHandler.addMarker(longitude, latitude); drawPointHandler.finishDrawing(); } }); ``` 这只是一个简单的示例,你可以根据自己的需求进行更复杂的标绘操作,如绘制线、面等。Cesium还提供了丰富的API文档和示例,你可以参考官方文档进行更深入的学习和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值