当nowrap被使用时设置地图边界/边缘

时间:2016-07-22 15:48:39

标签: leaflet bounds

有没有办法调整地图的边界,以便俄罗斯的右边缘不会出现在左边?您可以在图像中看到我有一个覆盖俄罗斯的MultiPolygon区域,但地图和叠加层是分开的。如果可能的话,我希望这个国家的那一小块能够在右边!

俄罗斯边缘地图的错误一面:

enter image description here

2 个答案:

答案 0 :(得分:1)

我能想到的解决方法是使用maxBounds属性,您可以将默认边界稍微向右移动,同时使用minZoom: 1。如果在外面缩小远/平移,这不会阻止用户在短时间内多次看到这个世界,正如它所说的那样:

  

...当他试图在视图外平移时将用户弹回

var map = L.map('map',{ 
  maxBounds:[ [-90, -160], [90, 200] ],
  minZoom: 1
  }).setView([66.058, 189.459], 4);

Demo

答案 1 :(得分:0)

欢迎来到SO!

如果您的多边形是蓝色区域,那么我恐怕您必须重构您的数据才能达到您想要的效果(将左侧区域移到右侧,就像它被缝合回俄罗斯主要土地一样)。

您的数据(可能是GeoJSON?)包含一个单独的多边形,其经度在[-180,-120]范围内。 Leaflet别无选择,只能将其显示在地图的左侧,与noWrap选项无关。

因此,您需要深入挖掘数据,并将360度经度添加到此多边形的每个节点,以便它们现在位于[180,300]范围内。

或以某种方式介绍"检测"在你的代码中,对于边界和/或中心很远的形状自动执行经度加法(让我们说在[-180,-120]经度范围内)。 Leaflet不会自动开箱即用。

注意:noWrap选项适用于您的图块层,不能在其外部加载图块" central"世界(为了避免显示世界的多个副本)。但是在你的情况下,你想要在世界的相邻副本上显示俄罗斯/西伯利亚的一部分",所以你可能想要删除该选项,或者你将拥有您的多边形不会位于任何底图上。