Places SDK для iOS (новинка) предоставляет вашему приложению обширную информацию о местах, включая название и адрес места, географическое положение, указанное в виде координат широты и долготы, тип места (например, ночной клуб, зоомагазин, музей), и многое другое. Чтобы получить доступ к этой информации для конкретного места, вы можете использовать идентификатор места — стабильный идентификатор, который однозначно идентифицирует место.
Получить информацию о месте
Класс GMSPlace
содержит информацию о конкретном месте, включая все поля данных, показанные в Поля данных места (новое) . Получите объект GMSPlace
, вызвав GMSPlacesClient fetchPlaceWithRequest:
, передав объект GMSFetchPlaceRequest
и метод обратного вызова типа GMSPlaceResultCallback
.
Объект GMSFetchPlaceRequest
указывает:
- (Обязательно) Идентификатор места — уникальный идентификатор места в базе данных Google Адресов и на Картах Google.
- (Обязательно) Список полей, возвращаемых в объекте
GMSPlace
, также называемый маской поля , как определеноGMSPlaceProperty
. Если вы не укажете хотя бы одно поле в списке полей или опустите список полей, вызов вернет ошибку. - (Необязательно) Код региона, используемый для форматирования ответа.
- (Необязательно) Токен сеанса, используемый для завершения сеанса автозаполнения (нового).
Запросить информацию о месте
В этом примере место получает место по идентификатору, передавая следующие параметры:
- Идентификатор места
ChIJV4k8_9UodTERU5KXbkYpSYs
. - Список полей, указывающий на возврат названия места и URL-адреса веб-сайта.
-
GMSPlaceResultCallback
для обработки результата.
API вызывает указанный метод обратного вызова, передавая объект GMSPlace
. Если место не найдено, объект места равен нулю.
Быстрый
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Цель-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
Places Swift SDK для iOS (предварительная версия)
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
Ответ «Подробнее о месте»
Place Details возвращает объект GMSPlace
, содержащий сведения о месте. В объекте GMSPlace
заполняются только поля, указанные в списке полей.
Получить открытый статус
Объект GMSPlacesClient
содержит функцию-член isOpenWithRequest
( isOpenRequest
в Swift и isPlaceOpenRequest
в GooglePlacesSwift), которая возвращает ответ, указывающий, открыто ли место в данный момент, на основе времени, указанного в вызове.
Этот метод принимает один аргумент типа GMSPlaceIsOpenWithRequest
, который содержит:
- Объект
GMSPlace
или строка, определяющая идентификатор места. Подробнее о создании объекта Place с необходимыми полями см. в разделе Детали места . - Необязательный объект
NSDate
(Obj-C) илиDate
(Swift), указывающий время, которое вы хотите проверить. Если время не указано, по умолчанию используется значение «сейчас». - Метод
GMSPlaceOpenStatusResponseCallback
для обработки ответа. >
Для метода GMSPlaceIsOpenWithRequest
в объекте GMSPlace
необходимо задать следующие поля:
-
GMSPlacePropertyUTCOffsetMinutes
-
GMSPlacePropertyBusinessStatus
-
GMSPlacePropertyOpeningHours
-
GMSPlacePropertyCurrentOpeningHours
-
GMSPlacePropertySecondaryOpeningHours
Если эти поля не указаны в объекте Place или если вы передаете идентификатор места, метод использует GMSPlacesClient GMSFetchPlaceRequest:
для их получения.
Ответ isOpenWithRequest
isOpenWithRequest
возвращает объект GMSPlaceIsOpenResponse
, содержащий логическое значение с именем status
, которое указывает, открыто ли предприятие, закрыто или статус неизвестен.
Язык | Значение, если открыто | Значение, если закрыто | Значение, если статус неизвестен |
---|---|---|---|
Быстрый | .open | .closed | .unknown |
Цель-C | GMSPlaceOpenStatusOpen | GMSPlaceOpenStatusClosed | GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (предварительная версия) | true | false | nil |
Выставление счетов за isOpenWithRequest
- Поля
GMSPlacePropertyUTCOffsetMinutes
иGMSPlacePropertyBusinessStatus
оплачиваются по номеру SKU базовых данных . Остальная часть часов работы оплачивается по номеру SKU «Сведения о месте (расширенный)». - Если ваш объект
GMSPlace
уже содержит эти поля из предыдущего запроса, с вас больше не будет взиматься плата.
Пример. Сделайте запрос GMSPlaceIsOpenWithRequest
В следующем примере показано, как инициализировать GMSPlaceIsOpenWithRequest
внутри существующего объекта GMSPlace
. Быстрый
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Цель-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Обязательные параметры
Используйте объект GMSFetchPlaceRequest
, чтобы указать необходимые параметры.
Идентификатор места
Идентификатор места , используемый в Places SDK для iOS, совпадает с идентификатором, который используется в Places API, Places SDK для Android и других API Google. Каждый идентификатор места может относиться только к одному месту, но одно место может иметь более одного идентификатора места.
Существуют обстоятельства, которые могут привести к тому, что месту будет присвоен новый идентификатор. Например, это может произойти, если бизнес переезжает на новое место.
Когда вы запрашиваете место, указав идентификатор места, вы можете быть уверены, что всегда получите в ответ одно и то же место (если оно еще существует). Однако обратите внимание, что ответ может содержать идентификатор места, отличный от идентификатора в вашем запросе.
Список полей
Когда вы запрашиваете сведения о месте, вы должны указать возвращаемые данные в объекте GMSPlace
для этого места в виде маски поля. Чтобы определить маску поля, передайте массив значений из GMSPlaceProperty
в объект GMSFetchPlaceRequest
. Маскирование полей — это хорошая практика проектирования, позволяющая избежать запроса ненужных данных, что помогает избежать ненужного времени обработки и затрат на выставление счетов.
Укажите одно или несколько из следующих полей:
Следующие поля активируют SKU сведений о месте (только идентификатор) :
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
,GMSPlacePropertyPhotos
Следующие поля активируют SKU «Сведения о месте (только местоположение)» :
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
Следующие поля активируют SKU «Сведения о месте (базовый)» :
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
Следующие поля активируют SKU сведений о месте (расширенный) :
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
, gmsplacepropertyopeninghours,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Следующие поля активируют SKU сведений о месте (предпочтительно) :
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
В следующем примере передается список из двух значений полей , чтобы указать, что объект GMSPlace
, возвращаемый запросом, содержит поля name
и placeID
:
Быстрый
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Цель-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
Places Swift SDK для iOS (предварительная версия)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Дополнительные параметры
Используйте объект GMSFetchPlaceRequest
, чтобы указать необязательные параметры.
Код региона
Код региона, используемый для форматирования ответа в виде двухсимвольного значения кода CLDR . Этот параметр также может оказывать влияние на результаты поиска. Значения по умолчанию нет.
Если название страны в поле адреса в ответе соответствует коду региона, код страны в адресе опускается.
Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, нДВУ Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически для организации «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может повлиять на результаты в соответствии с действующим законодательством.
сессионный токен
Токены сеанса — это созданные пользователем строки, которые отслеживают вызовы автозаполнения (новые) как «сеансы». Автозаполнение (новое) использует токены сеанса для группировки запроса и размещения этапов выбора пользовательского поиска с автозаполнением в отдельный сеанс для целей выставления счетов. Токены сеанса передаются в вызовы Place Details (New), которые следуют за вызовами Autocomplete (New). Дополнительные сведения см. в разделе Токены сеанса .
Отображение авторства в вашем приложении
Когда ваше приложение отображает информацию, полученную от GMSPlacesClient
, например фотографии и обзоры, приложение также должно отображать необходимые сведения об авторстве.
Например, свойство reviews
объекта GMSPlacesClient
содержит массив, содержащий до пяти объектов GMSPlaceReview
. Каждый объект GMSPlaceReview
может содержать сведения об авторстве и авторстве. Если вы отображаете обзор в своем приложении, вы также должны указать любую ссылку или ссылку на автора.
Дополнительную информацию см. в документации по атрибуции .