首页 / 浏览问题 / WebGIS / 问题详情
viewer.camera.flyTo飞到的位置不对
55EXP 2024年08月05日

桌面端用的idesktop11i,iserver用的11.1.0,webGL下载的最新版,数据源来自revit插件导出,revit导出时选择自定义投影坐标系,文件来自idesktop导出的WGS_1984/Web_Mercator坐标,场景是平面场景

代码:

window.viewer.camera.flyTo({
  destination : Cesium.Cartesian3.fromDegrees(xy[0], xy[1], this.centerZ),
  orientation: {
    heading: Cesium.Math.toRadians(0.0),
    pitch: Cesium.Math.toRadians(0.0),
    roll: 0.0
  },
});
console.log("转为笛卡尔的位置: " + Cesium.Cartesian3.fromDegrees(xy[0], xy[1], this.centerZ));
console.log("相机的位置:" + window.viewer.camera.position);

结果输出的笛卡尔位置和相机位置不相等。

并且多次修改笛卡尔位置,flyTo的相机位置每次都是在同一个地方,不知道是不是发布的服务问题。

1个回答

您好

1、输出的笛卡尔位置和相机位置不等的原因是相机未飞到正确位置时便已获取到了相机的位置,可以使用 complete 回调函数来确保在相机动画完成后再打印位置信息,这样就能得到正确的相机位置。

scene.camera.flyTo({
				destination: SuperMap3D.Cartesian3.fromDegrees(13.0353, 47.8084, 100.0),
				orientation: {
					heading: 0.7272,
					pitch: -0.2672,
					roll: 0
				},
				complete: function () {
					console.log("转为笛卡尔的位置: " + SuperMap3D.Cartesian3.fromDegrees(13.0353, 47.8084, 100.0));
					console.log("相机的位置:" + viewer.camera.position);
				}

			})

2、您修改destination中的坐标值后,camera会飞行到不同的位置的

希望可以帮助您

1,470EXP 2024年08月05日
...