minzoom 和 maxzoom 在 Mapbox-GL-JS 中到底做了什么?

What do minzoom and maxzoom do in Mapbox-GL-JS exactly?

矢量图块源的 minzoommaxzoom 属性以及基于矢量的图层在 Mapbox-GL-JS 样式中的具体作用是什么? documentation有点短。

在矢量图块源中

举个例子:

"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 and/or 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。