42 lines
1.1 KiB
JavaScript

/*
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);
}