cesium-获取构造primitive的坐标/geometry

由于cesium的机制,为了节约内存,会将构造的geometry销毁,因此在生成时,需要将此选项关闭才能在渲染后取得坐标。

即将该属性设置为false,releaseGeometryInstances:false,

let pr=new Cesium.Primitive({
    geometryInstances : new Cesium.GeometryInstance({
        geometry: instance,
    }),
    releaseGeometryInstances:false,
    appearance : new Cesium.PolylineMaterialAppearance({
        material : Cesium.Material.fromType('Color')
    })
})
这样获取出来的坐标是世界坐标系,接下来只需要将世界坐标系转换为经纬度坐标系即可

 

var pick = viewer.scene.pick(movement.position);
var pos=pick.primitive.geometryInstances.geometry._positions
console.log(pick.primitive.geometryInstances.geometry._positions)
var cartesian3=new Cesium.Cartesian3(pos[0].x,pos[0].y,pos[0].z);
var cartographic=viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian3);

var lat=Cesium.Math.toDegrees(cartographic.latitude);
var lng=Cesium.Math.toDegrees(cartographic.longitude);
console.log(lat,lng)
发布了243 篇原创文章 · 获赞 36 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/A873054267/article/details/103994303