SearchResult.fromJson constructor

SearchResult.fromJson(
  1. Map<String, dynamic> json, {
  2. Position? userPosition,
})

//////////// //////////// Creates a search result from a Mapbox API response

Implementation

// II.C - Factory Methods
///////////////
/// Creates a search result from a Mapbox API response
factory SearchResult.fromJson(Map<String, dynamic> json, {geo.Position? userPosition}) {
  // Extract coordinates
  final List<double> coords = List<double>.from(json['center']);
  final lng = coords[0];
  final lat = coords[1];

  // Calculate distance from user if available
  double? distance;
  if (userPosition != null) {
    distance = geo.Geolocator.distanceBetween(
      userPosition.latitude,
      userPosition.longitude,
      lat,
      lng
    );
  }

  // Extract address components if available
  final addressComponents = _extractAddressComponents(json);

  return SearchResult(
    id: json['id'] as String,
    name: json['text'] as String,
    placeName: json['place_name'] as String,
    lat: lat,
    lng: lng,
    type: json['place_type'][0] as String,
    addressComponents: addressComponents,
    proximityDistance: distance,
  );
}