如何在 Cesium 的 CRS 单元中获取边界框角?
How to get boundary box corner in CRS units in Cesium?
对于我的项目,我使用铯在地图上显示 WMS 图层(在 2D 地图上)。
为了提高性能,我使用提供程序 SingleTileImageryProvider 来请求唯一的图块。
关键是:请求需要一个名为“BBOX”的参数,它对应于 CRS 单位的边界框角。
我想知道如何获取这些值以请求地图的整个显示部分。
例如,我之前使用的是 WebMapServiceImageryProvider,Cesium 会自动将这个 BBOX 分配给每个图块。但它不适用于 SingleTileImageryProvider。
另一种解决方案可能是请求整个 WMS 层,尽管有隐藏部分。
我在网上看了很多东西,但没有一个能回答我的问题。
有人可以帮助我,请。
谢谢大家
我终于找到了解决办法。
如果整个屏幕都被可见地图区域覆盖,我将使用右上角和左下角来查找坐标。首先,我在屏幕上以像素为单位获取我的分数。然后,我使用
`viewer.camera.getPickRay(position)`
从相机和像素点创建光线。最后,我得到射线和地球之间的交集,并通过使用
在 WGS84 中得到一个 3D 点
`viewer.scene.globe.pick(ray, viewer.scene)`
否则,如果可见地图区域没有覆盖整个屏幕,我将使用 GetCapabilities 给定的所选图层的限制边界框来创建 Cesium.Rectangle
并使用它。
它适用于 2D 和 3D。 SingleTileImageryProvider
使用
对于我的项目,我使用铯在地图上显示 WMS 图层(在 2D 地图上)。 为了提高性能,我使用提供程序 SingleTileImageryProvider 来请求唯一的图块。
关键是:请求需要一个名为“BBOX”的参数,它对应于 CRS 单位的边界框角。
我想知道如何获取这些值以请求地图的整个显示部分。
例如,我之前使用的是 WebMapServiceImageryProvider,Cesium 会自动将这个 BBOX 分配给每个图块。但它不适用于 SingleTileImageryProvider。
另一种解决方案可能是请求整个 WMS 层,尽管有隐藏部分。
我在网上看了很多东西,但没有一个能回答我的问题。
有人可以帮助我,请。
谢谢大家
我终于找到了解决办法。 如果整个屏幕都被可见地图区域覆盖,我将使用右上角和左下角来查找坐标。首先,我在屏幕上以像素为单位获取我的分数。然后,我使用
`viewer.camera.getPickRay(position)`
从相机和像素点创建光线。最后,我得到射线和地球之间的交集,并通过使用
在 WGS84 中得到一个 3D 点 `viewer.scene.globe.pick(ray, viewer.scene)`
否则,如果可见地图区域没有覆盖整个屏幕,我将使用 GetCapabilities 给定的所选图层的限制边界框来创建 Cesium.Rectangle
并使用它。
它适用于 2D 和 3D。 SingleTileImageryProvider
使用