【问题标题】:Prevent horizontal world-wrapping of overlays in GMap v3防止 GMap v3 中覆盖层的水平世界环绕
【发布时间】:2011-12-04 20:13:14
【问题描述】:

我正在尝试使用 Google Maps API V3 制作不水平环绕的地图。所以不是一次又一次地并排重复地图,我只想显示一次。我通过为 google.maps.ImageMapType 提供自定义 getTileUrl 函数来实现这一点

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

编辑这是一个演示问题的图像:

我正在考虑以某种方式修改 google.maps.Projection.fromLatLngToPoint() 方法,但由于某种原因,大部分时间似乎都不可用。

【问题讨论】:

    标签: javascript google-maps-api-3


    【解决方案1】:

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

    它并不像我想要的那样干净,但它确实有效:

    1. 不要从缩放级别 0 开始(将完整的地图显示为一个地图图块),而是从更高的缩放级别开始。就我而言,我从第 3 级开始。这样,“想象中的”整个世界就更大了,将重复的叠加层移得更远:

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

    3. 限制平移/拖动地图,因此您无法移出所需区域。见my answer on the limit panning question

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

    【讨论】:

    • 需要相同的任务:限制地图仅显示单个实例。删除地图的重绘。有一些问题: 1. 如果我们有最小缩放,我们真的需要 3. 选项吗?限制在哪个范围内仅显示整个世界但不再重复? 2.如何为地图选择最小缩放?对于我的网站,我需要地图占据其他控件空间的所有剩余空间。因此,最小缩放将根据显示器屏幕分辨率而有所不同。或者至少在画布大小上。
    • 1.如果您不限制平移,您仍然可以平移直到到达重复标记。虽然大多数人不会在虚无中四处游荡,但通常不会有问题。但我仍然想阻止它发生。 2. 我刚刚在我拥有的最大屏幕上试了试,并认为这已经足够了。最后我想我选择了 minzoom 5。
    • 1.对我来说,这似乎是一个正常的情况。因为用户可以将中心设置为 180 经度。右边是北美,左边是澳大利亚。在你的情况下,你限制这是不可能的?或者你用什么来限制(哪些边界)? 2.但在这种情况下,法律决议将少于完整地图。用户将无法查看完整地图。
    • 1.所有这些都不适用于使用默认世界地图的场景。仅当您有一个不重复的矩形地图时才有意义。就像问题中的图像一样。 2. 你是对的。对我来说这不是问题,所以我不知道你怎么能自动做到这一点。对不起。
    • @HenningJ 您能否详细说明解决方案的第 1 部分?这是否涉及以任何给定的缩放级别简单地加载备用图块?例如,在缩放级别 3 时加载缩放级别 0 的图块?我真的很想看看这是如何在行动中完成的。我尝试加载较低缩放级别的图块(如 0 级图块作为 3 级图块),但它从左上角开始加载图块。不知道如何将其居中...如果您可以提出一个 JSFiddle 示例,将不胜感激。
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多