only drop restrictions from FROM towards VIA when adding new only

partially adresses bugs in #4968:

* doesn't crash anymore in complex situations (short FROM ways where both ends connect to a TO way)
* adding a only-restriction at one end of a short FROM doesn't delete restrictions on the other end of the same FROM anymore
This commit is contained in:
Martin Raifer
2018-04-06 11:30:16 +02:00
parent d60c423ac0
commit d2d464d9ee
2 changed files with 8 additions and 10 deletions
+6 -8
View File
@@ -408,22 +408,20 @@ export function osmIntersection(graph, startVertexId, maxDistance) {
var isAlongOnlyPath = false;
if (t.id === way.id) { // match VIA, TO
if (v.length === 1 && v[0].type === 'node' && v[0].id === entity.id) {
matchesViaTo = true; // match VIA node
} else { // match all VIA ways
if (v.length === 1 && v[0].type === 'node') { // match VIA node
matchesViaTo = v[0].id === entity.id;
} else { // match all VIA ways
var pathVias = [];
for (k = 1; k < currPath.length; k++) { // k = 1 skips FROM way
if (currPath[k][0] === 'w') pathVias.push(currPath[k]);
for (k = 2; k < currPath.length; k+=2) { // k = 1 skips FROM way
pathVias.push(currPath[k]);
}
var restrictionVias = [];
for (k = 0; k < v.length; k++) {
if (v[k].type === 'way') restrictionVias.push(v[k].id);
restrictionVias.push(v[k].id);
}
var diff = _difference(pathVias, restrictionVias);
matchesViaTo = !diff.length;
}
} else if (isOnly) {
for (k = 0; k < v.length; k++) {
// way doesn't match TO, but is one of the via ways along the path of an "only"