Автозаполнение места (новое)

Выберите платформу: Android iOS JavaScript Web Service

Служба Autocomplete (New) — это API iOS, которая возвращает предложения мест в ответ на запрос. В запросе укажите строку текстового поиска и географические границы, которые управляют областью поиска.

Служба автозаполнения (новая) может сопоставлять полные слова и подстроки ввода, разрешая названия мест, адреса и плюс-коды . Таким образом, приложения могут отправлять запросы по мере ввода текста пользователем, чтобы предлагать предложения мест на лету.

Предложения мест — это такие места, как предприятия, адреса и достопримечательности, основанные на указанной вводимой текстовой строке и области поиска.

Например, вы вызываете API, используя в качестве входных данных строку, содержащую частичный пользовательский ввод "Spagh", с областью поиска, ограниченной Нью-Йорком. Затем ответ содержит список предложений мест , которые соответствуют строке поиска и области поиска, например, ресторан под названием "Cafe Spaghetti", а также сведения о месте.

Возвращенные предложения мест предназначены для представления пользователю, чтобы он мог выбрать желаемое место. Вы можете сделать запрос Place Details (New), чтобы получить больше информации о любом из возвращенных предложений мест.

Интегрировать функцию автозаполнения (новая) в свое приложение можно двумя основными способами:

Получите прогнозы мест программным способом

Автозаполнение (новых) запросов

Создайте запрос автозаполнения, вызвав метод в GMSPlacesClient . Вы можете передать параметры в объекте GMSAutocompleteRequest . Ответ предоставляет предложения автозаполнения в объекте GMSAutocompletePlaceSuggestion .

Обязательны ключ API и параметры query . Вы также можете включить GMSAutocompleteSessionToken для связывания запросов с сеансом выставления счетов и GMSAutocompleteFilter для применения к результатам.

Версия Swift SDK мест

Создайте запрос автозаполнения, вызвав метод в PlacesClient . Вы можете передать параметры в объект AutocompleteRequest . Ответ предоставляет предложения автозаполнения в объекте AutocompletePlaceSuggestion .

Обязательны ключ API и параметры query . Вы также можете включить AutocompleteSessionToken для связывания запросов с сеансом выставления счетов и AutocompleteFilter для применения к результатам.

Дополнительную информацию об обязательных и необязательных параметрах см. в разделе «Параметры» настоящего документа .

Место Swift SDK

let center = (37.3913916, -122.0879074)
let northEast = (37.388162, -122.088137)
let southWest = (37.395804, -122.077023)

let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest)
let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias)

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  // Handle suggestions.
case .failure(let placesError):
  // Handle error.
}

Быстрый

let token = GMSAutocompleteSessionToken()

let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051)
let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds)

let request = GMSAutocompleteRequest(query:"Spagh")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137);
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ kGMSPlaceTypeRestaurant ];
filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Автозаполнение (новых) ответов

Autocomplete возвращает массив из до пяти экземпляров GMSAutocompleteSuggestion . Массив содержит:

  • placeID
  • types : Типы, которые применяются к этому месту.
  • distanceMeters : Расстояние от исходной точки.
  • attributedFullText : Полный текст предложения, понятный человеку.
  • attributedPrimaryText : первичный текст предложения, понятный человеку.
  • attributedSecondaryText : вторичный текст предложения, понятный человеку.
  • structuredFormat : конкретное имя и неоднозначный текст, например город или регион.

Требуемые параметры

запрос

Текстовая строка, по которой нужно искать. Укажите полные слова и подстроки, названия мест, адреса и плюс-коды . Служба автозаполнения (новая) возвращает совпадения кандидатов на основе этой строки и упорядочивает результаты на основе их предполагаемой релевантности.

Необязательные параметры

sessionToken

Токены сеанса — это созданные пользователем строки, которые отслеживают вызовы Autocomplete (New) — как вызовы, выполненные через виджет, так и программные вызовы — как «сеансы». Autocomplete (New) использует токены сеанса для группировки фаз запроса и выбора поиска пользователя с автозаполнением в отдельный сеанс для выставления счетов. Для получения дополнительной информации см. Токены сеанса .

