getAddressFromCoordinates method

Future<LocationModel?> getAddressFromCoordinates(
  1. double latitude,
  2. double longitude, {
  3. String? localeIdentifier,
})

Get address details from coordinates using reverse geocoding

Implementation

Future<LocationModel?> getAddressFromCoordinates(
  double latitude,
  double longitude, {
  String? localeIdentifier,
}) async {
  try {
    List<Placemark> placemarks = await placemarkFromCoordinates(
      latitude,
      longitude,
    );

    if (placemarks.isNotEmpty) {
      Placemark place = placemarks.first;
      return LocationModel(
        latitude: latitude,
        longitude: longitude,
        address: [
          place.street,
          place.subLocality,
          place.locality,
          place.administrativeArea,
          place.postalCode,
          place.country,
        ].where((s) => s?.isNotEmpty == true).join(', '),
        street: place.street,
        locality: place.locality, // City
        subLocality: place.subLocality,
        administrativeArea: place.administrativeArea, // State
        subAdministrativeArea: place.subAdministrativeArea,
        country: place.country,
        postalCode: place.postalCode,
        countryCode: place.isoCountryCode,
      );
    }

    return LocationModel.fromCoordinates(
      latitude: latitude,
      longitude: longitude,
    );
  } catch (e) {
    throw Exception('Failed to get address from coordinates: $e');
  }
}