/* OMS doesn't cancel the original click event, so the topmost marker will get a click event while spiderfying. Also, OMS only supports a global callback for all managed markers. Therefore, we will use a custom event that gets fired for each marker. */ window.setupOMS = function() { window.oms = new OverlappingMarkerSpiderfier(map, { keepSpiderfied: true, legWeight: 3.5, legColors: { usual: '#FFFF00', highlighted: '#FF0000' } }); window.oms.addListener('click', function(marker) { map.closePopup(); marker.fireEvent('spiderfiedclick', {target: marker}); }); window.oms.addListener('spiderfy', function(markers) { map.closePopup(); }); map._container.addEventListener("keypress", function(ev) { if(ev.keyCode === 27) // Esc window.oms.unspiderfy(); }, false); } window.registerMarkerForOMS = function(marker) { marker.on('add', function () { window.oms.addMarker(marker); }); marker.on('remove', function () { window.oms.removeMarker(marker); }); if(marker._map) // marker has already been added window.oms.addMarker(marker); }