mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-12 16:52:50 +00:00
29 lines
920 B
JavaScript
29 lines
920 B
JavaScript
import { geoEdgeEqual } from '../geo';
|
|
import { utilArrayIntersection } from '../util';
|
|
|
|
|
|
export function actionAddMidpoint(midpoint, node) {
|
|
return function(graph) {
|
|
graph = graph.replace(node.move(midpoint.loc));
|
|
|
|
var parents = utilArrayIntersection(
|
|
graph.parentWays(graph.entity(midpoint.edge[0])),
|
|
graph.parentWays(graph.entity(midpoint.edge[1]))
|
|
);
|
|
|
|
parents.forEach(function(way) {
|
|
for (var i = 0; i < way.nodes.length - 1; i++) {
|
|
if (geoEdgeEqual([way.nodes[i], way.nodes[i + 1]], midpoint.edge)) {
|
|
graph = graph.replace(graph.entity(way.id).addNode(node.id, i + 1));
|
|
|
|
// Add only one midpoint on doubled-back segments,
|
|
// turning them into self-intersections.
|
|
return;
|
|
}
|
|
}
|
|
});
|
|
|
|
return graph;
|
|
};
|
|
}
|