Możesz użyć pakietu SDK Miejsc na iOS (nowego), aby poprosić o zdjęcia miejsc wyświetlania w aplikacji. Zdjęcia zwrócone przez usługę do zdjęć pochodzą z z różnych źródeł, w tym od właścicieli firm i zdjęć przesyłanych przez użytkowników.
Zdjęcia to bitmapy reprezentowane UIImage. Maksymalny rozmiar obrazu bitmapy to 4800 x 4800 pikseli.
Poproś o obraz
Możesz poprosić o dodanie maksymalnie 10 zdjęć dla danego miejsca:
Zadzwoń do nas
[GMSPlacesClient lookUpPhotosForPlaceID]
przekazując identyfikator miejsca orazGMSPlacePhotoMetadataResultCallback
oddzwonienie. To żądanie wywołuje wywołanie zwrotneGMSPlacePhotoMetadataResultCallback
zGMSPlacePhotoMetadataList
. obiektu.Z obiektu
GMSPlacePhotoMetadataList
w wywołaniu zwrotnymresults
. właściwość tablica zawiera zdjęcia, z których każde jest przedstawiane przezGMSPlacePhotoMetadata
obiektu.Użyj obiektu
GMSPlacePhotoMetadata
do utworzeniaGMSFetchPhotoRequest
, łącznie z maksymalnym rozmiarem żądanego obrazu.Dla każdego obiektu
GMSPlacePhotoMetadata
w tablicy wywołaj funkcję[GMSPlacesClient fetchPhotoWithRequest:callback:]
. przekazując obiektGMSFetchPhotoRequest
. Ta metoda wywołuje metodęGMSFetchPhotoResultCallback
z użytecznym obrazem bitmapy jako UIImage.
Innym sposobem wysłania prośby o zdjęcia miejsca jest
Żądanie Place Details (Nowe),
w tym GMSPlacePropertyPhotos
na liście pól. Korzyści wynikające z utworzenia
Wywołanie szczegółów miejsca oznacza, że odpowiedź
GMSPlace
może zawierać zdjęcia i inne pola danych, które mają być
danego miejsca.
Przykładowy kod
Ta przykładowa metoda rejestruje identyfikator miejsca i pobiera pierwsze zdjęcie w zwrócona lista. Możesz użyć tej metody jako szablonu metody utwórz we własnej 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 } }]; }];
GooglePlacesSwift
// 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 }
Zapisywanie w pamięci podręcznej
Zdjęcia wczytane przy użyciu aplikacji [GMSPlacesClient loadPlacePhoto:callback:]
lub [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
są buforowane zarówno na dysku, jak i w pamięci przez system wczytywania adresu URL Fundation.
w udostępnionym NSURLCache
.
Aby skonfigurować działanie buforowania, możesz zmienić udostępnianą pamięć podręczną adresu URL za pomocą
[NSURLCache setSharedURLCache:]
w dokumencie application:didFinishLaunchingWithOptions:
przedstawiciela aplikacji
.
Jeśli nie chcesz, aby Twoja aplikacja udostępniała zasób NSURLCache
W Miejscach SDK na iOS można utworzyć nowy obiekt NSURLCache
i użyć go
tylko w aplikacji, bez ustawiania jej jako współdzielonej pamięci podręcznej.
Atrybucje
W większości przypadków zdjęcia miejsc można wykorzystać bez podawania informacji o autorze.
wymagane źródło informacji. Jeśli jednak zostanie zwrócony
GMSPlacePhotoMetadata
instancja zawiera dowolne
attributions
lub
authorAttribution
,
musisz umieścić te informacje w aplikacji w każdym miejscu, w którym wyświetlasz
. Zobacz dokumentację na stronie
atrybucje.