Необязательные параметры AutocompleteFilter

типы

Место может иметь только один основной тип из типов Table A или Table B, связанных с ним. Например, основным типом может быть mexican_restaurant или steak_house .

По умолчанию API возвращает все места на основе input параметра, независимо от значения первичного типа, связанного с местом. Ограничьте результаты определенным первичным типом или первичными типами, передав параметр types .

Используйте этот параметр, чтобы указать до пяти значений типа из таблицы A или таблицы B. Место должно соответствовать одному из указанных значений основного типа, чтобы быть включенным в ответ.

Запрос отклоняется с ошибкой INVALID_REQUEST , если:

  • Указано более пяти типов.
  • Указываются все нераспознанные типы.

Например, чтобы ограничить результаты магазинами спортивных товаров, укажите этот тип в AutocompleteFilter :

Место Swift SDK

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
  

Быстрый

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]
  

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];

страны

Включать только результаты из списка указанных регионов, указанных как массив из двухсимвольных значений ccTLD («домен верхнего уровня»), не более 15. Если этот параметр опущен, к ответу не применяются ограничения. Например, чтобы ограничить регионы Германией и Францией:

Место Swift SDK

let filter = AutocompleteFilter(countries: ["DE", "FR"])
  

Быстрый

let filter = GMSAutocompleteFilter()
filter.countries = ["DE", "FR"]

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.countries = @[ @"DE", @"FR" ];

Если указать и locationRestriction , и countries , результаты будут расположены в области пересечения двух настроек.

вводСмещение

Смещение символа Unicode, начинающееся с нуля и указывающее позицию курсора в input . Позиция курсора может влиять на то, какие прогнозы будут возвращены. Если пусто, по умолчанию используется длина input .

местоположениеПредвзятость или ограничение местоположения

Вы можете указать locationBias или locationRestriction , но не оба, чтобы определить область поиска. Думайте о locationRestriction как об указании региона, в котором должны быть результаты, а locationBias как об указании региона, в котором должны быть результаты, но могут быть за пределами области.

  • locationBias указывает область поиска. Это местоположение служит смещением, что означает, что могут быть возвращены результаты вокруг указанного местоположения, включая результаты за пределами указанной области.

  • locationRestriction указывает область поиска. Результаты за пределами указанной области не возвращаются.

Укажите область locationBias или locationRestriction как прямоугольную область просмотра или как круг.

Окружность определяется точкой центра и радиусом в метрах. Радиус должен быть в диапазоне от 0,0 до 50000,0 включительно. Значение по умолчанию — 0,0. Для locationRestriction необходимо задать радиус больше 0,0. В противном случае запрос не вернет никаких результатов.

Например:

Место Swift SDK

let center = CLLocationCoordinate2DMake(40.477398, -74.259087)

let bias = CircularCoordinateRegion(center: center, radius: 1000.0)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Быстрый

let center = CLLocationCoordinate2DMake(40.730610, -73.935242)
let radius = 1000.0

filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242);
radius = 1000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);

Прямоугольник — это широтно-долготная область просмотра, представленная в виде двух диагонально противоположных low и high точек. Область просмотра считается замкнутой областью, то есть она включает ее границу. Границы широты должны находиться в диапазоне от -90 до 90 градусов включительно, а границы долготы должны находиться в диапазоне от -180 до 180 градусов включительно:

  • Если low = high , область просмотра состоит из этой единственной точки.
  • Если low.longitude > high.longitude , диапазон долготы инвертируется (область просмотра пересекает линию долготы 180 градусов).
  • Если low.longitude = -180 градусов, а high.longitude = 180 градусов, область просмотра включает все долготы.
  • Если low.longitude = 180 градусов, а high.longitude = -180 градусов, то диапазон долготы пуст.

Оба low и high должны быть заполнены, и представленное поле не может быть пустым. Пустая область просмотра приводит к ошибке.

Например, эта область просмотра полностью охватывает Нью-Йорк:

Место Swift SDK

let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087)
let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051)

let filter = AutocompleteFilter(coordinateRegionBias: bias)
  

Быстрый

