在GMap v3中防止覆盖的水平世界包装

时间:2011-10-10 21:04:03

标签: javascript google-maps-api-3

我正在尝试使用Google Maps API V3制作一个不水平换行的地图。因此,反复一次又一次地重复地图,我想只显示一次。我通过为google.maps.ImageMapType提供自定义getTileUrl函数来实现这一目标

但是当我添加叠加层(如标记或多边形)时,它们仍会水平重复。如何阻止叠加层水平重复?

修改以下是展示问题的图片: World-wrapping overlays

我在考虑以某种方式修改google.maps.Projection.fromLatLngToPoint()方法,但由于某些原因,大多数时候似乎没有这种方法。

1 个答案:

答案 0 :(得分:2)

到目前为止,我已经找到了一种方法。解决方案不是修改后的投影,而是受到this question about limiting panning in Google Maps的启发。

它并不像我想的那么干净,但它有效:

  1. 不是在缩放级别0开始(将完整的地图显示为一个地图图块),而是从更高的缩放级别开始。在我的情况下,我从第3级开始。这样,“想象的”整个世界变得更大,将重复的叠加层移动得更远: great distance between repeating overlays

  2. 限制缩放级别,因此即使拥有最低缩放级别,视口也不包含两个重复叠加层。这可以通过将地图上的minZoom选项设置为所需级别来完成。 viewport does not contain two repeating overlays

  3. 限制平移/拖动地图,这样您就无法移出所需区域。请参阅my answer on the limit panning question

  4. 这样,重复的叠加仍然存在,但你永远无法看到它们,因为你无法触及它们