X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/dbb3be0a748de0be8075d78de42199d80aaf3a47..0f3f3ead0a573fef31118196f6dea17841dd0ac8:/app/assets/javascripts/user.js?ds=sidebyside diff --git a/app/assets/javascripts/user.js b/app/assets/javascripts/user.js index 24506b4b4..f6c415185 100644 --- a/app/assets/javascripts/user.js +++ b/app/assets/javascripts/user.js @@ -1,6 +1,7 @@ //= require leaflet.locatecontrol/src/L.Control.Locate $(document).ready(function () { + var defaultHomeZoom = 12; var map, marker, deleted_lat, deleted_lon; if ($("#map").length) { @@ -37,13 +38,17 @@ $(document).ready(function () { .addClass("control-button"); if (OSM.home) { - map.setView([OSM.home.lat, OSM.home.lon], 12); + map.setView([OSM.home.lat, OSM.home.lon], defaultHomeZoom); } else { map.setView([0, 0], 0); } if ($("#map").hasClass("set_location")) { - marker = L.marker([0, 0], { icon: OSM.getUserIcon() }); + marker = L.marker([0, 0], { + icon: OSM.getUserIcon(), + keyboard: false, + interactive: false + }); if (OSM.home) { marker.setLatLng([OSM.home.lat, OSM.home.lon]); @@ -63,6 +68,11 @@ $(document).ready(function () { deleted_lat = null; deleted_lon = null; respondToHomeUpdate(); + }).on("moveend", function () { + var lat = $("#home_lat").val(), + lon = $("#home_lon").val(); + + $("#home_show").prop("disabled", isCloseEnoughToMapCenter(lat, lon)); }); $("#home_lat, #home_lon").on("input", function () { @@ -75,7 +85,7 @@ $(document).ready(function () { var lat = $("#home_lat").val(), lon = $("#home_lon").val(); - map.panTo([lat, lon]); + map.setView([lat, lon], defaultHomeZoom); }); $("#home_delete").click(function () { @@ -87,6 +97,14 @@ $(document).ready(function () { deleted_lon = lon; respondToHomeUpdate(); }); + + $("#home_undelete").click(function () { + $("#home_lat").val(deleted_lat); + $("#home_lon").val(deleted_lon); + deleted_lat = null; + deleted_lon = null; + respondToHomeUpdate(); + }); } else { $("[data-user]").each(function () { var user = $(this).data("user"); @@ -116,6 +134,13 @@ $(document).ready(function () { } } + function isCloseEnoughToMapCenter(lat, lon) { + var inputPt = map.latLngToContainerPoint([lat, lon]), + centerPt = map.latLngToContainerPoint(map.getCenter()); + + return centerPt.distanceTo(inputPt) < 10; + } + function updateAuthUID() { var provider = $("select#user_auth_provider").val();