获取Cesium地图中心

时间:2015-10-26 14:52:33

标签: gis cesium

我需要知道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"
                    >

此功能以度为单位给出经度/纬度坐标。

1 个答案:

答案 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