autocomplete method

Future<List<AutocompleteResult>> autocomplete(
  1. String query, {
  2. int maxResults = 5,
  3. LatLng? biasPosition,
  4. String? language,
})

Search for place suggestions matching query.

Returns up to maxResults results (default 5). Optionally bias results towards biasPosition.

Implementation

Future<List<AutocompleteResult>> autocomplete(
  String query, {
  int maxResults = 5,
  LatLng? biasPosition,
  String? language,
}) async {
  final body = <String, dynamic>{
    'QueryText': query,
    'MaxResults': maxResults,
  };
  if (biasPosition != null) {
    // AWS expects [longitude, latitude] order.
    body['BiasPosition'] = [biasPosition.longitude, biasPosition.latitude];
  }
  if (language != null) body['Language'] = language;

  final response = await _post('/v2/autocomplete', body);
  final data = json.decode(response.body) as Map<String, dynamic>;
  final items = data['ResultItems'] as List<dynamic>? ?? [];

  return items.map((item) {
    final map = item as Map<String, dynamic>;
    return AutocompleteResult(
      placeId: map['PlaceId'] as String? ?? '',
      label: map['Title'] as String? ?? '',
      placeType: map['PlaceType'] as String? ?? '',
    );
  }).toList();
}