mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-14 21:28:11 +02:00
Reverse degree and compass values on direction tags when reversing points
This commit is contained in:
@@ -53,6 +53,17 @@ export function actionReverse(entityID, options) {
|
||||
'-1': 'yes'
|
||||
};
|
||||
|
||||
var compassReplacements = {
|
||||
N: 'S',
|
||||
NE: 'SW',
|
||||
E: 'W',
|
||||
SE: 'NW',
|
||||
S: 'N',
|
||||
SW: 'NE',
|
||||
W: 'E',
|
||||
NW: 'SE'
|
||||
};
|
||||
|
||||
|
||||
function reverseKey(key) {
|
||||
for (var i = 0; i < keyReplacements.length; ++i) {
|
||||
@@ -65,19 +76,34 @@ export function actionReverse(entityID, options) {
|
||||
}
|
||||
|
||||
|
||||
function reverseValue(key, value) {
|
||||
function reverseValue(key, value, includeAbsolute) {
|
||||
if (ignoreKey.test(key)) return value;
|
||||
|
||||
// Turn lanes are left/right to key (not way) direction - #5674
|
||||
if (turn_lanes.test(key)) {
|
||||
return value;
|
||||
|
||||
} else if (key === 'incline' && numeric.test(value)) {
|
||||
return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; });
|
||||
|
||||
} else if (options && options.reverseOneway && key === 'oneway') {
|
||||
return onewayReplacements[value] || value;
|
||||
} else {
|
||||
return valueReplacements[value] || value;
|
||||
|
||||
} else if (includeAbsolute && key.endsWith('direction')) {
|
||||
if (compassReplacements[value]) return compassReplacements[value];
|
||||
|
||||
var degrees = parseFloat(value);
|
||||
if (degrees && !isNaN(degrees)) {
|
||||
if (degrees < 180) {
|
||||
degrees += 180;
|
||||
} else {
|
||||
degrees -= 180;
|
||||
}
|
||||
return degrees.toString();
|
||||
}
|
||||
}
|
||||
|
||||
return valueReplacements[value] || value;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +115,7 @@ export function actionReverse(entityID, options) {
|
||||
|
||||
var tags = {};
|
||||
for (var key in node.tags) {
|
||||
tags[reverseKey(key)] = reverseValue(key, node.tags[key]);
|
||||
tags[reverseKey(key)] = reverseValue(key, node.tags[key], node.id === entityID);
|
||||
}
|
||||
graph = graph.replace(node.update({tags: tags}));
|
||||
}
|
||||
@@ -136,7 +162,7 @@ export function actionReverse(entityID, options) {
|
||||
|
||||
for (var key in entity.tags) {
|
||||
var value = entity.tags[key];
|
||||
if (reverseKey(key) !== key || reverseValue(key, value) !== value) {
|
||||
if (reverseKey(key) !== key || reverseValue(key, value, true) !== value) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user