]> git.openstreetmap.org Git - rails.git/commitdiff
Update leaflet-osm to latest upstream version
authorTom Hughes <tom@compton.nu>
Sun, 5 Jan 2025 22:37:14 +0000 (22:37 +0000)
committerTom Hughes <tom@compton.nu>
Sun, 5 Jan 2025 22:37:14 +0000 (22:37 +0000)
vendor/assets/leaflet/leaflet.osm.js

index 6a8fcde3da68f00a0e047c695bcf6d7d160ced81..840b1a4c87b98ec779422877c179df6448ae983c 100644 (file)
@@ -147,9 +147,25 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
       ways = L.OSM.getWays(xml, nodes),
       relations = L.OSM.getRelations(xml, nodes, ways);
 
+    var wayNodes = {}
+    for (var i = 0; i < ways.length; i++) {
+      var way = ways[i];
+      for (var j = 0; j < way.nodes.length; j++) {
+        wayNodes[way.nodes[j].id] = true
+      }
+    }
+
+    var relationNodes = {}
+    for (var i = 0; i < relations.length; i++){
+      var relation = relations[i];
+      for (var j = 0; j < relation.members.length; j++) {
+        relationNodes[relation.members[j].id] = true
+      }
+    }
+
     for (var node_id in nodes) {
       var node = nodes[node_id];
-      if (this.interestingNode(node, ways, relations)) {
+      if (this.interestingNode(node, wayNodes, relationNodes)) {
         features.push(node);
       }
     }
@@ -176,23 +192,9 @@ L.OSM.DataLayer = L.FeatureGroup.extend({
     return false;
   },
 
-  interestingNode: function (node, ways, relations) {
-    var used = false;
-
-    for (var i = 0; i < ways.length; i++) {
-      if (ways[i].nodes.indexOf(node) >= 0) {
-        used = true;
-        break;
-      }
-    }
-
-    if (!used) {
-      return true;
-    }
-
-    for (var i = 0; i < relations.length; i++) {
-      if (relations[i].members.indexOf(node) >= 0)
-        return true;
+  interestingNode: function (node, wayNodes, relationNodes) {
+    if (!wayNodes[node.id] || relationNodes[node.id]) {
+      return true
     }
 
     for (var key in node.tags) {
@@ -309,7 +311,7 @@ L.Util.extend(L.OSM, {
         else // relation-way and relation-relation membership not implemented
           rel_object.members[j] = null;
       }
-
+      rel_object.members = rel_object.members.filter(i => i !== null && i !== undefined)
       result.push(rel_object);
     }