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

Выберите платформу: Android iOS Веб-служба JavaScript

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

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

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

Объект GMSFetchPlaceRequest указывает:

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

Запросить информацию о месте

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

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

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

Быстрый

// 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))")
})

Цель-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);
  }
}];

Places Swift SDK для iOS (предварительная версия)

// 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
}

Ответ «Подробнее о месте»

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

Язык Значение, если открыто Значение, если закрыто Значение, если статус неизвестен
Быстрый .open .closed .unknown
Цель-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (предварительная версия) true false nil

Выставление счетов за isOpenWithRequest

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

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

Быстрый

    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
        }
      }
        

Цель-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
            }
          }];
          

GooglePlacesSwift

          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
          }
          

Обязательные параметры

Используйте объект GMSFetchPlaceRequest , чтобы указать необходимые параметры.

Идентификатор места

Идентификатор места , используемый в Places SDK для iOS, совпадает с идентификатором, который используется в Places API, Places SDK для Android и других API Google. Каждый идентификатор места может относиться только к одному месту, но одно место может иметь более одного идентификатора места.

Существуют обстоятельства, которые могут привести к тому, что месту будет присвоен новый идентификатор. Например, это может произойти, если бизнес переезжает на новое место.

Когда вы запрашиваете место, указав идентификатор места, вы можете быть уверены, что всегда получите в ответ одно и то же место (если оно еще существует). Однако обратите внимание, что ответ может содержать идентификатор места, отличный от идентификатора в вашем запросе.

Список полей

Когда вы запрашиваете сведения о месте, вы должны указать возвращаемые данные в объекте GMSPlace для этого места в виде маски поля. Чтобы определить маску поля, передайте массив значений из GMSPlaceProperty в объект GMSFetchPlaceRequest . Маскирование полей — это хорошая практика проектирования, позволяющая избежать запроса ненужных данных, что помогает избежать ненужного времени обработки и затрат на выставление счетов.

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

  • Следующие поля активируют SKU сведений о месте (только идентификатор) :

    GMSPlacePropertyPlaceID , GMSPlacePropertyName , GMSPlacePropertyPhotos

  • Следующие поля активируют SKU «Сведения о месте (только местоположение)» :

    GMSPlacePropertyAddressComponents , GMSPlacePropertyFormattedAddress , GMSPlacePropertyCoordinate , GMSPlacePropertyPlusCode , GMSPlacePropertyTypes , GMSPlacePropertyViewport

  • Следующие поля активируют SKU «Сведения о месте (базовый)» :

    GMSPlacePropertyBusinessStatus , GMSPlacePropertyIconBackgroundColor , GMSPlacePropertyIconImageURL , GMSPlacePropertyUTCOffsetMinutes , GMSPlacePropertyWheelchairAccessibleEntrance

  • Следующие поля активируют SKU сведений о месте (расширенный) :

    GMSPlacePropertyCurrentOpeningHours , GMSPlacePropertySecondaryOpeningHours , GMSPlacePropertyPhoneNumber , GMSPlacePropertyPriceLevel , GMSPlacePropertyRating , gmsplacepropertyopeninghours, GMSPlacePropertyOpeningHours , GMSPlacePropertyUserRatingsTotal , GMSPlacePropertyWebsite

  • Следующие поля активируют SKU сведений о месте (предпочтительно) :

    GMSPlacePropertyCurbsidePickup , GMSPlacePropertyDelivery , GMSPlacePropertyDineIn , GMSPlacePropertyEditorialSummary , GMSPlacePropertyReservable , GMSPlacePropertyReviews , GMSPlacePropertyServesBeer , GMSPlacePropertyServesBreakfast , GMSPlacePropertyServesBrunch , GMSPlacePropertyServesDinner , GMSPlacePropertyServesLunch , GMSPlacePropertyServesVegetarianFood , GMSPlacePropertyServesWine , GMSPlacePropertyTakeout

В следующем примере передается список из двух значений полей , чтобы указать, что объект GMSPlace , возвращаемый запросом, содержит поля name и placeID :

Быстрый

// Specify the place data types to return.
let fields: [GMSPlaceProperty] = [.placeID, .name]
  

Цель-C

// Specify the place data types to return.
NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
  

Places Swift SDK для iOS (предварительная версия)

// Specify the place data types to return.
let fields: [PlaceProperty] = [.placeID, .displayName]
    

Дополнительные параметры

Используйте объект GMSFetchPlaceRequest , чтобы указать необязательные параметры.

Код региона

Код региона, используемый для форматирования ответа в виде двухсимвольного значения кода CLDR . Этот параметр также может оказывать влияние на результаты поиска. Значения по умолчанию нет.

Если название страны в поле адреса в ответе соответствует коду региона, код страны в адресе опускается.

Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, нДВУ Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически для организации «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может повлиять на результаты в соответствии с действующим законодательством.

сессионный токен

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

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

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

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

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