Places SDK для iOS (новый) предоставляет вашему приложению подробную информацию о местах, включая название и адрес места, географическое положение, указанное в виде координат широты и долготы, тип места (например, ночной клуб, зоомагазин, музей) и многое другое. Чтобы получить доступ к этой информации о конкретном месте, вы можете использовать идентификатор места — стабильный уникальный идентификатор.
Получить информацию о месте
Класс GMSPlace
содержит информацию о конкретном месте, включая все поля данных, показанные в разделе «Поля данных места (новое)» . Чтобы получить объект GMSPlace
, вызовите метод GMSPlacesClient fetchPlaceWithRequest:
, передав объект GMSFetchPlaceRequest
и метод обратного вызова типа GMSPlaceResultCallback
.
Объект GMSFetchPlaceRequest
определяет:
- (Обязательно) Идентификатор места — уникальный идентификатор места в базе данных Google Places и на Google Maps.
- (Обязательно) Список полей, возвращаемых в объекте
GMSPlace
, также называемый маской поля , как определено вGMSPlaceProperty
. Если вы не укажете хотя бы одно поле в списке полей или пропустите список полей, вызов вернет ошибку. - (Необязательно) Код региона, используемый для форматирования ответа.
- (Необязательно) Токен сеанса, используемый для завершения сеанса автозаполнения (нового).
Сделайте запрос на информацию о месте
В этом примере получается место по идентификатору, передаются следующие параметры:
- Идентификатор места
ChIJV4k8_9UodTERU5KXbkYpSYs
. - Список полей, указывающих, следует ли возвращать название места и URL-адрес веб-сайта.
-
GMSPlaceResultCallback
для обработки результата.
API вызывает указанный метод обратного вызова, передавая объект GMSPlace
. Если место не найдено, объект места равен нулю.
Places Swift SDK
// 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 }
Быстрый
// 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))") })
Objective-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); } }];
Ответ на информацию о месте
Функция 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
, которое указывает, открыто ли предприятие, закрыто или статус неизвестен.
Язык | Значение, если открыто | Значение, если закрыто | Значение, если статус неизвестен |
---|---|---|---|
Места Свифт | true | false | nil |
Быстрый | .open | .closed | .unknown |
Objective-C | GMSPlaceOpenStatusOpen | GMSPlaceOpenStatusClosed | GMSPlaceOpenStatusUnknown |
Выставление счетов за isOpenWithRequest
- Поля
GMSPlacePropertyUTCOffsetMinutes
иGMSPlacePropertyBusinessStatus
тарифицируются по артикулу Basic Data . Остальные поля Opening Hours тарифицируются по артикулу Place Details Enterprise. - Если ваш объект
GMSPlace
уже содержит эти поля из предыдущего запроса, с вас не будет взиматься повторная плата.
Пример: создание запроса GMSPlaceIsOpenWithRequest
В следующем примере показано, как инициализировать GMSPlaceIsOpenWithRequest
в существующем объекте GMSPlace
. Places Swift SDK
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 }
Быстрый
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 } }
Objective-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 } }];
Обязательные параметры
Используйте объект GMSFetchPlaceRequest
для указания требуемых параметров.
Идентификатор места
Идентификатор места , используемый в Places SDK для iOS, совпадает с идентификатором, используемым в Places API, Places SDK для Android и других API Google. Каждый идентификатор места может относиться только к одному месту, но одно место может иметь несколько идентификаторов.
Существуют обстоятельства, при которых место может получить новый идентификатор. Например, это может произойти, если компания переезжает на новое место.
Запрашивая место, указывая его идентификатор, вы можете быть уверены, что в ответе всегда будет указано одно и то же место (если оно всё ещё существует). Однако обратите внимание, что в ответе может содержаться идентификатор места, отличный от указанного в вашем запросе.
Список полей
При запросе информации о месте необходимо указать возвращаемые данные в объекте GMSPlace
для этого места в виде маски поля. Чтобы определить маску поля, передайте массив значений из GMSPlaceProperty
в объект GMSFetchPlaceRequest
. Маскирование полей — это хорошая практика проектирования, позволяющая избежать запроса ненужных данных, что помогает избежать ненужного времени обработки и дополнительных расходов.
Укажите одно или несколько из следующих полей:
Следующие поля активируют Place Details Essentials ID Only SKU :
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotos
Следующие поля активируют Place Details Essentials SKU :
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewport
Следующие поля активируют Place Details Pro SKU :
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrance
Следующие поля активируют Place Details Pro SKU :
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Следующие поля активируют Place Details Enterprise SKU :
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
В следующем примере передается список из двух значений полей , чтобы указать, что объект GMSPlace
, возвращаемый запросом, содержит поля name
и placeID
:
Places Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Быстрый
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
Необязательные параметры
Используйте объект GMSFetchPlaceRequest
для указания необязательных параметров.
Код региона
Код региона, используемый для форматирования ответа, указывается как двухсимвольное значение кода CLDR . Этот параметр также может влиять на смещение результатов поиска. Значение по умолчанию отсутствует.
Если название страны в поле адреса в ответе совпадает с кодом региона, код страны из адреса исключается.
Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, ccTLD Великобритании — «uk» (.co.uk), а код ISO 3166-1 — «gb» (технически обозначает «Соединённое Королевство Великобритании и Северной Ирландии»). Этот параметр может влиять на результаты в зависимости от применимого законодательства.
sessionToken
Токены сеансов — это генерируемые пользователями строки, которые отслеживают вызовы функции автозаполнения (New) как «сеансы». Функция автозаполнения (New) использует токены сеансов для группировки этапов поиска и выбора мест в рамках пользовательского автозаполнения в отдельный сеанс для выставления счетов. Токены сеансов передаются в вызовы функции Place Details (New), следующие за вызовами функции автозаполнения (New). Подробнее см. в разделе Токены сеансов .
Отображение атрибуции в вашем приложении
Когда ваше приложение отображает информацию, полученную от GMSPlacesClient
, например фотографии и отзывы, приложение также должно отображать требуемые атрибуции.
Например, свойство reviews
объекта GMSPlacesClient
содержит массив, содержащий до пяти объектов GMSPlaceReview
. Каждый объект GMSPlaceReview
может содержать информацию об авторстве и авторстве. Если вы отображаете отзыв в своём приложении, необходимо также отображать информацию об авторстве и авторстве.
Более подробную информацию см. в документации по атрибуции .