我試圖蜘蛛我的標記和添加聽衆給他們。 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