let high = CLLocationCoordinate2DMake(40.921628, -73.700051)
let low = CLLocationCoordinate2DMake(40.477398, -74.259087)

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceRectangularLocationOption(high, low)

Objective-C

CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087);
CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051);

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceRectangularLocationOption(high, low);

источник

Исходная точка, от которой рассчитывается расстояние по прямой до пункта назначения (возвращается как distanceMeters ). Если это значение пропущено, расстояние по прямой не будет возвращено. Необходимо указать как координаты широты и долготы:

Место Swift SDK

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
  

Быстрый

let filter = GMSAutocompleteFilter()
filter.origin =  CLLocation(latitude: 37.395804, longitude: -122.077023)
 

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];

filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];

Код региона

Код региона, используемый для форматирования ответа, указанный как двухсимвольное значение ccTLD («домен верхнего уровня») . Большинство кодов ccTLD идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, ccTLD Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически для субъекта «Соединенное Королевство Великобритании и Северной Ирландии»).

Если указать недопустимый код региона, API возвращает ошибку INVALID_ARGUMENT . Параметр может повлиять на результаты в зависимости от применимого законодательства.

Добавьте виджет автозаполнения мест

Чтобы упростить предоставление согласованного опыта автозаполнения мест, вы можете добавить виджет автозаполнения мест в свое приложение. Виджет предоставляет выделенный полноэкранный интерфейс, который обрабатывает пользовательский ввод и отображает пользователю прогнозы мест, возвращая объекты AutocompletePlaceSuggestion в приложение. Затем вы можете сделать запрос Place Details (New) , чтобы получить дополнительную информацию о любом из прогнозов мест.

Виджет автозаполнения места

Как и при программном получении прогнозов мест , виджет автозаполнения мест позволяет использовать токены сеанса для группировки запросов автозаполнения в сеанс для выставления счетов. Вы можете передать токен сеанса, вызвав AutocompleteSessionToken() .

Если вы не предоставите токен сеанса, виджет создаст для вас токен сеанса Autocomplete, который затем можно будет получить из обратного вызова onSelection . Для получения дополнительной информации об использовании токенов сеанса см. О токенах сеанса .

Если значение привязки show установлено на true , пользователь будет перенесен в полноэкранный режим, где он сможет выбрать место. По мере того, как пользователь печатает, виджет возвращает предложения мест, таких как компании, адреса и точки интереса. Когда пользователь выбирает место, виджет вызывает обработчик onSelection с выбранным местом и закрывает полноэкранный режим.

Параметры виджета «Автозаполнение»

В дополнение к параметрам, доступным программно , виджет автозаполнения мест также предлагает следующие параметры.

показывать

show указывает, будет ли отображаться виджет.

АвтозаполнениеUIНастройка

Параметры AutocompleteUICustomization определяют настройки пользовательского интерфейса, которые следует применить к виджету. Параметры настройки:

  • AutocompleteListDensity . Этот параметр позволяет выбрать плотность списка предложений: multiLine или twoLine .
  • AutocompleteUIIcon . Этот параметр позволяет выбрать, показывать ли значок по умолчанию для каждого элемента списка.

onSelection

Закрытие, которое будет запущено после выбора места.

onError

Замыкание, которое будет запущено при возникновении ошибки. Если произойдет ошибка, будет передан PlacesError .

Смотрите полный пример кода .

Примеры автозаполнения (новые)

Использовать locationRestriction и locationBias

Autocomplete (New) использует IP biasing по умолчанию для управления областью поиска. При IP biasing API использует IP-адрес устройства для смещения результатов. Вы можете опционально использовать locationRestriction или locationBias , но не оба, чтобы указать область поиска.

Ограничение местоположения указывает область поиска. Результаты за пределами указанной области не возвращаются. В следующем примере ограничение местоположения используется для ограничения запроса круговым ограничением местоположения с радиусом 5000 метров с центром в Сан-Франциско:

Место Swift SDK

let center = (37.775061, -122.419400)
let radius = 5000.0
let restriction = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionRestriction: restriction)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Быстрый

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

При смещении местоположения местоположение служит смещением, что означает, что могут быть возвращены результаты вокруг указанного местоположения, включая результаты за пределами указанной области. Следующий пример изменяет предыдущий запрос для использования смещения местоположения:

