supermap/iclient3d-webgl 怎么进行图层居中

0 投票
想通过程序控制进行图层居中,viewer的flyto调用效果有问题,飞到海洋上去了,该怎么控制才能使其自动居中。
11月 26, 2020 分类:  151次浏览 | 用户: kjchen 才疏学浅 (11 分)

1个回答

0 投票
 
已采纳
您好,使用camera.flyTo({destination : Cesium.Cartesian3.fromDegrees(x, y, z)}),其中坐标值填图层的中心点
11月 26, 2020 用户: 卷饼先生 登峰造极 (5,815 分)
采纳于 11月 26, 2020 用户:kjchen
这个API我知道,但这样每个图层都需要人工去设置x,y,z三个值,有没有办法从图层信息中获取,或者使其自适应。
layer.position
这个我试过,获取到的x,y正确,但z值不对。所以,很想知道,当使用scene.open第一次加载的时候,为什么能自动居中,有没有对外提供方法来达到类似第一次加载的时候的居中效果
使用scene.open()第一次加载的时候默认的加载的是在桌面保存时的场景视角。z值不对的话可以修改position里面的z值自定义高度
那如何获取桌面保存时的场景视角?z值不对的话可以修改position,这个也是在桌面修改?
第一次加载的时候是场景视角,不是图层的可以使用viewer.scene.camera.moveEnd.addEventListener(function(){
                console.log(viewer.camera._positionWC,"position")
                console.log(viewer.camera.pitch,"pitch",viewer.camera.roll,'roll',viewer.camera.heading,'head');
            });

来监听当前相机的视角。修改position的z值是在WebGL,直接赋值就行
...