Skip to content

Instantly share code, notes, and snippets.

@zachisit
Created December 1, 2020 12:08
Show Gist options
  • Save zachisit/153016f74d0a6101a4003d02995bb6bf to your computer and use it in GitHub Desktop.
Save zachisit/153016f74d0a6101a4003d02995bb6bf to your computer and use it in GitHub Desktop.
Dart utility methods to convert a gps coordinate to Cardinal
void main() {
Map<String,dynamic> toDegreesMinutesAndSeconds(double coord) {
double absolute = coord.abs();
int degrees = absolute.floor();
double minutesNotTruncated = (absolute - degrees) * 60;
int minutes = minutesNotTruncated.floor();
double seconds = ( (minutesNotTruncated - minutes) * 60 );
return {
'degrees':degrees,
'minutes':minutes,
'seconds':seconds.toStringAsFixed(0),
};
}
Map<String,dynamic> convertDMS(double lat, double long) {
Map<String,dynamic> latitude = toDegreesMinutesAndSeconds(lat);
String latCardinal = lat >= 0 ? 'N' : 'S';
Map<String,dynamic> longitude = toDegreesMinutesAndSeconds(long);
String longCardinal = long >= 0 ? 'E' : 'W';
return {
'latitudeCardinal': '${latitude['degrees']} ${latitude['minutes']} ${latitude['seconds']} ${latCardinal}',
'longitudeCardinal': '${longitude['degrees']} ${longitude['minutes']} ${longitude['seconds']} ${longCardinal}',
};
}
print(toDegreesMinutesAndSeconds(38.343080));
print(convertDMS(38.343080,-109.666190));
}
@themumy10
Copy link

Thanks so much. You saved my time

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment