mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-20 15:34:49 +02:00
prevent degenerate ways caused by deleting a corner of a triangle (#10003)
This commit is contained in:
@@ -42,12 +42,15 @@ _Breaking developer changes, which may affect downstream projects or sites that
|
||||
#### :camera: Street-Level
|
||||
#### :white_check_mark: Validation
|
||||
#### :bug: Bugfixes
|
||||
* Prevent degenerate ways caused by deleting a corner of a triangle ([#10003], thanks [@k-yle])
|
||||
#### :earth_asia: Localization
|
||||
#### :hourglass: Performance
|
||||
#### :mortar_board: Walkthrough / Help
|
||||
#### :rocket: Presets
|
||||
#### :hammer: Development
|
||||
|
||||
[#10003]: https://github.com/openstreetmap/iD/pull/10003
|
||||
|
||||
|
||||
# 2.31.0
|
||||
##### 2025-Feb-05
|
||||
|
||||
+1
-1
@@ -242,7 +242,7 @@ Object.assign(osmWay.prototype, {
|
||||
|
||||
|
||||
isDegenerate: function() {
|
||||
return (new Set(this.nodes).size < (this.isArea() ? 3 : 2));
|
||||
return (new Set(this.nodes).size < (this.isClosed() ? 3 : 2));
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -278,10 +278,11 @@ describe('iD.actionCircularize', function () {
|
||||
var graph = iD.coreGraph([
|
||||
iD.osmNode({id: 'a', loc: [0, 0]}),
|
||||
iD.osmNode({id: 'b', loc: [0, 2]}),
|
||||
iD.osmWay({id: '-', nodes: ['a', 'b', 'a']})
|
||||
iD.osmNode({id: 'c', loc: [2, 0]}),
|
||||
iD.osmWay({id: '-', nodes: ['a', 'b', 'c', 'a']})
|
||||
]);
|
||||
|
||||
expect(area('-', graph)).to.eql(0);
|
||||
expect(area('-', graph)).to.eql(2);
|
||||
|
||||
graph = iD.actionCircularize('-', projection)(graph);
|
||||
|
||||
|
||||
@@ -473,6 +473,10 @@ describe('iD.osmWay', function() {
|
||||
expect(iD.osmWay({nodes: ['a', 'b']}).isDegenerate()).to.equal(false);
|
||||
});
|
||||
|
||||
it('returns true for a linear way that doubles back on itself', function () {
|
||||
expect(iD.osmWay({nodes: ['a', 'b', 'a']}).isDegenerate()).to.equal(true);
|
||||
});
|
||||
|
||||
it('returns true for an area with zero, one, or two unique nodes', function () {
|
||||
expect(iD.osmWay({tags: {area: 'yes'}, nodes: []}).isDegenerate()).to.equal(true);
|
||||
expect(iD.osmWay({tags: {area: 'yes'}, nodes: ['a', 'a']}).isDegenerate()).to.equal(true);
|
||||
|
||||
Reference in New Issue
Block a user