Accept cardinal type directions in osm data

This commit is contained in:
stopflock
2025-10-29 12:53:56 -05:00
parent e861d00b68
commit c9a7045212

View File

@@ -38,15 +38,29 @@ class OsmNode {
final raw = tags['direction'] ?? tags['camera:direction'];
if (raw == null) return [];
// Compass direction to degree mapping
const compassDirections = {
'N': 0.0, 'NNE': 22.5, 'NE': 45.0, 'ENE': 67.5,
'E': 90.0, 'ESE': 112.5, 'SE': 135.0, 'SSE': 157.5,
'S': 180.0, 'SSW': 202.5, 'SW': 225.0, 'WSW': 247.5,
'W': 270.0, 'WNW': 292.5, 'NW': 315.0, 'NNW': 337.5,
};
// Split on semicolons and parse each direction
final directions = <double>[];
final parts = raw.split(';');
for (final part in parts) {
final trimmed = part.trim();
final trimmed = part.trim().toUpperCase();
if (trimmed.isEmpty) continue;
// Keep digits, optional dot, optional leading sign
// First try compass direction lookup
if (compassDirections.containsKey(trimmed)) {
directions.add(compassDirections[trimmed]!);
continue;
}
// Then try numeric parsing
final match = RegExp(r'[-+]?\d*\.?\d+').firstMatch(trimmed);
if (match == null) continue;