cesium 求地表两点的距离(基础篇)

cesium求地球上两点的直线距离和求地表距离是不一样的,直接用3维向量计算的距离表示的是直线距离,计算地表距离需要借助EllipsoidGeodesic类

1.求两点的直线距离

let startPosition= new Cesium.Cartesian3.fromDegrees(110,30);

let endPosition= new Cesium.Cartesian3.fromDegrees(110,30.1);

let distance= Cesium.Cartesian3.distance(startPosition,endPosition);//求两点直线距离,单位为米

2.求两点的地表距离

let startPosition=new Cesium.Cartographic(110/(180/Math.PI),30/(180/Math.PI));

let endPosition=new Cesium.Cartographic(110/(180/Math.PI),30.1/(180/Math.PI));

let geodesic = new Cesium.EllipsoidGeodesic(startPosition,endPosition);

let distance = geodesic.surfaceDistance;//求地表距离,单位为米

3.按地表距离的比例求地表连线上的另外一点坐标

let startPosition=new Cesium.Cartographic(110/(180/Math.PI),30/(180/Math.PI));

let endPosition=new Cesium.Cartographic(110/(180/Math.PI),30.1/(180/Math.PI));

let geodesic = new Cesium.EllipsoidGeodesic(startPosition,endPosition);

let otherPosition=geodesic.interpolateUsingFraction(2,new Cesium.Cartographic());//求地表连线上2倍距离的点

4.求地表连线上,距离起点特定距离的地表点的坐标

let startPosition=new Cesium.Cartographic(110/(180/Math.PI),30/(180/Math.PI));

let endPosition=new Cesium.Cartographic(110/(180/Math.PI),30.1/(180/Math.PI));

let geodesic = new Cesium.EllipsoidGeodesic(startPosition,endPosition);

let otherPosition=geodesic.interpolateUsingSurfaceDistance(200,new Cesium.Cartographic());//求地表连线上距离起点200米的地表点的坐标


你可能感兴趣的:(cesium 求地表两点的距离(基础篇))