【问题标题】:InfoWindow doesn't open correctly with link when marker is outside view on Google Maps V3当标记在 Google Maps V3 上的视图之外时,InfoWindow 无法通过链接正确打开
【发布时间】:2016-01-12 13:57:43
【问题描述】:

我用谷歌地图上的标记制作了一张地图。制作者有一个监听器来设置缩放,然后将地图居中,然后打开一个信息窗口。

在 for 循环中,我创建了一个列表,其中包含指向每个看起来像这样的标记的链接

<a href="javascript:google.maps.event.trigger(markers['+i+'],\'click\');">' + item.nombre + '</a>

如果我单击地图上的标记,则没有问题:地图居中并显示信息窗口。

问题是如果我按列表中的链接:如果制造商未在地图上显示,则信息窗口打开不正确(位置错误并与图标重叠)并且地图未居中(地图没有'甚至显示标记的正确位置)。

奇怪的是,如果我在显示标记的实际位置的点缩小地图,则 InfoWindow 在正确的标记上设置正确,如果我再次按下相同的链接就没有问题,就像在第二张图像中一样。

Here is the jsfiddle,如果我点击 Playa Maqui Lodge,然后点击使用 Firefox 43 的任何其他链接,错误可能会重现

那么,我错过了什么?为什么地图没有以链接为中心?

【问题讨论】:

标签: javascript google-maps google-maps-api-3


【解决方案1】:

标记在“未聚集”之前不会添加到地图中,放大到它然后“单击”它。缩放必须高于 markerClusterer 的 maxZoom。

set the markerClusterer maxZoom to 15 或更改您的代码以放大靠近标记。

google.maps.event.addListener(marker, 'click', function() {
  infowindow.close();
  map.setZoom(21);
  map.setCenter(this.getPosition());
  infowindow.setContent(this.html);
  infowindow.open(map, this);
});

proof of concept fiddle

看起来使用自定义信息窗口计算锚点存在问题(我之前没有看到,因为您没有提供自定义标记)。如果您不使用InfoWindow.open(map, anchor) 语法并手动设置InfoWindow 的pixelOffsetposition,它会起作用。

var infowindow = new google.maps.InfoWindow({pixelOffset:new google.maps.Size(0,-35)});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.close();
  map.setZoom(16);
  map.setCenter(this.getPosition());
  infowindow.setContent(this.html);
  infowindow.setPosition(this.getPosition());
  infowindow.open(map);
});

updated proof of concept fiddle (with custom marker)

【讨论】:

  • 感谢您的反馈。我只是在 jsFiddle 上复制您的代码并添加更多标记并且错误仍然存​​在。我刚刚用问题的 jsFiddle 链接更新了问题
猜你喜欢
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 2010-12-06
  • 2010-12-24
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
相关资源
最近更新 更多