Możesz użyć pakietu SDK Miejsc na iOS (nowy), aby wyświetlić w aplikacji zdjęcia miejsc. Zdjęcia zwracane przez usługę dotyczącą zdjęć pochodzą z różnych źródeł, w tym od właścicieli firm i użytkowników.
Zdjęcia to obrazy bitmapowe reprezentowane przez obiekt UIImage. Maksymalny rozmiar obrazu bitmapowego to 4800 x 4800 pikseli.
Prośba o obraz
Możesz poprosić o maksymalnie 10 zdjęć danego miejsca:
Wywołaj funkcję
[GMSPlacesClient lookUpPhotosForPlaceID]
, podając identyfikator miejsca docelowego i funkcję wywołaniaGMSPlacePhotoMetadataResultCallback
. To żądanie wywołuje funkcjęGMSPlacePhotoMetadataResultCallback
z obiektemGMSPlacePhotoMetadataList
.W obiekcie
GMSPlacePhotoMetadataList
w wywołaniu zwrotnym właściwość tablicyresults
zawiera zdjęcia, przy czym każde zdjęcie jest reprezentowane przez obiektGMSPlacePhotoMetadata
.Użyj obiektu
GMSPlacePhotoMetadata
, aby utworzyćGMSFetchPhotoRequest
, uwzględniając maksymalny rozmiar żądanego obrazu.W przypadku każdego obiektu
GMSPlacePhotoMetadata
w tablicy wywołaj funkcję[GMSPlacesClient fetchPhotoWithRequest:callback:]
, przekazując obiektGMSFetchPhotoRequest
. Ta metoda wywołuje wywołanie zwrotneGMSFetchPhotoResultCallback
z użytecznym obrazem bitmapy w postaci obiektu UIImage.
Innym sposobem na przesłanie prośby o zdjęcia miejsca jest wysłanie żądania Szczegóły miejsca (nowe), w którym uwzględnisz pole GMSPlacePropertyPhotos
. Zaletą wywołania metody Szczegóły miejsca jest to, że obiekt odpowiedzi GMSPlace
może zawierać zdjęcia i inne pola danych, które chcesz uzyskać.
Przykładowy kod
W tym przykładzie metoda przyjmuje identyfikator miejsca i pobiera pierwsze zdjęcie z listy zwróconych danych. Możesz użyć tej metody jako szablonu dla metody, którą utworzysz w swojej aplikacji.
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 } }]; }];
Places Swift SDK na iOS (wersja podglądowa)
// First fetch place details // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [ . name, .website ] ) var fetchedPlace: Place switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): fetchedPlace = place case .failure(let placesError): // Handle error } // Use the place details to fetch a photo's image. guard let photo = fetchedPlace.photos?.first else { // Handle place without photos. } let fetchPhotoRequest = FetchPhotoRequest(photo: photo, maxSize: CGSizeMake(4800, 4800)) switch await placesClient.fetchPhoto(with: fetchPhotoRequest) { case .success(let uiImage): // Handle image. case .failure(let placesError): // Handle error }
Pamięć podręczna
Zdjęcia wczytane za pomocą funkcji [GMSPlacesClient loadPlacePhoto:callback:]
lub [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
są przechowywane w pamięci podręcznej i na dysku przez system wczytywania adresów URL Foundation w udostępnionym NSURLCache
.
Aby skonfigurować zachowanie pamięci podręcznej, możesz zmienić współdzieloną pamięć podręczną adresów URL za pomocą metody [NSURLCache setSharedURLCache:]
w delegacie aplikacji application:didFinishLaunchingWithOptions:
.
Jeśli nie chcesz, aby Twoja aplikacja udostępniała NSURLCache
pakietowi SDK Places na iOS, możesz utworzyć nowy element NSURLCache
i używać go wyłącznie w aplikacji, nie ustawiając go jako współdzielonej pamięci podręcznej.
Atrybucje
W większości przypadków zdjęcia miejsc można używać bez przypisania autorstwa lub będą one zawierać wymagane informacje o autorze. Jeśli jednak zwrócony obiekt GMSPlacePhotoMetadata
zawiera jakiekolwiek atrybuty attributions
lub authorAttribution
, musisz uwzględnić te atrybuty w aplikacji w miejscach, w których wyświetlasz obraz. Zapoznaj się z dokumentacją dotyczącą przypisywania atrybucji.