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米的地表点的坐标


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。