Google Maps Spiderfying Markers & Adding Listeners

末鹿安然 提交于 2019-12-06 21:31:32

The oms.addListener() does not act the same way as google.maps.event.addListener(). So I somehow made it to work by using the original google.maps.event.addListener() instead of oms.addListener() inside a for loop. Like so:

var infoWindows = [];

function closeInfoWindows(){
    var i = infoWindows.length;
    while(i--){
        infoWindows[i].close();
    }
}

function newMarker(map, response, oms){
var loc = new google.maps.LatLng(response.latlong[0], response.latlong[1]);
var marker = new google.maps.Marker({
    position: loc,
    title: response.title
});
oms.addMarker(marker);
var WindowOptions = { content:'some desc...'};    
var InfoWindow = new google.maps.InfoWindow(WindowOptions);
infoWindows.push(InfoWindow);
google.maps.event.addListener(marker, 'click', function() {
    closeInfoWindows();
    InfoWindow.open(carte, marker); // or this instead of marker
});
return marker;
}


for (var i = 0 ; i < response.length; i++) {
        markers.push(newMarker(map, response[i], oms));
    };

Extra credit to: geocodezip and All infowindows have same data

A working example could be found here (my app): concert-dacote.com

Here is another approach to adding listeners to your spiderfiered markers with NO FOR LOOP NEEDED:

var oms = new OverlappingMarkerSpiderfier (...) ;

// Create this function
function addClickListenerToMarker(marker, onClickListener) {
    oms.addListener('click', function (markerArg, eventArg) {
        if (marker == markerArg)
            onClickListener(marker, eventArg);
    });
}

// Add a click listener to your marker
var myMarker = ...
addClickListenerToMarker(myMarker, function (marker, event) {
    alert('I have been clicked');
});
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!