LocationResult.fromGooglePlace constructor

LocationResult.fromGooglePlace(
  1. Map<String, dynamic> place,
  2. double lat,
  3. double lng
)

Create LocationResult from Google Places API response

Implementation

factory LocationResult.fromGooglePlace(Map<String, dynamic> place, double lat, double lng) {
  String address = '';
  String? city;
  String? state;
  String? country;
  String? postalCode;

  // Extract formatted address
  if (place.containsKey('formatted_address')) {
    address = place['formatted_address'] as String;
  }

  // Parse address components
  if (place.containsKey('address_components')) {
    final components = place['address_components'] as List<dynamic>;

    for (final component in components) {
      final types = List<String>.from(component['types'] as List);
      final longName = component['long_name'] as String;

      if (types.contains('locality')) {
        city = longName;
      } else if (types.contains('administrative_area_level_1')) {
        state = longName;
      } else if (types.contains('country')) {
        country = longName;
      } else if (types.contains('postal_code')) {
        postalCode = longName;
      }
    }
  }

  return LocationResult(
    latitude: lat,
    longitude: lng,
    address: address,
    city: city,
    state: state,
    country: country,
    postalCode: postalCode,
    addressSource: AddressSource.googlePlaces,
  );
}