Сервис автозаполнения (новый) — это API iOS, который возвращает предложения мест в ответ на запрос. В запросе укажите текстовую строку поиска и географические границы, определяющие область поиска.
Служба автозаполнения (новая) может сопоставлять полные слова и подстроки введённого текста, определяя названия мест, адреса и плюс-коды . Таким образом, приложения могут отправлять запросы по мере ввода текста пользователем, чтобы оперативно предлагать варианты местоположений.
Предложения мест — это такие места, как предприятия, адреса и достопримечательности, основанные на указанной вводимой текстовой строке и области поиска.
Например, вы вызываете API, используя в качестве входных данных строку, содержащую частично введенный пользователем запрос «Spagh», при этом область поиска ограничена Нью-Йорком. В ответе содержится список предложений мест , соответствующих строке поиска и области поиска, например, ресторан под названием «Cafe Spaghetti», а также подробная информация об этом месте.
Возвращаемые предложения мест предназначены для того, чтобы пользователь мог выбрать желаемое место. Вы можете сделать запрос « Сведения о месте (новое)» , чтобы получить дополнительную информацию о любом из возвращаемых предложений мест.
Интегрировать функцию автозаполнения (новая) в свое приложение можно двумя основными способами:
- Получайте прогнозы мест программным способом : вызывайте API напрямую, чтобы получить прогнозы и отобразить их в пользовательском интерфейсе.
- Добавьте виджет автозаполнения места : предоставляет готовый к использованию интерфейс автозаполнения поиска, который отображает подсказки по мере ввода текста пользователем.
Получайте прогнозы мест программно
Автозаполнение (новых) запросов
Создайте запрос на автодополнение, вызвав метод GMSPlacesClient
. Параметры можно передать в объекте GMSAutocompleteRequest
. Ответ содержит подсказки автодополнения в объекте GMSAutocompletePlaceSuggestion
.
Необходимы ключ API и параметры query
. Вы также можете включить GMSAutocompleteSessionToken
для связывания запросов с сеансом выставления счетов и GMSAutocompleteFilter
для применения к результатам.
Версия Swift SDK Places
Создайте запрос автодополнения, вызвав метод PlacesClient
. Параметры можно передать в объект AutocompleteRequest
. Ответ содержит подсказки автодополнения в объекте AutocompletePlaceSuggestion
.
Необходимы ключ API и параметры query
. Вы также можете включить AutocompleteSessionToken
для связывания запросов с сеансом выставления счетов и AutocompleteFilter
для применения к результатам.
Дополнительную информацию об обязательных и необязательных параметрах см. в разделе «Параметры» настоящего документа .
Places 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. } } }];
Автозаполнение (новых) ответов
Функция автозаполнения возвращает массив, содержащий до пяти экземпляров GMSAutocompleteSuggestion
. Массив содержит:
-
placeID
-
types
: Типы, которые применяются к этому месту. -
distanceMeters
: Расстояние от источника. -
attributedFullText
: Полный текст предложения, понятный человеку. -
attributedPrimaryText
: первичный текст предложения, понятный человеку. -
attributedSecondaryText
: вторичный текст предложения, понятный человеку. -
structuredFormat
: конкретное название и неоднозначный текст, например город или регион.
Обязательные параметры
запрос
Текстовая строка для поиска. Укажите полные слова и подстроки, названия мест, адреса и плюс-коды . Служба автозаполнения (новая) возвращает возможные совпадения на основе этой строки и упорядочивает результаты по степени их релевантности.
Необязательные параметры
sessionToken
Токены сеансов — это генерируемые пользователями строки, которые отслеживают вызовы функции автозаполнения (New) — как вызовы через виджет, так и программные вызовы — как «сеансы». Функция автозаполнения (New) использует токены сеансов для группировки этапов запроса и выбора в рамках поиска пользователя с функцией автозаполнения в отдельный сеанс для выставления счетов. Подробнее см. в разделе Токены сеансов .
Дополнительные параметры AutocompleteFilter
типы
Место может иметь только один основной тип из числа связанных с ним типов Table A или Table B. Например, основным типом может быть mexican_restaurant
или steak_house
.
По умолчанию API возвращает все места на основе input
параметра, независимо от значения основного типа, связанного с местом. Ограничьте результаты одним или несколькими основными типами, передав параметр types
.
Используйте этот параметр, чтобы указать до пяти значений типа из таблицы A или таблицы B. Для включения в ответ место должно соответствовать одному из указанных значений основного типа.
Запрос отклоняется с ошибкой INVALID_REQUEST
, если:
- Указано более пяти типов.
- Указаны все нераспознанные типы.
Например, чтобы ограничить результаты магазинами спортивных товаров, укажите этот тип в AutocompleteFilter
:
Places 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" ];
страны
Включать результаты только из списка указанных регионов, заданных в виде массива, содержащего до 15 двухсимвольных значений ccTLD (доменов верхнего уровня) . Если этот параметр пропущен, к ответу не применяются никакие ограничения. Например, чтобы ограничить регионы Германией и Францией:
Places 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
, результаты будут расположены в области пересечения двух настроек.
inputOffset
Смещение символа Unicode (отсчитывается от нуля), указывающее позицию курсора в input
. Положение курсора может влиять на возвращаемые прогнозы. Если значение пусто, по умолчанию используется длина строки input
.
МестоположениеПредвзятость или ограничение местоположения
Для определения области поиска можно указать locationBias
или locationRestriction
, но не оба одновременно. locationRestriction
задаёт регион, в пределах которого должны находиться результаты, а locationBias
— регион, вблизи которого должны находиться результаты, но который может находиться за его пределами.
locationBias
задаёт область поиска. Это местоположение служит смещением, то есть могут быть возвращены результаты, близкие к указанному местоположению, включая результаты за пределами указанной области.locationRestriction
определяет область поиска. Результаты за пределами указанной области не возвращаются.
Укажите область locationBias
или locationRestriction
как прямоугольную область просмотра или как круг.
Окружность определяется точкой центра и радиусом в метрах. Радиус должен находиться в диапазоне от 0,0 до 50000,0 включительно. Значение по умолчанию — 0,0. Для locationRestriction
необходимо задать радиус больше 0,0. В противном случае запрос не вернёт результатов.
Например:
Places 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
должны быть заполнены, и отображаемое поле не может быть пустым. Пустая область просмотра приводит к ошибке.
Например, эта область просмотра полностью охватывает Нью-Йорк:
Places 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
). Если это значение пропущено, расстояние по прямой не будет возвращено. Необходимо указать координаты широты и долготы:
Places 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
. Этот параметр может повлиять на результаты в соответствии с действующим законодательством.
shouldIncludePureServiceAreaBusinesses
Если true
, в массиве ответа возвращаются компании, обслуживающие только территорию обслуживания. Компания, обслуживающая только территорию обслуживания, — это компания, которая посещает клиентов или доставляет им товары напрямую, но не обслуживает их по адресу.
Например:
Places Swift SDK
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Быстрый
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.shouldIncludePureServiceAreaBusinesses = YES;
Добавьте виджет автозаполнения мест
Чтобы упростить обеспечение единообразного автодополнения мест, вы можете добавить в приложение виджет «Автодополнение мест». Виджет предоставляет специальный полноэкранный интерфейс, который обрабатывает пользовательский ввод и отображает подсказки мест, одновременно возвращая приложению объекты AutocompletePlaceSuggestion
. Затем вы можете выполнить запрос « Сведения о месте (новый)» , чтобы получить дополнительную информацию о любом из подсказок.
Как и при программном получении прогнозов мест , виджет автозаполнения мест позволяет использовать токены сеанса для группировки запросов автозаполнения в сеанс для выставления счетов. Вы можете передать токен сеанса, вызвав функцию AutocompleteSessionToken()
.
Если вы не предоставите токен сеанса, виджет создаст для вас токен сеанса автозаполнения, который затем можно будет получить с помощью обратного вызова onSelection
. Подробнее об использовании токенов сеанса см. в разделе «О токенах сеанса» .
Если значение привязки show
равно true
, пользователь будет переключен в полноэкранный режим, где он сможет выбрать место. По мере ввода текста виджет отображает предложения мест, таких как компании, адреса и достопримечательности. Когда пользователь выбирает место, виджет вызывает обработчик onSelection
с выбранным местом и закрывает полноэкранный режим.
Параметры виджета «Автозаполнение»
В дополнение к параметрам, доступным программно , виджет автозаполнения места также предлагает следующие параметры.
показывать
show
указывает, будет ли показан виджет.
АвтозаполнениеUICustomization
Параметры AutocompleteUICustomization
определяют настройки пользовательского интерфейса, применяемые к виджету. Доступны следующие варианты настройки:
-
AutocompleteListDensity
. Этот параметр позволяет выбрать плотность списка вариантов:multiLine
илиtwoLine
. -
AutocompleteUIIcon
. Этот параметр позволяет выбрать, отображать ли значок по умолчанию для каждого элемента списка.
onSelection
Закрытие будет выполнено после выбора места.
onError
Замыкание, которое будет запущено при возникновении ошибки. При возникновении ошибки будет передано исключение PlacesError
.
Примеры автозаполнения (новые)
Использовать locationRestriction и locationBias
Функция автозаполнения (новая) по умолчанию использует смещение IP-адреса для управления областью поиска. При смещении IP-адреса API использует IP-адрес устройства для смещения результатов. Для указания области поиска можно использовать locationRestriction
или locationBias
(но не оба одновременно).
Ограничение местоположения определяет область поиска. Результаты за пределами указанной области не возвращаются. В следующем примере ограничение местоположения используется для ограничения запроса круговым ограничением местоположения с радиусом 5000 метров с центром в Сан-Франциско:
Places 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. } } }];
При использовании смещения местоположения само местоположение выступает в качестве смещения, что означает, что могут быть возвращены результаты, близкие к указанному местоположению, включая результаты за пределами указанной области. В следующем примере предыдущий запрос изменяется с учетом смещения местоположения:
Places 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"
:
Places 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
.
В этом примере начало координат устанавливается в центре Сан-Франциско:
Places 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. } } }];
Добавить виджет автозаполнения мест
Places 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 } ) } } }