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

Выберите платформу: Android iOS JavaScript Web Service

Places SDK для iOS (новый) предоставляет вашему приложению обширную информацию о местах, включая название и адрес места, географическое местоположение, указанное в виде координат широты/долготы, тип места (например, ночной клуб, зоомагазин, музей) и многое другое. Чтобы получить доступ к этой информации для определенного места, вы можете использовать идентификатор места — стабильный идентификатор, который однозначно идентифицирует место.

Получить информацию о месте

Класс GMSPlace содержит информацию о конкретном месте, включая все поля данных, показанные в Place Data Fields (New) . Получите объект GMSPlace , вызвав GMSPlacesClient fetchPlaceWithRequest: , передав объект GMSFetchPlaceRequest и метод обратного вызова типа GMSPlaceResultCallback .

Объект GMSFetchPlaceRequest определяет:

  • (Обязательно) Идентификатор места — уникальный идентификатор места в базе данных Google Places и на Картах Google.
  • (Обязательно) Список полей для возврата в объекте GMSPlace , также называемый маской поля , как определено GMSPlaceProperty . Если вы не укажете хотя бы одно поле в списке полей или пропустите список полей, то вызов вернет ошибку.
  • (Необязательно) Код региона, используемый для форматирования ответа.
  • (Необязательно) Токен сеанса, используемый для завершения сеанса автозаполнения (нового).

Сделайте запрос на информацию о месте

В этом примере получается место по идентификатору, передаются следующие параметры:

  • Идентификатор места ChIJV4k8_9UodTERU5KXbkYpSYs .
  • Список полей, указывающих, следует ли возвращать название места и URL-адрес веб-сайта.
  • Обратный GMSPlaceResultCallback для обработки результата.

API вызывает указанный метод обратного вызова, передавая объект GMSPlace . Если место не найдено, объект места равен нулю.

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

Пример: сделайте запрос GMSPlaceIsOpenWithRequest

В следующем примере показано, как инициализировать GMSPlaceIsOpenWithRequest в существующем объекте GMSPlace .

Место 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 для указания требуемых параметров.

Место ID

Идентификатор места , используемый в 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 :

Место 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

Токены сеанса — это строки, сгенерированные пользователем, которые отслеживают вызовы Autocomplete (New) как «сеансы». Autocomplete (New) использует токены сеанса для группировки фаз запроса и выбора места поиска пользователя с автозаполнением в отдельный сеанс для выставления счетов. Токены сеанса передаются в вызовы Place Details (New), которые следуют за вызовами Autocomplete (New). Для получения дополнительной информации см. Токены сеанса .

Отображение атрибуции в вашем приложении

Когда ваше приложение отображает информацию, полученную от GMSPlacesClient , например фотографии и отзывы, приложение также должно отображать требуемые атрибуции.

Например, свойство reviews объекта GMSPlacesClient содержит массив из пяти объектов GMSPlaceReview . Каждый объект GMSPlaceReview может содержать атрибуции и авторские атрибуции. Если вы отображаете обзор в своем приложении, то вы также должны отображать любую атрибуцию или авторскую атрибуцию.

Более подробную информацию см. в документации по атрибуции .