cofounderella/lib/models/location.dart

70 lines
1.8 KiB
Dart

import '../constants.dart';
import '../utils/math.dart';
class MyLocation {
final String street;
final String country;
/// DE: Bundesland
final String? administrativeArea;
/// City
final String locality;
/// DE: Stadtteil
final String? subLocality;
final String? postalCode;
final double? latitude;
final double? longitude;
MyLocation({
required this.street,
required this.country,
required this.administrativeArea,
required this.locality,
required this.subLocality,
required this.postalCode,
required this.latitude,
required this.longitude,
});
// convert to a map
Map<String, dynamic> toMap() {
return {
Constants.dbFieldLocationStreet: street,
Constants.dbFieldLocationCountry: country,
Constants.dbFieldLocationArea: administrativeArea,
Constants.dbFieldLocationLocality: locality,
Constants.dbFieldLocationSubLocality: subLocality,
Constants.dbFieldLocationPostalCode: postalCode,
Constants.dbFieldLocationLatitude: latitude,
Constants.dbFieldLocationLongitude: longitude,
};
}
/// Returns: locality, country. In case of an error: latitude, longitude.
String toStringDegree() {
try {
String latResult = convertDecimalToDMS(latitude!, isLatitude: true);
String longResult = convertDecimalToDMS(longitude!, isLatitude: false);
return '$latResult, $longResult';
} catch (e) {
// on error return origin values
return '$latitude, $longitude';
}
}
/// Returns: locality, country
@override
String toString() {
return '$locality, $country';
}
@override
int get hashCode => Object.hash(latitude, longitude);
@override
bool operator ==(Object other) =>
other is MyLocation &&
latitude == other.latitude &&
longitude == other.longitude;
}