diff --git a/lib/services/location_service.dart b/lib/services/location_service.dart index 35c7fe7c7..def332435 100644 --- a/lib/services/location_service.dart +++ b/lib/services/location_service.dart @@ -198,16 +198,16 @@ class LocationService { } class GPSData { - final String? latRef; + String? latRef; final List? lat; - final String? longRef; + String? longRef; final List? long; GPSData(this.latRef, this.lat, this.longRef, this.long); Location? toLocationObj() { - final int latSign; - final int longSign; + int? latSign; + int? longSign; if (lat == null || long == null) { return null; } @@ -225,8 +225,26 @@ class GPSData { long![long!.indexOf(element)] = element.abs(); } } else { - latSign = latRef == "N" ? 1 : -1; - longSign = longRef == "E" ? 1 : -1; + latRef = latRef!.toUpperCase(); + longRef = longRef!.toUpperCase(); + + if (latRef!.startsWith("N")) { + latSign = 1; + } else if (latRef!.startsWith("S")) { + latSign = -1; + } + + if (longRef!.startsWith("E")) { + longSign = 1; + } else if (longRef!.startsWith("W")) { + longSign = -1; + } + } + + //At this point, latSign and longSign will only be null if latRef and longRef + //is of invalid format. + if (latSign == null || longSign == null) { + return null; } return Location(