当标记在Google Maps V3上的外部视图时,InfoWindow无法正确打开链接

时间:2016-01-12 13:57:43

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

我在谷歌地图上制作了一个聚集标记的地图。制作人有一个听众设置缩放,然后将地图居中,然后打开一个信息窗口。

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

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

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

问题是如果我按下列表中的链接:如果制造商没有在地图上显示,则infowindow打开不正确(位置错误并且图标重叠)并且地图不居中(地图没有'甚至显示标记的正确位置。) like this
奇怪的是,如果我在显示标记的实际位置的点处缩小地图,则InfoWindow在正确的标记上正确设置,如果我再次按下相同的链接就没有问题,就像在第二张图像中一样。
No problem

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

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

1 个答案:

答案 0 :(得分:1)

标记不会被添加到地图中,直到它被&#34; unclustered&#34;,缩放到它然后&#34;点击&#34;在上面。缩放必须高于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)