由于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)