Places SDK для iOS предоставляет вашему приложению подробную информацию о местах, включая название и адрес места, географическое положение, указанное в виде координат широты и долготы, тип места (например, ночной клуб, зоомагазин, музей) и многое другое. Чтобы получить доступ к этой информации для определенного места, вы можете использовать идентификатор места, стабильный идентификатор, который однозначно идентифицирует место.
Сведения о месте
Класс GMSPlace
предоставляет информацию о конкретном месте. Вы можете получить объект GMSPlace
следующими способами:
- Вызов
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
. См. руководство по получению текущего места . - Вызовите
GMSPlacesClient fetchPlaceFromPlaceID:
, передавGMSPlaceField
, идентификатор места и метод обратного вызова. Для запросов сведений о месте, если вы не укажете хотя бы одно поле в запросе или пропустите параметрfields
в запросе, будут возвращены ВСЕ возможные поля, и вам будет выставлен счет соответственно. См. руководство по получению места по ID .
Когда вы запрашиваете место, вы должны указать, какие типы данных о месте должны быть возвращены. Для этого передайте GMSPlaceField
, указав возвращаемые типы данных. Это важное соображение, поскольку оно повлияет на стоимость каждого запроса.
Поскольку результаты с данными о местах не могут быть пустыми, возвращаются только результаты о местах с данными (например, если в запрошенном месте нет фотографий, поле photos
не будет в результатах).
В следующем примере передается список из двух значений полей для указания данных, возвращаемых запросом:
Быстрый
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))!
Цель-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
Подробнее о полях мест . Дополнительную информацию о том, как оплачиваются запросы данных Place, см. в разделе Использование и выставление счетов .
Класс GMSPlace
может содержать следующие данные о месте:
-
name
– название места. -
placeID
— текстовый идентификатор места. Подробнее об идентификаторах мест читайте в оставшейся части этой страницы. -
coordinate
— географическое положение места, указанное в виде координат широты и долготы. -
phoneNumber
— номер телефона места в международном формате. -
formattedAddress
— удобочитаемый адрес этого местоположения.Часто этот адрес эквивалентен почтовому адресу. Обратите внимание, что в некоторых странах, например в Великобритании, распространение настоящих почтовых адресов запрещено из-за лицензионных ограничений.
Отформатированный адрес логически состоит из одного или нескольких компонентов адреса . Например, адрес «111 8th Avenue, New York, NY» состоит из следующих компонентов: «111» (номер улицы), «8th Avenue» (маршрут), «New York» (город) и «NY "(штат США).
Не анализируйте отформатированный адрес программно. Вместо этого следует использовать отдельные компоненты адреса, которые включаются в ответ API в дополнение к форматированному полю адреса.
-
openingHours
— часы работы места (представленныеGMSOpeningHours
). ВызовитеGMSOpeningHours.weekdayText
, чтобы получить список локализованных строк ежедневных часов работы на неделю. ВызовитеGMSOpeningHours.Periods
, чтобы вернуть списокGMSPeriod
с более подробной информацией, которая эквивалентна данным, предоставленнымweekdayText
. Примечание. Если место всегда открыто, период времени представлен как воскресенье в полночь, аcloseEvent
имеет значение null. addressComponents
— массив объектовGMSAddressComponent
, представляющих компоненты адреса места. Эти компоненты предназначены для извлечения структурированной информации об адресе места, например, для поиска города, в котором расположено место. Не используйте эти компоненты для форматирования адреса; вместо этого используйте свойствоformattedAddress
, которое предоставляет локализованный отформатированный адрес.Обратите внимание на следующие факты о массиве
addressComponents
:- Массив компонентов адреса может содержать больше компонентов, чем
formattedAddress
. - Массив не обязательно включает все политические объекты, содержащие адрес, за исключением включенных в
formattedAddress
. - Не гарантируется, что формат ответа останется неизменным между запросами. В частности, количество
addressComponents
варьируется в зависимости от запрошенного адреса и может меняться со временем для одного и того же адреса. Компонент может менять позицию в массиве. Тип компонента может меняться. Определенный компонент может отсутствовать в более позднем ответе.
- Массив компонентов адреса может содержать больше компонентов, чем
-
userRatingsTotal
— показывает, сколько отзывов составляет рейтинг места.
Класс GMSPlace
содержит следующие функции-члены:
-
isOpen
вычисляет, открыто ли место в заданное время, на основеopeningHours
иUTCOffsetMinutes
, а также текущей даты и времени. -
isOpenAtDate
вычисляет, открыто ли место в указанную дату, на основеopeningHours
иUTCOffsetMinutes
, а также текущей даты и времени.
При использовании этих функций для получения времени и/или дат открытия исходный fetchPlaceFromPlaceID:
или findPlaceLikelihoodsFromUserLocationWithPlaceFields:
должен указывать ОБА GMSPlaceFieldOpeningHours
и GMSPlaceFieldUTCOffsetMinutes
. Если какое-либо из этих полей отсутствует, результирующий объект GMSPlace
не будет содержать время или дату открытия, и вызов вернет GMSPlaceOpenStatusUnknown
. Чтобы обеспечить точные результаты, запросите поля GMSPlaceFieldBusinessStatus
и GMSPlaceFieldUTCOffsetMinutes
в исходном запросе места. Если не запрашивается, предполагается, что бизнес работает.
isOpen
со сведениями о месте.Получить место по ID
Идентификатор места — это текстовый идентификатор, который однозначно идентифицирует место. В Places SDK для iOS вы можете получить идентификатор места из объекта GMSPlace
. Вы можете сохранить идентификатор места и использовать его для повторного получения объекта GMSPlace
позже.
Чтобы получить место по ID, вызовите GMSPlacesClient fetchPlaceFromPlaceID:
, передав следующие параметры:
- Строка, содержащая идентификатор места.
- Один или несколько
GMSPlaceField
s, указывающих возвращаемые типы данных. - Маркер сеанса, если вызов выполняется для завершения запроса автозаполнения. В противном случае передать ноль.
-
GMSPlaceResultCallback
для обработки результата.
API вызывает указанный метод обратного вызова, передавая объект GMSPlace
. Если место не найдено, объект места равен нулю.
Быстрый
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Цель-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Отображение атрибутов в вашем приложении
Когда ваше приложение отображает информацию, полученную от GMSPlacesClient lookUpPlaceID:callback:
, приложение также должно отображать атрибуции. См. документацию по атрибуциям .
Подробнее об идентификаторах мест
Идентификатор места, используемый в Places SDK для iOS, совпадает с идентификатором, используемым в Places API, Places SDK для Android и других API Google .
Каждый идентификатор места может относиться только к одному месту, но одно место может иметь более одного идентификатора места.
Существуют обстоятельства, которые могут привести к тому, что место получит новый идентификатор места. Например, это может произойти, если бизнес переезжает на новое место.
Когда вы запрашиваете место, указывая идентификатор места, вы можете быть уверены, что всегда получите одно и то же место в ответе (если место все еще существует). Обратите внимание, однако, что ответ может содержать идентификатор места, отличный от того, который указан в вашем запросе.
Для получения дополнительной информации см. обзор идентификатора места .