42 lines
1.1 KiB
JavaScript
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);
|
|
}
|
|
|
|
|