从 Cesium-DrawHelper 形状创建事件中获取错误的坐标
Getting wrong coordinate from Cesium-DrawHelper shape created event
我在 GWT(Cesium Terrain Server for terrain)上使用带有 drawHelper 插件的 cesium。我正在绘制形状(标记、折线、多边形..)到我的 3d 地图。
我可以使用鼠标指向的精确坐标在地图上绘制形状,但是当我更改相机外观的角度时,我无法在鼠标指向的位置绘制形状,因为我得到了错误的坐标,这会导致在错误的坐标上绘制形状。
(我从 DrawHelpers 形状创建事件中获取坐标,例如 'markerCreated' returns 位置)
我通过编辑 DrawHelper.js 解决了我的问题,
它通过 scene.camera.pickEllipsoid 函数获得位置,我通过 globe.pick 创建射线和拾取位置来更改它。代码:
var cartesian = scene.camera.pickEllipsoid(movement.position,ellipsoid)
替换为
var ray = scene.camera.getPickRay(movement.position);
var pickedPosition = scene.globe.pick(ray,scene);
if(pickedPosition){
markers.addBillBoard(pickedPosition);
_self.stopDrawing();
options.callback(pickedPosition);
在地形上添加标记到鼠标指向的坐标固定这样...
我在 GWT(Cesium Terrain Server for terrain)上使用带有 drawHelper 插件的 cesium。我正在绘制形状(标记、折线、多边形..)到我的 3d 地图。 我可以使用鼠标指向的精确坐标在地图上绘制形状,但是当我更改相机外观的角度时,我无法在鼠标指向的位置绘制形状,因为我得到了错误的坐标,这会导致在错误的坐标上绘制形状。 (我从 DrawHelpers 形状创建事件中获取坐标,例如 'markerCreated' returns 位置)
我通过编辑 DrawHelper.js 解决了我的问题, 它通过 scene.camera.pickEllipsoid 函数获得位置,我通过 globe.pick 创建射线和拾取位置来更改它。代码:
var cartesian = scene.camera.pickEllipsoid(movement.position,ellipsoid)
替换为
var ray = scene.camera.getPickRay(movement.position);
var pickedPosition = scene.globe.pick(ray,scene);
if(pickedPosition){
markers.addBillBoard(pickedPosition);
_self.stopDrawing();
options.callback(pickedPosition);
在地形上添加标记到鼠标指向的坐标固定这样...