X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/5384ee236cfbb1a33e018f9b85c63d765961a479..1f7bd08f4a8a6a626a0c1d7ed60f2dcd6a6801e8:/app/assets/javascripts/index/note.js.erb diff --git a/app/assets/javascripts/index/note.js.erb b/app/assets/javascripts/index/note.js.erb index 8c2ab5c56..2c9e42210 100644 --- a/app/assets/javascripts/index/note.js.erb +++ b/app/assets/javascripts/index/note.js.erb @@ -37,10 +37,20 @@ OSM.Note = function (map) { } page.pushstate = page.popstate = function (path) { - OSM.loadSidebarContent(path, page.load); + OSM.loadSidebarContent(path, function() { + initialize(function() { + var data = $('.details').data(), + latLng = L.latLng(data.coordinates.split(',')); + if (!map.getBounds().contains(latLng)) moveToNote(); + }); + }); + }; + + page.load = function() { + initialize(moveToNote); }; - page.load = function () { + function initialize(callback) { content.find("input[type=submit]").on("click", function (e) { e.preventDefault(); var data = $(e.target).data(); @@ -61,16 +71,11 @@ OSM.Note = function (map) { content.find("textarea").val('').trigger("input"); - var data = $('.details').data(); - if (!window.location.hash) { - var coords = data.coordinates.split(','); - OSM.route.moveListenerOff(); - map.once('moveend', OSM.route.moveListenerOn); - map.getZoom() > 15 ? map.panTo(coords) : map.setView(coords, 16); - } + var data = $('.details').data(), + latLng = L.latLng(data.coordinates.split(',')); if (!map.hasLayer(halo)) { - halo = L.circleMarker(data.coordinates.split(','), { + halo = L.circleMarker(latLng, { weight: 2.5, radius: 20, fillOpacity: 0.5, @@ -80,14 +85,28 @@ OSM.Note = function (map) { } if (map.hasLayer(currentNote)) map.removeLayer(currentNote); - currentNote = L.marker(data.coordinates.split(','), { + currentNote = L.marker(latLng, { icon: noteIcons[data.status], opacity: 1, clickable: true }); + map.addLayer(currentNote); + + if (callback) callback(); }; + function moveToNote() { + var data = $('.details').data(), + latLng = L.latLng(data.coordinates.split(',')); + + if (!window.location.hash || window.location.hash.match(/^#?c[0-9]+$/)) { + OSM.router.withoutMoveListener(function () { + map.setView(latLng, 15, {reset: true}); + }); + } + } + page.unload = function () { if (map.hasLayer(halo)) map.removeLayer(halo); if (map.hasLayer(currentNote)) map.removeLayer(currentNote);