leaflet.js:设置每层最大缩放级别?

时间:2016-08-14 22:13:01

标签: maps leaflet cartodb

我正在使用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上的相同选项设置全局最大缩放,但这显然不是我想要的。

1 个答案:

答案 0 :(得分:3)

如您所知,地图maxZoom选项限制了导航(用户无法缩放高于指定级别)。

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

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

  

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

例如,对于街道图层,您可以将maxNativeZoom设置为18,将maxZoom设置为21。

现在,如果您需要不同的导航限制,具体取决于地图当前显示的内容(例如,如果您在图层控件中将2个图块层作为底图,以便它们不会同时显示),则可以使用{{3} }当用户切换底图时动态更改该限制。

相关问题