【问题标题】:How to zoom/move camera to display a polygon in Cesium.js (fit viewport to polygon bounds)如何缩放/移动相机以在 Cesium.js 中显示多边形(使视口适合多边形边界)
【发布时间】:2015-04-15 07:27:06
【问题描述】:

好吧,也许我是盲人,因为显然这不是高级功能.. 但我正在查看 Camera docs for Cesium.js,我似乎无法找到您如何简单地缩放/移动视图以显示多边形?

我可以使用平均纬度/经度值定位相机以显示多边形,例如:

viewer.camera.setView({
    position : Cesium.Cartesian3.fromDegrees(lonMean, latMean, 45000.0)
});

但那是垃圾;我没有缩放...我希望调整缩放/视口以适合多边形。

谁能指出我必须忽略的东西...

【问题讨论】:

  • 从未使用过Cesium,但我想您已经尝试过docs 中提到的zoomInzoomOut 方法,对吧?
  • 是的,这些功能只是放大/缩小任意数量,与我的多边形边界无关。只有我见过的相关函数通过矩形或 xy 设置视图。

标签: javascript camera cesium


【解决方案1】:

假设您在 Entity API 中定义了一个多边形,那么您可以简单地调用 viewer.zoomTo(entity)viewer.flyTo(entity)。这适用于任何类型的实体可视化,而不仅仅是多边形,并且在 Cesium 的 Creating Entities tutorial 中进行了讨论。

【讨论】:

  • 完美!虽然我觉得文档 对此有点模糊.. 看看flyTo() 函数,没有提及接受实体参数:/cesiumjs.org/Cesium/Build/Documentation/Camera.html#flyTo
  • 那是因为 Camera.flyTo 函数不接受实体参数。此功能仅在 Viewer 上,它是更高级别的对象。低级相机对实体一无所知。显然,我们的文档有很多改进的余地,我只是想为您澄清一下。
  • 糟糕,这完全是我的疏忽;不是文档 - 再次感谢。
【解决方案2】:

看看Sandcastle Camera Demo。下拉“相机选项”下拉框,然后选择“飞到矩形”或“查看矩形”。相机将飞行或捕捉到矩形,代码编辑器会显示这是如何完成的。也可以看看其他 Sandcastle 演示,它们包含大量用于 Cesium 中常见操作的示例代码。

这是 FlyTo 代码:

var west = -90.0;
var south = 38.0;
var east = -87.0;
var north = 40.0;
var rectangle = Cesium.Rectangle.fromDegrees(west, south, east, north);

viewer.camera.flyTo({
    destination : rectangle
});

【讨论】:

  • 抱歉,对多边形感兴趣,而不是矩形。
  • 是的,就像mapbox.fitBounds。固体。
猜你喜欢
  • 2012-08-10
  • 2017-04-30
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 2021-06-20
  • 2018-07-07
  • 1970-01-01
相关资源
最近更新 更多