2

我正在使用带有两个地图基础图层的 CartoDB.js(3.15.9,基于 Leaflet.js),一个来自 CartoDB 的街道图层和一个来自 MapQuest 的卫星图层:

  var options = {
    center: [53.2, -2.0],
    zoom: 6
  };
  var map = new L.Map('map', options);
  var streetLayer = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
     attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors</a>'
  }).addTo(map);
  L.control.layers({
    'Map': streetLayer, 
    'Satellite': MQ.satelliteLayer()
  }, null, {'collapsed': false, 'position': 'bottomleft'}).addTo(map);

我可以设置每层的最大缩放级别吗?我希望街道图层的最大缩放为 18,卫星图层的最大缩放为 21(这是因为它们有不同的最大缩放级别可用)。

我尝试设置maxZoom: 18对象streetLayer,但这似乎没有做任何事情。相同的选项options设置全局最大缩放,但这显然不是我想要的。

4

1 回答 1

5

如您所见,地图的maxZoom选项限制了导航(用户不能放大到高于指定级别)。

在切片图层上,该maxZoom选项定义切片图层在地图上的更新级别。通过该级别,切片图层不再更新,即不再下载和显示切片。

您可能有兴趣将它与以下maxNativeZoom选项结合使用:

平铺源可用的最大缩放数。如果指定,则所有高于缩放级别的图块maxNativeZoom将从maxNativeZoom级别加载并自动缩放。

例如,对于您的街道图层,您可以设置maxNativeZoom为 18 和maxZoom21。

现在,如果您想要根据地图当前显示的内容不同的导航限制(例如,如果您将 2 个切片图层作为图层控件中的底图,以便它们不会同时显示),您可以map.setMaxZoom()在用户切换底图。

于 2016-08-15T04:12:10.067 回答