cesium怎么点击屏幕获取Polygon的多段经纬度
时间: 2024-03-28 07:38:51 浏览: 82
Cesium根据DEM实时获取Polygon区域坡度(前端实现)
5星 · 资源好评率100%
您可以使用Cesium的鼠标事件监听器来捕获屏幕的点击事件,并使用Cesium的几何图形API来获取多边形的经纬度坐标。以下是一个示例代码片段,用于获取屏幕点击位置处的多边形的经纬度坐标:
```javascript
var viewer = new Cesium.Viewer('cesiumContainer');
var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click) {
var position = viewer.camera.pickEllipsoid(click.position, viewer.scene.globe.ellipsoid);
if (position) {
var cartographic = Cesium.Cartographic.fromCartesian(position);
var longitude = Cesium.Math.toDegrees(cartographic.longitude);
var latitude = Cesium.Math.toDegrees(cartographic.latitude);
var pickedObjects = viewer.scene.drillPick(click.position);
for (var i = 0; i < pickedObjects.length; ++i) {
var entity = pickedObjects[i].id;
if (entity && entity.polygon) {
var positions = entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions;
for (var j = 0; j < positions.length; ++j) {
var cartographic = Cesium.Cartographic.fromCartesian(positions[j]);
var longitude = Cesium.Math.toDegrees(cartographic.longitude);
var latitude = Cesium.Math.toDegrees(cartographic.latitude);
console.log(longitude, latitude);
}
break;
}
}
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
```
这个例子中,我们首先创建了一个Cesium Viewer并创建了一个ScreenSpaceEventHandler来监听鼠标点击事件。在点击时,我们首先获取点击位置处的地球表面位置,并使用Cesium.Cartographic.fromCartesian将其转换为经纬度坐标。接下来,我们使用Cesium.Scene.drillPick方法获取点击位置下的实体对象,并检查其中的多边形属性。如果找到了多边形,我们可以使用Cesium.Polygon.hierarchy.getValue方法获取多边形的顶点坐标,并将它们转换为经纬度坐标。最后,我们将多边形的每个顶点的经纬度坐标打印到控制台上。
阅读全文