]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5598'
authorTom Hughes <tom@compton.nu>
Thu, 6 Feb 2025 20:27:32 +0000 (20:27 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 6 Feb 2025 20:27:32 +0000 (20:27 +0000)
app/assets/javascripts/fixthemap.js
app/assets/javascripts/osm.js.erb
app/assets/javascripts/welcome.js

index 47ba9baf4da556ea4b30dfd38d173575dec960f3..221b5355fe30283b1a960932365f43e06dfba994 100644 (file)
@@ -2,11 +2,7 @@ $(document).ready(function () {
   var params = OSM.params();
 
   var url = "/note/new";
-  if (params.lat && params.lon) {
-    params.lat = parseFloat(params.lat);
-    params.lon = parseFloat(params.lon);
-    params.zoom = params.zoom || 17;
-    url += OSM.formatHash(params);
-  }
+  if (!params.zoom) params.zoom = 17;
+  if (params.lat && params.lon) url += OSM.formatHash(params);
   $(".icon.note").attr("href", url);
 });
index 749cf5b7736767b6e52a59e70c02babac07d9022..030c51a08e6901b0e1ce524f851e2c6430ce6466 100644 (file)
@@ -71,57 +71,52 @@ OSM = {
     }
 
     // Old-style object parameters; still in use for edit links e.g. /edit?way=1234
-    if (params.node) {
-      mapParams.object = { type: "node", id: parseInt(params.node, 10) };
-    } else if (params.way) {
-      mapParams.object = { type: "way", id: parseInt(params.way, 10) };
-    } else if (params.relation) {
-      mapParams.object = { type: "relation", id: parseInt(params.relation, 10) };
-    } else if (params.note) {
-      mapParams.object = { type: "note", id: parseInt(params.note, 10) };
+    for (const type of ["node", "way", "relation", "note"]) {
+      if (params[type]) {
+        mapParams.object = { type, id: parseInt(params[type], 10) };
+      }
     }
 
     var hash = OSM.parseHash(location.hash);
 
     const loc = Cookies.get("_osm_location")?.split("|");
 
+    function bboxToLatLngBounds({ minlon, minlat, maxlon, maxlat }) {
+      return L.latLngBounds([minlat, minlon], [maxlat, maxlon]);
+    }
+
     // Decide on a map starting position. Various ways of doing this.
     if (hash.center) {
       mapParams.lon = hash.center.lng;
       mapParams.lat = hash.center.lat;
       mapParams.zoom = hash.zoom;
     } else if (params.bbox) {
-      var bbox = params.bbox.split(",");
-      mapParams.bounds = L.latLngBounds(
-        [parseFloat(bbox[1]), parseFloat(bbox[0])],
-        [parseFloat(bbox[3]), parseFloat(bbox[2])]);
+      const [minlon, minlat, maxlon, maxlat] = params.bbox.split(",");
+      mapParams.bounds = bboxToLatLngBounds({ minlon, minlat, maxlon, maxlat });
     } else if (params.minlon && params.minlat && params.maxlon && params.maxlat) {
-      mapParams.bounds = L.latLngBounds(
-        [parseFloat(params.minlat), parseFloat(params.minlon)],
-        [parseFloat(params.maxlat), parseFloat(params.maxlon)]);
+      mapParams.bounds = bboxToLatLngBounds(params);
     } else if (params.mlon && params.mlat) {
-      mapParams.lon = parseFloat(params.mlon);
-      mapParams.lat = parseFloat(params.mlat);
-      mapParams.zoom = parseInt(params.zoom || 12, 10);
+      mapParams.lon = params.mlon;
+      mapParams.lat = params.mlat;
+      mapParams.zoom = params.zoom || 12;
     } else if (loc) {
-      mapParams.lon = parseFloat(loc[0]);
-      mapParams.lat = parseFloat(loc[1]);
-      mapParams.zoom = parseInt(loc[2], 10);
+      [mapParams.lon, mapParams.lat, mapParams.zoom] = loc;
     } else if (OSM.home) {
       mapParams.lon = OSM.home.lon;
       mapParams.lat = OSM.home.lat;
       mapParams.zoom = 10;
     } else if (OSM.location) {
-      mapParams.bounds = L.latLngBounds(
-        [OSM.location.minlat, OSM.location.minlon],
-        [OSM.location.maxlat, OSM.location.maxlon]
-      );
+      mapParams.bounds = bboxToLatLngBounds(OSM.location);
     } else {
       mapParams.lon = -0.1;
       mapParams.lat = 51.5;
-      mapParams.zoom = parseInt(params.zoom || 5, 10);
+      mapParams.zoom = params.zoom || 5;
     }
 
+    if (typeof mapParams.lat === "string") mapParams.lat = parseFloat(mapParams.lat);
+    if (typeof mapParams.lon === "string") mapParams.lon = parseFloat(mapParams.lon);
+    if (typeof mapParams.zoom === "string") mapParams.zoom = parseInt(mapParams.zoom, 10);
+
     mapParams.layers = hash.layers || (loc && loc[3]) || "";
 
     var scale = parseFloat(params.scale);
index 35a1fdc4bdfc6a864e05ea52a2f5a37859f05daf..77d1d513c3e5ba6f64b8fc24c5429cfdd70be335 100644 (file)
@@ -2,28 +2,14 @@ $(document).ready(function () {
   var params = OSM.params();
 
   if (params.lat && params.lon) {
-    params.lat = parseFloat(params.lat);
-    params.lon = parseFloat(params.lon);
-    params.zoom = params.zoom || 17;
-
     var url = "/edit";
 
-    if (params.editor) {
-      url += "?editor=" + params.editor;
-    }
-
+    if (params.editor) url += "?editor=" + params.editor;
+    if (!params.zoom) params.zoom = 17;
     url += OSM.formatHash(params);
 
     $(".start-mapping").attr("href", url);
   } else {
-    var geoSuccess = function (position) {
-      window.location = "/edit" + OSM.formatHash({
-        zoom: 17,
-        lat: position.coords.latitude,
-        lon: position.coords.longitude
-      });
-    };
-
     $(".start-mapping").on("click", function (e) {
       e.preventDefault();
       $(".start-mapping").addClass("loading");
@@ -40,6 +26,14 @@ $(document).ready(function () {
     });
   }
 
+  function geoSuccess(position) {
+    window.location = "/edit" + OSM.formatHash({
+      zoom: 17,
+      lat: position.coords.latitude,
+      lon: position.coords.longitude
+    });
+  }
+
   function manualEdit() {
     window.location = "/?edit_help=1";
   }