我正在尝试 Spiderfy 我的标记并向它们添加听众。Spidefying 工作正常,这意味着我得到了重叠的标记,但问题是我似乎无法弄清楚如何将侦听器添加到这些标记。换句话说,我尝试了以下方法:
- 把它
oms.addListener()
放在一个循环中。这样,在单击标记时,会infoWindow
在同一个标记上打开所有 s,这并不令人愉快。 oms.addListener()
像 OMS Git repo 上的示例一样将循环置于外部 。https://github.com/jawj/OverlappingMarkerSpiderfier/blob/gh-pages/demo.html。这样,所有标记都具有相同的标记infoWindow
,即循环中的最后一个标记。
这是我的代码:
var iw = new google.maps.InfoWindow();
var oms = new OverlappingMarkerSpiderfier(carte, {keepSpiderfied:true});
oms.addListener('click', function(marker){
iw.setContent(content);
iw.open(carte, marker);
});
var markers =[];
var bounds = new google.maps.LatLngBounds();
if (response.length != 0) {
for (var i = 0 ; i < response.length; i++) {
var loc = new google.maps.LatLng(response[i].latlong[0], response[i].latlong[1]);
bounds.extend(loc);
var lemarqueur = new google.maps.Marker({
position: loc,
title: response[i].title
});
content = '<table><tr><td><img src="'
+response[i].image+'"/></td><td><p style="font-size: 13px">'
+response[i].title+'</p> <p style="font-size: 10px"><b>Artists:</b> '
+response[i].artist+'<br><b>Date:</b> '+response[i].startDate+'<br>'
+response[i].address.name +' '+response[i].address.street + '<br>'
+response[i].address.postalcode +', '+response[i].address.city +', '
+response[i].address.country
+'<br><a target="_blank" href ='
+response[i].url+'>More info</a></p></td></tr></table>';
oms.addMarker(lemarqueur);
markers.push(lemarqueur);
};
carte.fitBounds(bounds);
var markerCluster = new MarkerClusterer(carte, markers);
markerCluster.setMaxZoom(15);
markerCluster.setGridSize(40);
google.maps.event.addDomListener(window, 'load', initialiser);
所以我想知道我应该把addListener()
块放在哪里?
这是我之前在循环中使用的 using google.maps.event.addListener()
,效果很好:
google.maps.event.addListener(lemarqueur, 'click', function() {
InfoWindow.open(carte, lemarqueur);
});
我希望问题足够清楚,
在此先感谢。