我在谷歌地图上制作了一个聚集标记的地图。制作人有一个听众设置缩放,然后将地图居中,然后打开一个信息窗口。
在for循环中,我创建了一个列表,其中包含指向每个标记的链接
<a href="javascript:google.maps.event.trigger(markers['+i+'],\'click\');">' + item.nombre + '</a>
如果我点击地图上的标记没有问题:地图居中并显示信息窗口。
问题是如果我按下列表中的链接:如果制造商没有在地图上显示,则infowindow打开不正确(位置错误并且图标重叠)并且地图不居中(地图没有'甚至显示标记的正确位置。)
奇怪的是,如果我在显示标记的实际位置的点处缩小地图,则InfoWindow在正确的标记上正确设置,如果我再次按下相同的链接就没有问题,就像在第二张图像中一样。
Here is the jsfiddle,如果我点击 Playa Maqui Lodge 然后点击使用Firefox 43的任何其他链接,则可以重现该错误
那么,我错过了什么?为什么地图不以链接为中心?
答案 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);
});
看起来使用自定义信息窗计算锚点存在问题(我之前没有看到,因为您没有提供自定义标记)。如果您不使用InfoWindow.open(map, anchor)
语法并手动设置InfoWindow的pixelOffset
和position
,则此功能正常。
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);
});