EllipsoidRhumbLine(椭球体追踪线)是使用CesiumJS时用来计算在椭球体表面上追踪两个点之间的最短路径的类。
创建EllipsoidRhumbLine也非常简单,只需提供起点和终点即可:
var start = Cesium.Cartographic.fromDegrees(-75.0, 45.0);
var end = Cesium.Cartographic.fromDegrees(-125.0, 45.0);
var rhumbLine = new Cesium.EllipsoidRhumbLine(start, end);
接下来,您可以使用以下方法来获取相关数据:
返回起点。
var startPosition = rhumbLine.getStartPosition();
返回终点。
var endPosition = rhumbLine.getEndPosition();
根据分数获取沿追踪线的点的位置。分数值0代表起点,1代表终点。
var position = rhumbLine.interpolateUsingFraction(0.5);
根据表面距离获取沿追踪线的点的位置。
var position = rhumbLine.interpolateUsingSurfaceDistance(100000.0);
获取两个点之间的表面距离。
var distance = rhumbLine.surfaceDistanceBetweenPoints();
var viewer = new Cesium.Viewer('cesiumContainer', {
shouldAnimate: true
});
var blueMountain = Cesium.Cartesian3.fromDegrees(-118.237, 37.237);
var ellenCreek = Cesium.Cartesian3.fromDegrees(-119.35, 36.316);
viewer.entities.add({
name : 'RhumbLine',
polyline : {
positions : new Cesium.CallbackProperty(function() {
var start = viewer.scene.globe.ellipsoid.cartesianToCartographic(blueMountain);
var end = viewer.scene.globe.ellipsoid.cartesianToCartographic(ellenCreek);
var rhumbLine = new Cesium.EllipsoidRhumbLine(start, end);
var positions = [];
for (var i = 0; i <= 10; i++) {
var position = rhumbLine.interpolateUsingFraction(i / 10);
positions.push(viewer.scene.globe.ellipsoid.cartographicToCartesian(position));
}
return positions;
}, false),
width : 4,
material : Cesium.Color.RED
}
});
在此示例中,我们将创建一个沿着从蓝山到艾伦溪的追踪线,并在地球上显示它。