Cesium
的 camera.flyTo
是不可以直接飞到实体的。但是viewer.flyTo
可以直接飞到实体。
viewer.flyTo (target, options)
:将相机飞到提供的实体、实体或数据源。如果数据源仍在加载过程中或可视化仍在加载中,则此方法在执行飞行之前等待数据准备好
viewer.flyTo的
target` 可以是:要查看的实体、实体数组、实体集合、数据源、Cesium3DTileset、点云或图像层。您还可以传递一个解析为前面提到的类型之一的 Promise。
例如下面代码,加载了一个geojson
,然后通过flyTo
直接将视角切换到geojson
加载的位置
// 读取geojson
let geoPromise = Cesium.GeoJsonDataSource.load("geojson地址");
geoPromise.then((dataSource) => {
// 加载geojson
viewer.dataSources.add(dataSource);
// 视角切换到geojson
viewer.flyTo(dataSource.entities.values)
})
viewer.flyTo
的 option
参数设置
// 读取geojson
let geoPromise = Cesium.GeoJsonDataSource.load("geojson地址");
geoPromise.then((dataSource) => {
// 加载geojson
viewer.dataSources.add(dataSource);
// 视角切换到geojson
viewer.flyTo(dataSource.entities.values,{
duration: 1, // 以秒为单位的飞行持续时间。
maximumHeight: 2000, // 飞行高峰时(切换视角时)的最大高度。
offset : {
heading : Cesium.Math.toRadians(0.0), // 以弧度为单位的航向角。
pitch : Cesium.Math.toRadians(-90), // 以弧度为单位的俯仰角。
range : 0 // 到中心的距离,以米为单位。
}
});
})
说一个我遇见的情况: 我在 viewer.flyTo
到 dataSources
的时候,发现视角变小了,最终通过调整 offset
参数解决了,大家可以参考一下
viewer.flyTo(dataSource.entities.values,{
duration: 1, // 以秒为单位的飞行持续时间。
offset : {
heading: Cesium.Math.toRadians(0.0), // 以弧度为单位的航向角。
pitch: -Math.PI / 2, // 以弧度为单位的俯仰角。
range: 10 // 到中心的距离,以米为单位。
}
});
最后说一下,如果定位的时候带有角度,用 viewer.flyTo
比 camera.flyTo
准确。文章来源:https://www.toymoban.com/news/detail-668935.html
定位到模型(3DTiles)文章来源地址https://www.toymoban.com/news/detail-668935.html
// 加载倾斜数据(3DTiles模型)
let palaceTileset = new Cesium.Cesium3DTileset({
url: "3DTiles模型地址",
//控制切片视角显示的数量,可调整性能
maximumScreenSpaceError: 2,
maximumNumberOfLoadedTiles: 1000000,
})
// 3DTiles模型添加到场景
viewer.scene.primitives.add(palaceTileset);
// 定位到3DTiles模型
viewer.zoomTo(palaceTileset);
到了这里,关于Cesium 视角切换到实体(entity)/ dataSources / 定位到模型(3DTiles)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!