Cesium实现坐标转换;目标区域放大

本文介绍了如何使用Cesium库中的Rectangle对象来定义区域并控制相机视图,包括flyToRectangle函数实现的平移至矩形区域以及viewRectangle的视角展示功能。
摘要由CSDN通过智能技术生成
var south = 38.0;

var east = -72.0;

var north = 42.0;

var rectangle = Cesium.Rectangle.fromDegrees(west, south, east, north);

viewer.camera.setView({

    destination: rectangle

});

// Show the rectangle.  Not required; just for show.

viewer.entities.add({

    rectangle : {

        coordinates : rectangle,

        fill : false,

        outline : true,

        outlineColor : Cesium.Color.WHITE

    }

});

}

function flyToRectangle() {

Sandcastle.declare(flyToRectangle);

//得到当前三维场景

    var scene = viewer.scene;

    //得到当前三维场景的椭球体

    var ellipsoid = scene.globe.ellipsoid;

    var entity = viewer.entities.add({

        label : {

            show : false

        }

    });

    var longitudeString = null;

    var latitudeString = 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);

            entity.position = cartesian;

            entity.label.show = true;

            entity.label.text = '(' + longitudeString + ', ' + latitudeString + ')' ;

        }else {

            entity.label.show = false;

        }

    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

var west = -90.0;

var south = 40.1;

var east = -87.0;

var north = 40.2;

var rectangle = Cesium.Rectangle.fromDegrees(west, south, east, north);

viewer.camera.flyTo({

    destination : rectangle

});

// Show the rectangle.  Not required; just for show.

viewer.entities.add({

    rectangle : {

        coordinates : rectangle,

        fill : false,

        outline : true,

        outlineColor : Cesium.Color.WHITE

    }

});

}

var viewChanged = document.getElementById(‘viewChanged’);

var removeStart;

var removeEnd;

Sandcastle.addToolbarMenu([{

text : 'Fly to Rectangle',

onselect : function() {

    flyToRectangle();

    Sandcastle.highlight(flyToRectangle);

}

}, {

text : 'View a Rectangle',

onselect : function() {

    viewRectangle();

    Sandcastle.highlight(viewRectangle);

}

}

]);

scene.morphComplete.addEventListener(function() {

Sandcastle.reset();

});


#  最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/4bacd518bd38c4aabd7257208c5b4acc.jpeg)

![](https://img-blog.csdnimg.cn/img_convert/0e035e432bd48056a4a46242497becba.png)

![](https://img-blog.csdnimg.cn/img_convert/27de8aca599530df9dfadff46dc33edd.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618191877)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium中,坐标转换可以使用Cesium坐标转换功能来实现Cesium提供了几种常用的坐标系转换方法,包括经纬度(地理坐标)和笛卡尔坐标之间的转换。 要将经纬度转换为笛卡尔坐标,你可以使用Cesium.Cartesian3.fromDegrees()方法。该方法接受经度、纬度和可选的高度参数,并返回对应的笛卡尔坐标。 例如,要将经度为lon、纬度为lat、高度为height的位置转换为笛卡尔坐标,可以使用以下代码: ```javascript var cartesian = Cesium.Cartesian3.fromDegrees(lon, lat, height); ``` 同样地,如果你有一个笛卡尔坐标(x、y、z),想要将其转换为经纬度,可以使用Cesium.Cartographic.fromCartesian()方法。该方法接受一个笛卡尔坐标作为参数,并返回对应的经纬度坐标。 以下是一个将笛卡尔坐标转换为经纬度的示例: ```javascript var cartographic = Cesium.Cartographic.fromCartesian(cartesian); var longitude = Cesium.Math.toDegrees(cartographic.longitude); var latitude = Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height; ``` 在上面的代码中,首先使用Cesium.Cartographic.fromCartesian()方法将笛卡尔坐标转换为地理坐标对象,然后使用Cesium.Math.toDegrees()方法将弧度转换为度数。最后,可以通过访问地理坐标对象的longitude、latitude和height属性来获取转换后的经纬度和高度值。 需要注意的是,Cesium还提供了其他坐标系之间的转换方法,如笛卡尔坐标和屏幕坐标之间的转换。你可以根据具体的需求选择合适的方法进行坐标转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值