【问题标题】:Leaflet: Are custom zoom levels possible?传单:是否可以自定义缩放级别?
【发布时间】:2015-03-25 07:49:29
【问题描述】:

是否可以在使用 Stamen Toner-lite tiles 的 Leaflet 地图上设置中间(2.5、3.5、4.5 等)缩放级别?这是我目前计算缩放级别的代码:

leafletmap.on('zoomstart', function (d){
    targetZoom = leafletmap.getZoom(); //Grabs whatever current zoom level is
    targetZoom = targetZoom +.5; //Adds .5
    leafletmap.setZoom(targetZoom); //Sets new value to zoom level
    console.log(targetZoom); //Consoles out new value
});

我尝试只在代码中添加 .5,但我得到了一个 too much recursion 错误,所以我猜这并不是那么简单。非常感谢任何帮助或指导!

【问题讨论】:

    标签: javascript maps leaflet


    【解决方案1】:

    在 1.0.0 版本中,Leaflet 引入了部分缩放:

    https://leafletjs.com/examples/zoom-levels/#fractional-zoom

    在此之前,地图的缩放级别只能是整数 (0、1、2 等);但现在你可以使用像 1.5 这样的小数 或 1.25。

    ...

    如果将 zoomSnap 的值设置为 0.5,则 地图将为 0、0.5、1、1.5、2 等等。

    如果您将值设置为 0.1,则地图的有效缩放级别将为 0, 0.1、0.2、0.3、0.4 等等。

    以下示例使用 0.25 的 zoomSnap 值:

    var map = L.map('map', {
      zoomSnap: 0.25 
    });
    

    如您所见,Leaflet 只会加载缩放级别为 0 或 1,并将根据需要对其进行缩放。

    Leaflet 会将缩放级别捕捉到最接近的有效级别。为了 例如,如果您有 zoomSnap: 0.25 并且您尝试这样做 map.setZoom(0.8),缩放将迅速回到 0.75。同样的事情发生 使用 map.fitBounds(bounds),或者在 触摸屏。

    【讨论】:

      【解决方案2】:

      直截了当:这是不可能的。您需要渲染自己的平铺图像,在您自己的服务器上运行它们并为 Leaflet 创建您自己的坐标参考系统 (CRS) 扩展。如果你看看常规的瓦片集是如何制作的,你就会明白为什么。

      花蕊瓷砖申请网址:

      http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png
      

      请求切片时,{z} 将替换为地图的当前缩放级别。 {x}{y} 是图块的坐标。 {s} 将替换为子域。因此,如果您在坐标 1,1 处的缩放级别为 6,它将尝试加载:

      http://a.tile.stamen.com/toner/6/1/1.png
      

      现在,如果您可以(但不能)缩放到 6.5 级,它将尝试加载:

      http://a.tile.stamen.com/toner/6.5/1/1.png
      

      那些简单的图块在 stamen 服务器上不存在,因此返回 404 表示未找到文件。您可以使用这些链接自己尝试:

      http://a.tile.stamen.com/toner/6/1/1.png

      http://a.tile.stamen.com/toner/6.5/1/1.png

      http://a.tile.stamen.com/toner/7/1/1.png

      所以这永远不会奏效。如前所述,您可以运行自己的图块服务器,渲染您自己的图块图像并设置您自己的L.CRS。你可能也想看看这个问题:Adding an extra zoom levels in Leaflet Maps

      【讨论】:

      • 感谢@iH8 的直截了当的回答。我看到了上一个问题并做了一些研究,但我不确定过去两年情况是否发生了变化。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多