The Places SDK for iOS (New) provides your app with rich information about places, including the place's name and address, the geographical location specified as latitude/longitude coordinates, the type of place (such as night club, pet store, museum), and more. To access this information for a specific place, you can use the place ID, a stable identifier that uniquely identifies a place.
Получить подробную информацию о месте.
Класс GMSPlace содержит информацию о конкретном месте, включая все поля данных, показанные в разделе «Поля данных места (новые)» . Получить объект GMSPlace можно, вызвав GMSPlacesClient fetchPlaceWithRequest: передав объект GMSFetchPlaceRequest и метод обратного вызова типа GMSPlaceResultCallback .
Объект GMSFetchPlaceRequest определяет:
- (Обязательно) Идентификатор места (place ID) — уникальный идентификатор места в базе данных Google Places и на Google Maps.
- (Обязательно) Список полей, которые должны быть возвращены в объекте
GMSPlace, также называемый маской полей , как определено вGMSPlaceProperty. Если вы не укажете хотя бы одно поле в списке полей или если вы его опустите, вызов вернет ошибку. - (Необязательно) Код региона, используемый для форматирования ответа.
- (Необязательно) Токен сессии, используемый для завершения сессии автозаполнения (создания нового элемента).
Отправить запрос на предоставление подробной информации о месте
В этом примере место определяется по идентификатору с передачей следующих параметров:
- Идентификатор места
ChIJV4k8_9UodTERU5KXbkYpSYs. - Список полей, в которых необходимо отобразить название места и URL-адрес веб-сайта.
- Объект
GMSPlaceResultCallbackдля обработки результата.
API вызывает указанный метод обратного вызова, передавая объект GMSPlace . Если место не найдено, объект места равен nil.
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 response
isOpenWithRequest возвращает объект GMSPlaceIsOpenResponse , содержащий логическое значение с именем status , указывающее, открыто ли предприятие, закрыто или его статус неизвестен.
| Язык | Значение при открытии | Стоимость при закрытии | Значение, если статус неизвестен |
|---|---|---|---|
| Места Свифт | true | false | nil |
| Быстрый | .open | .closed | .unknown |
| Objective-C | GMSPlaceOpenStatusOpen | GMSPlaceOpenStatusClosed | GMSPlaceOpenStatusUnknown |
Оплата за isOpenWithRequest
- Поля
GMSPlacePropertyUTCOffsetMinutesиGMSPlacePropertyBusinessStatusоплачиваются в рамках SKU «Основные данные» . Остальные данные о часах работы оплачиваются в рамках SKU «Подробная информация о месте» для предприятий. - Если ваш объект
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. Каждый идентификатор места может относиться только к одному месту, но одно место может иметь более одного идентификатора.
Существуют обстоятельства, при которых заведению может быть присвоен новый идентификатор. Например, это может произойти, если компания переезжает в новое место.
При запросе места с указанием его идентификатора (ID) вы можете быть уверены, что всегда получите в ответе одно и то же место (если оно еще существует). Однако обратите внимание, что ответ может содержать идентификатор места, отличающийся от идентификатора в вашем запросе.
Список полей
When you request place details, you must specify the data to return in the GMSPlace object for the place as a field mask. To define the field mask pass an array of values from GMSPlaceProperty to the GMSFetchPlaceRequest object. Field masking is a good design practice to make sure that you don't request unnecessary data, which helps to avoid unnecessary processing time and billing charges.
Укажите одно или несколько из следующих полей:
Следующие поля активируют SKU, содержащий только идентификатор основных данных о месте :
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosПолный список полей и соответствующих им артикулов см. в разделе «Размещение полей данных (новое)» .
Следующие поля активируют SKU «Основные сведения о месте» :
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportПолный список полей и соответствующих им артикулов см. в разделе «Размещение полей данных (новое)» .
Следующие поля активируют артикул Place Details Pro :
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntranceПолный список полей и соответствующих им артикулов см. в разделе «Размещение полей данных (новое)» .
Следующие поля активируют артикул Place Details Pro :
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteПолный список полей и соответствующих им артикулов см. в разделе «Размещение полей данных (новое)» .
Следующие поля запускают функцию создания корпоративного артикула данных о месте :
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 .
regionCode
Региональный код, используемый для форматирования ответа, указывается в виде двухсимвольного кода CLDR . Этот параметр также может влиять на результаты поиска. Значение по умолчанию отсутствует.
Если название страны в адресном поле ответа совпадает с кодом региона, то код страны опускается в адресе.
Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, национальный домен верхнего уровня Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически обозначающий «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может влиять на результаты в зависимости от применимого законодательства.
sessionToken
Session tokens are user-generated strings that track Autocomplete (New) calls as "sessions." Autocomplete (New) uses session tokens to group the query and place selection phases of a user autocomplete search into a discrete session for billing purposes. Session tokens are passed into Place Details (New) calls that follow Autocomplete (New) calls. For more information, see Session tokens .
Отображайте атрибуцию в своем приложении
Когда ваше приложение отображает информацию, полученную от GMSPlacesClient , такую как фотографии и отзывы, оно также должно отображать необходимые атрибуты.
Например, свойство reviews объекта GMSPlacesClient содержит массив, содержащий до пяти объектов GMSPlaceReview . Каждый объект GMSPlaceReview может содержать информацию об авторстве и его авторстве. Если вы отображаете отзыв в своем приложении, то вы также должны отображать любую информацию об авторстве или его авторстве.
Для получения более подробной информации см. документацию по атрибуции .