Cesium标绘工具-扇形

最近在做Cesium标绘的功能,参考某openlayer的军标库,非常感谢核心计算多边形点坐标的算法都已经写好了,只要转成Cesium的绘制方法即可,这里涉及到一个问题,当我绘制扇形的时候,发现,绘制的结果是个立着的椭圆(应该是圆形),也就是南北长,东西短,目测应该是投影问题,然后进行了改造,将计算之前,先把笛卡尔坐标转成的经纬度坐标转成web墨卡托投影坐标,然后计算结束后,再将web墨卡托投影坐标转成经纬度坐标,再进行绘制即可。

参考的标绘计算:https://github.com/sakitam-fdd/ol-plot

Cesium标绘工具-扇形

修改以后的:

Cesium标绘工具-扇形

坐标转换代码Cesium都提供了:

 this.proj = new Cesium.WebMercatorProjection()

 cartesianToCartographic(cartesian) {

        var latlng = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);

        const _l =  this.proj.project(latlng)

        return [_l.x, _l.y, _l.z];

    }

由投影坐标转回经纬度坐标:

 let pl=pList.map((e)=>{

                    const c=p.unproject(new Cesium.Cartesian3(e[0],e[1]))

                    return [c.longitude*Cesium.Math.DEGREES_PER_RADIAN,c.latitude*Cesium.Math.DEGREES_PER_RADIAN]

                })