Do not insert more than one point per geometry at once

This commit is contained in:
Maximilian Krög
2020-09-28 16:43:28 +02:00
parent bf33bd0703
commit 6a5c3bde62
+8 -4
View File
@@ -1070,6 +1070,7 @@ class Modify extends PointerInteraction {
if (dist <= this.pixelTolerance_) { if (dist <= this.pixelTolerance_) {
/** @type {Object<string, boolean>} */ /** @type {Object<string, boolean>} */
const vertexSegments = {}; const vertexSegments = {};
vertexSegments[getUid(closestSegment)] = true;
if ( if (
node.geometry.getType() === GeometryType.CIRCLE && node.geometry.getType() === GeometryType.CIRCLE &&
@@ -1091,14 +1092,18 @@ class Modify extends PointerInteraction {
: closestSegment[0]; : closestSegment[0];
} }
this.createOrUpdateVertexFeature_(vertex); this.createOrUpdateVertexFeature_(vertex);
const geometries = {};
geometries[getUid(node.geometry)] = true;
for (let i = 1, ii = nodes.length; i < ii; ++i) { for (let i = 1, ii = nodes.length; i < ii; ++i) {
const segment = nodes[i].segment; const segment = nodes[i].segment;
if ( if (
(coordinatesEqual(closestSegment[0], segment[0]) && ((coordinatesEqual(closestSegment[0], segment[0]) &&
coordinatesEqual(closestSegment[1], segment[1])) || coordinatesEqual(closestSegment[1], segment[1])) ||
(coordinatesEqual(closestSegment[0], segment[1]) && (coordinatesEqual(closestSegment[0], segment[1]) &&
coordinatesEqual(closestSegment[1], segment[0])) coordinatesEqual(closestSegment[1], segment[0]))) &&
!(getUid(nodes[i].geometry) in geometries)
) { ) {
geometries[getUid(nodes[i].geometry)] = true;
vertexSegments[getUid(segment)] = true; vertexSegments[getUid(segment)] = true;
} else { } else {
break; break;
@@ -1106,7 +1111,6 @@ class Modify extends PointerInteraction {
} }
} }
vertexSegments[getUid(closestSegment)] = true;
this.vertexSegments_ = vertexSegments; this.vertexSegments_ = vertexSegments;
return; return;
} }