Ticket #7314: get_relations_with_getAllNearest.patch
| File get_relations_with_getAllNearest.patch, 1.8 KB (added by , 14 years ago) |
|---|
-
src/org/openstreetmap/josm/gui/NavigatableComponent.java
35 35 import org.openstreetmap.josm.data.osm.DataSet; 36 36 import org.openstreetmap.josm.data.osm.Node; 37 37 import org.openstreetmap.josm.data.osm.OsmPrimitive; 38 import org.openstreetmap.josm.data.osm.Relation; 38 39 import org.openstreetmap.josm.data.osm.Way; 39 40 import org.openstreetmap.josm.data.osm.WaySegment; 40 41 import org.openstreetmap.josm.data.preferences.IntegerProperty; … … 1110 1111 List<OsmPrimitive> nearestList = new ArrayList<OsmPrimitive>(); 1111 1112 Set<Way> wset = new HashSet<Way>(); 1112 1113 1114 // add nearby ways 1113 1115 for (List<WaySegment> wss : getNearestWaySegmentsImpl(p, predicate).values()) { 1114 1116 for (WaySegment ws : wss) { 1115 1117 if (wset.add(ws.way)) { … … 1117 1119 } 1118 1120 } 1119 1121 } 1122 1123 // add nearby nodes 1120 1124 for (List<Node> nlist : getNearestNodesImpl(p, predicate).values()) { 1121 1125 nearestList.addAll(nlist); 1122 1126 } 1127 1128 // add parent relations of nearby nodes and ways 1129 Set<OsmPrimitive> parentRelations = new HashSet<OsmPrimitive>(); 1130 for (OsmPrimitive o : nearestList) { 1131 for (OsmPrimitive r : o.getReferrers()) { 1132 if (r instanceof Relation && predicate.evaluate(r)) { 1133 parentRelations.add(r); 1134 } 1135 } 1136 } 1137 nearestList.addAll(parentRelations); 1138 1123 1139 if (ignore != null) { 1124 1140 nearestList.removeAll(ignore); 1125 1141 }
