Cesium中EllipsoidGeodesic类提供了一种计算椭球体上两点之间的最短距离(测地线)的方法。
new Cesium.EllipsoidGeodesic(start, end, ellipsoid)
start : Cartesian3
一个起点3D坐标,它是椭球体上的一个点。
end : Cartesian3
一个终点3D坐标,它是椭球体上的另一个点。
ellipsoid : Ellipsoid, optional
椭球体,默认值是Ellipsoid.WGS84
。
_start : Cartographic
起点2D经纬度坐标。 如果没有显式地设置它,将在第一次访问时计算,并在以后缓存结果。
_end : Cartographic
终点2D经纬度坐标。 如果没有显式地设置它,将在第一次访问时计算,并在以后缓存结果。
_ellipsoid : Ellipsoid
椭球体。
_rhumb : boolean
是否使用等角航线(大圆航线)。默认为false
。
_surfaceDistance : number
地表距离,单位是米。
设置测地线的终点坐标。
geodesic.setEndPosition(end)
从起点到终点的距离的分数确定点的位置。
geodesic.interpolateUsingFraction(fraction, result)
按比例从起点到终点的曲线上的距离确定点的位置。
geodesic.interpolateUsingSurfaceDistance(distance, result)
使用固定步长将该线段的每个点输入回调函数。
var stepSize = 10000.0;
geodesic.interpolateUsingFixedStepSize(stepSize, function (position) {
// 访问每个点
});
获取椭球体上两点之间的最短距离(测地线)。
var distance = geodesic.surfaceDistance();
var viewer = new Cesium.Viewer('cesiumContainer');
var start = Cesium.Cartesian3.fromDegrees(-72.0, 40.0);
var end = Cesium.Cartesian3.fromDegrees(-110.0, 50.0);
var geodesic = new Cesium.EllipsoidGeodesic(start, end);
var distance = geodesic.surfaceDistance();
console.log(distance);