Переход на функцию "Фотографии места" (новая версия)

В Places SDK для iOS (устаревшей версии) поддерживается устаревшая версия API "Фотографии мест". Если вы знакомы с устаревшим кодом Place Photos, то заметите, что в новом коде Place Photos произошли следующие изменения:

  • Используется новая модель ценообразования. Сведения о ценах на все API приведены в статье Статистика использования и оплата.

  • В Place Photos (Legacy) поддерживались фотографии размером не более 1600 x 1600 пикселей. Place Photos (Новое) поддерживает изображения размером до 4800 x 4800 пикселей.

  • Чтобы отправить запрос, вызовите новый метод GMSPlacesClient fetchPhotoWithRequest:callback:.

  • Передайте в запрос:

    • Экземпляр нового класса GMSFetchPhotoRequest, который определяет все параметры запроса, включая максимальный размер изображения.

    • Обратный вызов типа GMSPlacePhotoMetadataResultCallback для обработки ответа.

  • Каждая фотография представлена экземпляром GMSPlacePhotoMetadata. В новом Places SDK для iOS экземпляр GMSPlacePhotoMetadata содержит новое поле authorAttribution, представленное новым классом GMSPlaceAuthorAttribution.

    Если возвращенный экземпляр GMSPlacePhotoMetadata содержит attributions или authorAttribution, в приложении вместе с изображением необходимо указывать авторство. Подробнее об атрибуции…

Пример запроса

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

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Request list of photos for a place
placesClient.lookUpPhotos(forPlaceID: placeID) { (photos, error) in

  guard let photoMetadata: GMSPlacePhotoMetadata = photos?.results[0] else {
    return }

  // Request individual photos in the response list
  let fetchPhotoRequest = GMSFetchPhotoRequest(photoMetadata: photoMetadata, maxSize: CGSizeMake(4800, 4800))
  self.client.fetchPhoto(with: fetchPhotoRequest, callback: {
    (photoImage: UIImage?, error: Error?) in
      guard let photoImage, error == nil else {
        print("Handle photo error: ")
        return }
      print("Display photo Image: ")
    }
  )
}

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

[placesClient lookUpPhotosForPlaceID:placeID callback: ^(GMSPlacePhotoMetadataList *list, NSError *error) {
  GMSPlacePhotoMetadata *photoMetadata = [list results][0];

  // Request individual photos in the response list
  GMSFetchPhotoRequest *fetchPhotoRequest = [[GMSFetchPhotoRequest alloc] initWithPhotoMetadata:photoMetadata maxSize:CGSizeMake(4800, 4800)];
  [placesClient fetchPhotoWithRequest:fetchPhotoRequest callback: ^(UIImage *_Nullable photoImage, NSError *_Nullable error) {
    if (error == nil) {
      // Display photo
    }
  }];
}];