我试图蜘蛛我的标记和添加听众给他们。 Spidefying的工作正常,这意味着我得到的重叠标记spiderfied但问题是,我似乎无法计算如何添加监听器到这些标记。换句话说,我尝试了以下内容:谷歌地图Spiderfying标记和添加听众
- 将
oms.addListener()
置于循环中。这样,一旦点击标记就会在同一个标记上打开所有infoWindow
s,这并不令人愉快。 - 将
oms.addListener()
置于循环之外,就像OMS Git回购示例一样。 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()
块?
这是我已经在循环使用前,使用google.maps.event.addListener()
,它工作得很好:
google.maps.event.addListener(lemarqueur, 'click', function() {
InfoWindow.open(carte, lemarqueur);
});
我希望这个问题是清楚的是,在提前
感谢。
这不是Spiderifier的问题,它是一个可以通过函数闭包(创建标记函数)很容易解决的问题。 http://stackoverflow.com/questions/4897316/google-maps-api-v3-infowindow-all-infowindows-displaying-same-content - http://stackoverflow.com/questions/3711700/all-infowindows-have-同样的数据 – geocodezip
@geocodezip - 其实我的代码有函数闭包,这意味着它像:'function createMarker(); for(){marker = createMarker;}'。但是为了简单起见,我在这里贴了这个东西,因为还有其他的东西在这里被忽略。 – Hamed
@geocodezip - 如果您可以请提供一个Spiderfying示例,其中有一个函数闭包并循环了一些JSON数据。这将非常感激。 – Hamed