我需要知道Cesium Map的当前中心是什么。
我尝试使用Main3
,但它总是给出相同的z值(x:16921255.101297915,y:5578093.302269477,z:12756274)并且我不确定x和y值。它们是米吗?
非常感谢!
编辑:解决方案
在我得到的所有帮助下(谢谢!)我把它放在一起:
private function onButtonClick(evt:KeyboardEvent):void
{
var item:Object = evt.itemRenderer.data;
openWorkflowItem(item.date.date, item.workFlowID);
$multiEdit = false;
if (target === currentWorkflowItems)
{
$histFilter['sym'] = item.sym;
histSym.text = item.sym;
applyHistFilters();
}
}
<mx:AdvancedDataGrid
id="historicalWorkflowItems"
dataProvider="{$historicalWFItems}"
width="100%" height="100%"
itemClick="{onWFItemClick(event)}"
keyDown="if (event.keyCode==Keyboard.ENTER){ onButtonClick(event)}"
borderStyle="none"
sortExpertMode="true"
useHandCursor="true"
headerShift="{saveColumnSettings('historical', historicalWorkflowItems)}"
columnStretch="{saveColumnSettings('historical', historicalWorkflowItems)}"
horizontalScrollPolicy="auto"
verticalScrollPolicy="auto"
allowMultipleSelection="true"
>
此功能以度为单位给出经度/纬度坐标。
答案 0 :(得分:4)
viewer.camera.position 为您提供相机在X,Y,Z坐标中的位置,以米为单位,相对于地球中心。
根据您使用的场景模式,方法不同:
<强> SCENE3D:强>
为了看看相机在看什么,你需要得到相机的光线和地图的交点。
function getMapCenter() {
var windowPosition = new Cesium.Cartesian2(viewer.container.clientWidth / 2, viewer.container.clientHeight / 2);
var pickRay = viewer.scene.camera.getPickRay(windowPosition);
var pickPosition = viewer.scene.globe.pick(pickRay, viewer.scene);
var pickPositionCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition);
console.log(pickPositionCartographic.longitude * (180/Math.PI));
console.log(pickPositionCartographic.latitude * (180/Math.PI));
}
基于this thread。
同时尝试检查相机是否正在查看地图,而不是天空。
<强> SCENE2D:强>
这是一个简单的2D视图,相机指向下方。
来自docs:
2D模式。使用正交投影自上而下查看地图
var camPos = viewer.camera.positionCartographic;
console.log(camPos.longitude * (180/Math.PI));
console.log(camPos.latitude * (180/Math.PI));
剩余的案例是 2.5D或COLUMBUS_VIEW