Javascript 传单:是否可以自定义缩放级别?

Javascript 传单:是否可以自定义缩放级别?,javascript,maps,leaflet,Javascript,Maps,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(targetZo

是否可以在正在使用的传单地图上设置中间(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,但是我得到了一个
太多的递归
错误,所以我猜不是那么简单。非常感谢任何帮助或指导

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

请求雄蕊花砖的URL:

http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png
请求平铺时,
{z}
将替换为地图的当前zoomlevel。
{x}
{y}
是磁贴的坐标。
{s}
将替换为子域。因此,如果在坐标1,1处的zoomlevel 6,它将尝试加载:

http://a.tile.stamen.com/toner/6/1/1.png
http://a.tile.stamen.com/toner/6.5/1/1.png
现在,如果您可以(但不能)缩放到6.5级,它将尝试加载:

http://a.tile.stamen.com/toner/6/1/1.png
http://a.tile.stamen.com/toner/6.5/1/1.png
这些简单平铺在stamen服务器上不存在,因此返回404 for file not found。您可以自己尝试,只需使用以下链接:


所以这永远不会奏效。如前所述,您可以运行自己的磁贴服务器,渲染自己的磁贴图像,并设置自己的
L.CRS
。您可能也想看看这个问题:

在1.0.0版中,传单引入了分数缩放:

在此之前,地图的缩放级别只能是整数 (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等等

以下示例使用的zoomSnap值为0.25:

var map = L.map('map', {
  zoomSnap: 0.25 
});
如您所见,传单将仅加载缩放级别为0或0的平铺 1,并将根据需要对其进行缩放

传单将缩放级别捕捉到最近的有效级别。对于 例如,如果您有zoomSnap:0.25,并尝试执行以下操作 设置缩放(0.8),缩放将恢复到0.75。同样的情况也会发生 使用map.fitBounds(bounds),或在屏幕上结束收缩缩放手势时 触摸屏


谢谢你直截了当的回答@iH8。我看到了前面的问题并做了一些研究,但我不确定在过去的两年里情况是否发生了变化。非常感谢!