【问题标题】:Is it possible to generate extent from VectorTiles source?是否可以从 VectorTiles 源生成范围?
【发布时间】:2023-02-24 04:43:33
【问题描述】:
我正在构建一个应用程序,用户可以在其中上传矢量图块格式的任何地图。这些地图通常很小,我想限制缩放和平移,因此用户视图将始终在地图范围内。
我不知道上传地图的范围。我在 layer/VectorTile、source/VectorTile 和 View 中尝试了多种方法,但据我所知,我需要先定义 extent 才能使其工作。
有什么方法可以根据矢量源中要素的边缘坐标生成范围吗?我正在使用 OpenLayers v7.2.2
【问题讨论】:
标签:
openlayers
openlayers-7
【解决方案1】:
简短的回答,没有。
矢量切片中的要素使用相对于矢量切片原点的坐标,通常在 [4096, 4096] 范围内。矢量切片本身并不知道它的坐标。如果您不知道 tileset 的范围,则无法解码信息。
定义矢量瓦片集范围的三个元素:最左边的经度、最上面的纬度以及最左边的经度和最右边的经度之间的距离。由于所有矢量图块都是方形的,并且它们使用 2 倍缩放级别的幂,这应该允许您计算其他所有内容。
如果您自己生成矢量切片,我建议您始终使用 Web Mercator 3857 的经典世界范围:
tile_dimension_zoom_0: 20037508.34 * 2,
tile_origin_upper_left_x: -20037508.34,
tile_origin_upper_left_y: 20037508.34
然后,您将拥有从 500 到 505 而不是 0 到 5 的图块。
如果您使用的是其他人的图块,而您不知道这三个数字,则无法对这些图块进行地理配准。