Сведения о месте (новое)

Выберите платформу: Android iOS JavaScript Веб-сервис
Разработчики из Европейской экономической зоны (ЕЭЗ)

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

Пример: Выполните запрос 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.

Укажите одно или несколько из следующих полей:

В следующем примере передается список из двух значений полей , чтобы указать, что объект 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 может содержать информацию об авторстве и его авторстве. Если вы отображаете отзыв в своем приложении, то вы также должны отображать любую информацию об авторстве или его авторстве.

Для получения более подробной информации см. документацию по атрибуции .