Cesium 两点连线和测距 js
时间: 2023-05-30 17:07:30 浏览: 60
以下是一个简单的示例代码,用于在Cesium中绘制两点之间的线,以及测量它们之间的距离。
```
var viewer = new Cesium.Viewer('cesiumContainer');
var point1 = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
point : {
pixelSize : 10,
color : Cesium.Color.YELLOW
}
});
var point2 = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-75.58424, 40.03652),
point : {
pixelSize : 10,
color : Cesium.Color.RED
}
});
var distance = viewer.entities.add({
position : Cesium.Cartesian3.fromDegrees(-75.591, 40.037),
label : {
text : '',
font : '14pt monospace',
fillColor : Cesium.Color.GOLD,
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
outlineWidth : 2,
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
pixelOffset : new Cesium.Cartesian2(0, -9)
}
});
var line = viewer.entities.add({
polyline : {
positions : new Cesium.CallbackProperty(function() {
return [point1.position.getValue(), point2.position.getValue()];
}, false),
width : 5,
material : Cesium.Color.BLUE
}
});
var updateDistance = function() {
var p1 = point1.position.getValue();
var p2 = point2.position.getValue();
var geodesic = new Cesium.EllipsoidGeodesic();
geodesic.setEndPoints(p1, p2);
var distanceInMeters = geodesic.surfaceDistance;
distance.label.text = 'Distance: ' + distanceInMeters.toFixed(2) + ' m';
};
point1.position.addEventListener(Cesium.PropertyEventType.POSITION_CHANGED, updateDistance);
point2.position.addEventListener(Cesium.PropertyEventType.POSITION_CHANGED, updateDistance);
updateDistance();
```
这个代码片段中,我们首先创建了两个点实体,并在地球上分别放置它们,然后创建了一个实体来表示两点之间的线。我们还创建了一个实体来显示两个点之间的距离,并使用`Cesium.EllipsoidGeodesic`来计算这个距离。最后,我们添加了两个事件侦听器,以便在点的位置更改时更新距离标签。
注意,这只是一个简单的示例,仅用于演示两点之间的连线和测距。实际应用中可能需要进行更复杂的计算和绘制。