Mapbox-GL-JS中的minzoom和maxzoom具体是做什么的?

15
< p >在 Mapbox-GL-JS 样式中,矢量切片源和基于矢量的图层上的 < code >minzoom 和 < code >maxzoom 属性具体是用来做什么的?文档有点简略。

1个回答

27

在矢量切片源中

我们来看一个例子:

"mytiles": {
    "type": "vector",
    "tiles": ["http://localhost/tiles/{z}/{x}/{y}.pbf"],
    "minzoom": 7,
    "maxzoom": 12
}

这意味着:

  • 如果在http://localhost/tiles/tiles.json(我想是)有一个TileJSON文件,则忽略其minzoommaxzoom属性。
  • 永远不要尝试获取范围在7-12之外的任何瓦片。
  • 如果需要例如缩放级别为13的瓦片,则获取缩放级别为12对应的瓦片,并进行过度缩放。
  • 如果需要例如缩放级别为6的瓦片,则根本不显示瓦片。不会出现下放缩。

如果源中未定义minzoom和/或maxzoom属性,则从TileJSON中使用等效属性(如果可用)。否则,假定瓦片可以在请求的任何缩放级别上使用,且没有过度缩放发生。(如果实际上不存在瓦片,则不显示。)

在一个矢量层中

让我们以上面的源为例:

{
    "id": "mylayer",
    "source": "mytiles",
    "source-layer": "mytiles-layer",
    "type": "fill",
    "minzoom": 10,
    "maxzoom": 14
}
这意味着:
  • 即使有可用的瓦片,也不要在缩放级别小于10时显示此图层。
  • 尝试在缩放级别10.0-13.9上显示此图层,必要时在13.0和13.9之间超级缩放瓦片。
  • 不要在缩放级别14+上显示此图层。

如果未定义 minzoom / maxzoom 属性,则该图层将尝试在源的缩放范围内的任何给定缩放下显示。

关于地图对象

为了完整起见:在实例化Map对象时:

   const map = new mapboxgl.Map({
     container: 'map,
     style,
     minZoom: 8, // note the camel-case
     maxZoom: 15
   });

这意味着:

  • 不允许用户缩小到少于8,或者放大到超过15。

听起来就是这样,除了最后一点,我的图层应该显示为13.9而不是14,至少在我的测试中是这样的。map.setZoom(14)会隐藏该图层。 - AndrewHarvey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接