X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/b65ad205d17014744d43b8a6ac12fe0ab67e8fb0..c4f3d1bd32315abdcf057cae586bbf76eb6263b9:/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 2a2599a3c..18000deb0 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 () { + page.load = function() { + initialize(moveToNote); + }; + + function initialize(callback) { content.find("input[type=submit]").on("click", function (e) { e.preventDefault(); var data = $(e.target).data(); @@ -62,13 +72,7 @@ OSM.Note = function (map) { content.find("textarea").val('').trigger("input"); var data = $('.details').data(), - latLng = data.coordinates.split(','); - - if (!window.location.hash || window.location.hash.match(/^#?c[0-9]+$/)) { - OSM.router.moveListenerOff(); - map.once('moveend', OSM.router.moveListenerOn); - map.getZoom() > 15 ? map.panTo(latLng) : map.setView(latLng, 16); - } + latLng = L.latLng(data.coordinates.split(',')); if (!map.hasLayer(halo)) { halo = L.circleMarker(latLng, { @@ -86,9 +90,23 @@ OSM.Note = function (map) { 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.moveListenerOff(); + map.once('moveend', OSM.router.moveListenerOn); + map.setView(latLng, 15, {reset: true}); + } + } + page.unload = function () { if (map.hasLayer(halo)) map.removeLayer(halo); if (map.hasLayer(currentNote)) map.removeLayer(currentNote);