在用cesium开发WebGL三维应用时,通常要设置初始化视角位置,比如设置视角的位置是江苏上空或者云南上空,我们如何获取到对应的视角呢?
我们先来看看视角代码的写法,看看我们需要获取到哪些参数。
- 写法1:笛卡尔坐标参数
viewer.scene.camera.setView({
destination: new Cesium.Cartesian3(-1206939.1925299785, 5337998.241228442, 3286279.2424502545),
orientation: {
heading: 1.4059101895600987,
pitch: -0.20917672793046682,
roll: 2.708944180085382e-13
}
});
- 写法2:经纬度坐标参数
viewer.scene.camera.setView({
destination : new Cesium.Cartesian3.fromDegrees(123.0744619, 44.0503706,20),
orientation: {
heading : Cesium.Math.toRadians(175.0),
pitch : Cesium.Math.toRadians(-90.0),//从上往下看为-90
roll : 0
}
})
观察代码可知,我们需要填入6个参数:destination里的三个参数和heading/pitch/roll。
获取到destination的三个参数即可定位到场景上空,其它三个参数heading/pitch/roll参照上述写法填入即可,pitch填为Cesium.Math.toRadians(-90.0)
可保证视角是从上往下看。
以写法2为例,destination的三个参数(123.0744619, 44.0503706,20)分别代表经度、纬度、视点高度。接下来主要介绍如何获取这三个参数。
1.经度和纬度参数获取
1.1 外网情况下直接打开百度地图坐标拾取器获取,鼠标指哪儿获取哪儿的坐标,然后把获取到的坐标填入代码
http://api.map.baidu.com/lbsapi/getpoint/index.html
1.2 内网情况下直接获取内网地图的坐标
以SuperMap iServer为例,直接预览二维地图,从二维地图上取坐标即可。
- (1)进入内网iserver主页,我的为“http://localhost:8090/iserver”
-
(2)点击服务列表
-
(3)点击场景所在区域的地图服务
本处以第一个地图服务为例
-
(4)点击maps
- (5)点击对应地图右侧的for Classic
-
(6)在新页面右下角即可看见经纬度坐标
2.视点高度参数获取
默认推荐3000,在大多数地方适用。看不到场景的鼠标滚轮放大或缩小地球试试。
没有地形图层或三维模型图层(相当于海拔为0)时该参数不要为负数即可。
有地形图层或三维模型图层时视点高度根据当地海拔而定,江苏地区海拔几十米,视点高度大于当地海拔即可,推荐1000。云南地区海拔接近2000,推荐视点高度5000,喜马拉雅山肯定大于8000了。
总的来说要根据场景范围的大小和是否添加了地形图层或三维模型图层适当调整,找到相对合适的视角即可。