美文网首页开源
cesium 求地表两点的距离(基础篇)

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

作者: panergongzi | 来源:发表于2021-02-28 17:34 被阅读0次

    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 求地表两点的距离(基础篇)

        本文链接:https://www.haomeiwen.com/subject/tligfltx.html