Ticket #24485: 24485.patch
| File 24485.patch, 2.6 KB (added by , 7 weeks ago) |
|---|
-
src/org/openstreetmap/josm/tools/Geometry.java
1562 1562 Pair<Node, Node> closestNodes = null; 1563 1563 for (Pair<Node, Node> nodes : way.getNodePairs(false)) { 1564 1564 Way tWay = new Way(); 1565 tWay.addNode(n odes.a);1566 tWay.addNode(n odes.b);1565 tWay.addNode(new Node(nodes.a)); 1566 tWay.addNode(new Node(nodes.b)); 1567 1567 double distance = getDistance(tWay, primitive); 1568 1568 if (distance < lowestDistance) { 1569 1569 lowestDistance = distance; -
test/unit/org/openstreetmap/josm/tools/GeometryTest.java
36 36 import org.openstreetmap.josm.data.osm.Relation; 37 37 import org.openstreetmap.josm.data.osm.RelationMember; 38 38 import org.openstreetmap.josm.data.osm.Way; 39 import org.openstreetmap.josm.data.osm.WaySegment; 39 40 import org.openstreetmap.josm.data.osm.search.SearchCompiler; 40 41 import org.openstreetmap.josm.data.projection.Projection; 41 42 import org.openstreetmap.josm.data.projection.ProjectionRegistry; … … 635 636 () -> Geometry.getCentroid(Arrays.asList(new Node(LatLon.ZERO), new Node(), new Node(LatLon.ZERO)))); 636 637 assertTrue(new EastNorth(0, 0).equalsEpsilon(centroid3, 1e-9)); 637 638 } 639 640 /** 641 * A non-regression test for an issue found in #24485 642 * Test of {@link Geometry#getClosestWaySegment} method when DataSet is read-only. 643 */ 644 @Test 645 void testNonRegression24485() { 646 Node node1 = new Node(new LatLon(0, 0)); 647 Node node2 = new Node(new LatLon(0, 1)); 648 Node node3 = new Node(new LatLon(0.3, 0.5)); 649 Node node4 = new Node(new LatLon(0.1, 0)); 650 Way way1 = TestUtils.newWay("", node1, node2, node3, node4); 651 652 DataSet ds = new DataSet(); 653 way1.getNodes().forEach(n -> ds.addPrimitive(n)); 654 ds.addPrimitive(way1); 655 ds.lock(); 656 WaySegment closestSegment = Geometry.getClosestWaySegment(way1, new Node(new LatLon(0, 0.5))); 657 ds.unlock(); 658 Way closestSegmentWay = closestSegment.toWay(); 659 assertTrue(closestSegmentWay.containsNode(node1)); 660 assertTrue(closestSegmentWay.containsNode(node2)); 661 } 662 638 663 }
