From: Tom Hughes Date: Sun, 2 Feb 2025 10:30:04 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/5586' X-Git-Tag: live~208 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/f8ad4c79a4c1880370a035be0c0286a9b4285a69?ds=sidebyside;hp=-c Merge remote-tracking branch 'upstream/pull/5586' --- f8ad4c79a4c1880370a035be0c0286a9b4285a69 diff --combined app/controllers/api/maps_controller.rb index 9ba95c255,afba6faa4..439585462 --- a/app/controllers/api/maps_controller.rb +++ b/app/controllers/api/maps_controller.rb @@@ -46,10 -46,7 +46,7 @@@ module Ap way_ids = way_nodes.collect { |way_node| way_node.id[0] } ways = Way.preload(:way_nodes, :way_tags).find(way_ids) - list_of_way_nodes = ways.collect do |way| - way.way_nodes.collect(&:node_id) - end - list_of_way_nodes.flatten! + list_of_way_nodes = ways.flat_map { |way| way.way_nodes.map(&:node_id) } end # - [0] in case some thing links to node 0 which doesn't exist. Shouldn't actually ever happen but it does. FIXME: file a ticket for this @@@ -57,12 -54,26 +54,12 @@@ nodes += Node.includes(:node_tags).find(nodes_to_fetch) unless nodes_to_fetch.empty? - visible_nodes = {} - @nodes = [] - nodes.each do |node| - if node.visible? - visible_nodes[node.id] = node - @nodes << node - end - end + @nodes = nodes.filter(&:visible?) - @ways = [] - way_ids = [] - ways.each do |way| - if way.visible? - way_ids << way.id - @ways << way - end - end + @ways = ways.filter(&:visible?) - @relations = Relation.nodes(visible_nodes.keys).visible + - Relation.ways(way_ids).visible + @relations = Relation.nodes(@nodes).visible + + Relation.ways(@ways).visible # we do not normally return the "other" partners referenced by an relation, # e.g. if we return a way A that is referenced by relation X, and there's