传单:是否可以自定义缩放级别
Leaflet: Are custom zoom levels possible?
是否可以在使用雄蕊碳粉精简版图块的传单地图上具有中间(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
错误,所以我猜它不是那么简单。任何帮助或指导将不胜感激!
在 1.0.0 版本中,Leaflet 引入了分数缩放:
https://leafletjs.com/examples/zoom-levels/#fractional-zoom
在此之前,地图的缩放级别只能是一个整数 (0、1、2 等);但是现在您可以使用小数,例如 1.5 或 1.25。
。
如果将缩放捕捉的值设置为 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 或 1,并将根据需要扩展它们。
传单会将缩放级别捕捉到最接近的有效级别。为 例如,如果您有 zoomSnap:0.25 并且您尝试执行 map.setZoom(0.8),缩放将回扣到 0.75。同样的情况也会发生 使用 map.fitBounds(bounds),或在 触摸屏。
直截了当地说:这是不可能的。您需要渲染自己的切片图像,在自己的服务器上运行它们,并为 Leaflet 创建自己的坐标参考系统 (CRS) 扩展。如果您查看常规图块集的制作方式,您就会明白原因。
用于请求雄蕊磁贴的 URL:
http://{s}.tile.stamen.com/toner/{z}/{x}/{y}.png
请求切片时,{z}
将替换为地图的当前缩放级别。{x}
和{y}
是磁贴的坐标。{s}
将替换为子域。因此,如果您在坐标 6,1 处的缩放级别为 1,1,它将尝试加载:
http://a.tile.stamen.com/toner/6/1/1.png
现在,如果您可以(但不能)缩放到6.5级,它将尝试加载:
http://a.tile.stamen.com/toner/6.5/1/1.png
这些简单的图块在雄蕊服务器上不存在,因此返回 404 for 找不到文件。您可以使用以下链接自行尝试:
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
。您可能还想看看这个问题:在传单地图中添加额外的缩放级别
- 使用自定义记号创建可缩放的Y轴
- 传单自定义标记图标缩放
- 传单:是否可以自定义缩放级别
- 如何将自定义缩放控件添加到使用角度谷歌地图构建的地图中
- D3.js如何在水平对数缩放轴上放置自定义标签
- 使用缩放更改谷歌地图自定义图标
- 如何在自定义 ImageMapType 实现中拉伸某些缩放级别的磁贴
- 为jquery图像缩放插件定义一个选择器
- 自定义js函数'无法读取属性'缩放'的未定义'
- 找不到Angular.js Angular拖放自定义回调函数
- 缩放后删除自定义地理标记(加载了传单)
- Jquery自定义旋转木马内的图像缩放模式
- 自定义缩放控制导致最大调用堆栈大小超出错误
- 调整大小自定义图像标记与缩放-谷歌地图API v3
- OpenLayers3自定义地图缩放标记
- HighCharts——自定义重绘处理程序缩放
- 谷歌地图-画布自定义覆盖缩放
- 根据缩放级别在坐标上显示自定义图像
- 在React传单中获取自定义缩放按钮时遇到问题
- 缩放控件与谷歌地图区域中的自定义控件重叠