2016-01-12 156 views
0

我制作了一个地图,其中标记聚集在Google地图上。制作人员有一位设置缩放的听众,然后将地图居中并打开infowindow。当Google地图V3上的标记在外部标记上时,InfoWindow无法正常打开并显示链接

在for循环中我做了链接,每一个看起来像这样的

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

标记列表,如果我点击地图上的标记是没有问题的:位于地图中心和信息窗口显示。

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

Here is the jsfiddle,如果我点击普拉亚马基洛奇,然后使用Firefox 43

因此,任何其他链接,我缺少什么错误可以重现?为什么地图不是以链接为中心的?

+0

请提供[最小的,完整的,经过测试和读示例](http://stackoverflow.com/help/mcve),演示了这个问题。 – geocodezip

+0

'未捕获的ReferenceError:项目未定义# – geocodezip

+0

问题已更新! (: – FeanDoe

回答

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)

+0

感谢您的反馈意见,我只是将您的代码复制到jsFiddle并添加更多标记,并且错误仍然存​​在。我刚刚更新了带有问题链接到jsFiddle的问题 – FeanDoe

相关问题