Место Swift SDK

let center = (37.775061, -122.419400)
let radius = 5000.0
let bias = CircularCoordinateRegion(center: center, radius: radius)
let filter = AutocompleteFilter(coordinateRegionBias: bias)
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Быстрый

let token = GMSAutocompleteSessionToken()

let center = CLLocationCoordinate2DMake(37.775061, -122.419400)
let radius = 5000.0

let filter = GMSAutocompleteFilter()
filter.locationBias = GMSPlaceCircularLocationOption(center, radius)

let request = GMSAutocompleteRequest(query:"Piz")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400);
radius = 5000.0;

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Используйте типы

Используйте параметр types, чтобы ограничить результаты запроса определенным типом, как указано в таблице A и таблице B. Вы можете указать массив из пяти значений. Если параметр опущен, возвращаются все типы.

В следующем примере указывается строка запроса «Футбол» и используется параметр типов для ограничения результатов заведениями типа "sporting_goods_store" :

Место Swift SDK

let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
    

Быстрый

let token = GMSAutocompleteSessionToken()

let filter = GMSAutocompleteFilter()
filter.types = ["sporting_goods_store"]

let request = GMSAutocompleteRequest(query:"Soccer")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.types = @[ "sporting_goods_store" ];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
    }
  }
}];

Использовать источник

Когда вы включаете параметр origin в запрос, указанный как координаты широты и долготы, API включает в ответ расстояние по прямой от источника до пункта назначения. Ответ возвращает расстояние как distanceMeters .

В этом примере начало координат устанавливается в центре Сан-Франциско:

Место Swift SDK

let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194))
let token = AutocompleteSessionToken()

let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter)
switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) {
case .success(let autocompleteSuggestions):
  for suggestion in autocompleteSuggestions {
    switch suggestion {
    case .place:
      // Show place suggestion data.
    }
  }
case .failure(let placesError):
  // Handle error.
}
  

Быстрый

let token = GMSAutocompleteSessionToken()

let origin = CLLocation(latitude: 37.7749, longitude: -122.4194)

let filter = GMSAutocompleteFilter()

filter.origin =  origin

let request = GMSAutocompleteRequest(query:"Amoeba")
request.filter = filter
request.sessionToken = token

GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in
      if let error = error {
        print("Autocomplete error: \(error)")
        return
      }
      if let autocompleteResults = results {
        for result in autocompleteResults {
          print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))")
        }
      }
    })

Objective-C

GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init];
filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023];
GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"];
request.sessionToken = token;
request.filter = filter;

[[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){
  // Handle response
  for (GMSAutocompleteSuggestion *suggestion in results) {
    if (suggestion.placeSuggestion) {
      // Show place suggestion data.
      }
    }
}];

Добавьте виджет автозаполнения мест

Место Swift SDK

struct PlaceAutocompleteDemoView: View {

  @State private var fetchedPlace: Place?
  @State private var placesError: PlacesError?
  @State private var showWidget = false

  public var body: some View {
    VStack {
      Button("Search for a place") {
        showWidget.toggle()
      }
      .placeAutocomplete(
        show: $showWidget,
        onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in
          Task {
            let placesClient = await PlacesClient.shared
            let fetchPlaceRequest = FetchPlaceRequest(
              placeID: autocompletePlaceSuggestion.placeID,
              placeProperties: [.displayName, .formattedAddress],
              sessionToken: autocompleteSessionToken
            )

            switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
            case .success(let place):
              print("Fetched place: \(place)")
              self.fetchedPlace = place
            case .failure(let placesError):
              print("Failed to fetch place: \(placesError)")
              self.placesError = placesError
            }
          }
        },
        onError: { placesError in
          self.placesError = placesError
        }
      )
    }
  }
}

Атрибуции

Вы можете использовать Autocomplete (New) даже без карты. Если вы показываете карту, это должна быть карта Google. Когда вы показываете предложения от службы Autocomplete (New) без карты, вы должны включить логотип Google, отображаемый в строке с полем поиска/результатами. Для получения дополнительной информации см. Отображение логотипа Google и атрибуции .