diff --git a/code/oms.js b/code/oms.js index 7f89cd3d..9d3d4c78 100644 --- a/code/oms.js +++ b/code/oms.js @@ -21,5 +21,21 @@ window.setupOMS = function() { 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); +} + + diff --git a/plugins/bookmarks-by-zaso.user.js b/plugins/bookmarks-by-zaso.user.js index 6ecbab3d..b930bb53 100644 --- a/plugins/bookmarks-by-zaso.user.js +++ b/plugins/bookmarks-by-zaso.user.js @@ -1018,8 +1018,7 @@ iconSize: [30,40] }) }); - window.oms.addMarker(star); - star.on('remove', function() { window.oms.removeMarker(star); }); + window.registerMarkerForOMS(star); star.on('spiderfiedclick', function() { renderPortalDetails(guid); }); window.plugin.bookmarks.starLayers[guid] = star; diff --git a/plugins/draw-tools.user.js b/plugins/draw-tools.user.js index 2dd68fe8..fab1dd0f 100644 --- a/plugins/draw-tools.user.js +++ b/plugins/draw-tools.user.js @@ -258,10 +258,7 @@ window.plugin.drawTools.import = function(data) { var extraMarkerOpt = {}; if (item.color) extraMarkerOpt.icon = window.plugin.drawTools.getMarkerIcon(item.color); layer = L.marker(item.latLng, L.extend({},window.plugin.drawTools.markerOptions,extraMarkerOpt)); - window.oms.addMarker(layer); - layer.on('remove', function() { - window.oms.removeMarker(layer); - }); + window.registerMarkerForOMS(layer); break; default: console.warn('unknown layer type "'+item.type+'" when loading draw tools layer'); @@ -431,10 +428,7 @@ window.plugin.drawTools.boot = function() { window.plugin.drawTools.save(); if(layer instanceof L.Marker) { - window.oms.addMarker(layer); - layer.on('remove', function() { - window.oms.removeMarker(layer); - }); + window.registerMarkerForOMS(layer); } }); diff --git a/plugins/player-tracker.user.js b/plugins/player-tracker.user.js index 30e57589..fe037925 100644 --- a/plugins/player-tracker.user.js +++ b/plugins/player-tracker.user.js @@ -373,7 +373,7 @@ window.plugin.playerTracker.drawData = function() { } m.addTo(playerData.team === 'RESISTANCE' ? plugin.playerTracker.drawnTracesRes : plugin.playerTracker.drawnTracesEnl); - window.oms.addMarker(m); + window.registerMarkerForOMS(m); // jQueryUI doesn’t automatically notice the new markers if (!isTouchDev) { @@ -421,15 +421,6 @@ window.plugin.playerTracker.handleData = function(data) { plugin.playerTracker.processNewData(data); if (!window.isTouchDevice()) plugin.playerTracker.closeIconTooltips(); - plugin.playerTracker.drawnTracesEnl.eachLayer(function(feature) { - if(feature instanceof L.Marker) - window.oms.removeMarker(feature); - }); - plugin.playerTracker.drawnTracesRes.eachLayer(function(feature) { - if(feature instanceof L.Marker) - window.oms.removeMarker(feature); - }); - plugin.playerTracker.drawnTracesEnl.clearLayers(); plugin.playerTracker.drawnTracesRes.clearLayers(); plugin.playerTracker.drawData();