Sie können das Places SDK for iOS (New) verwenden, um Fotos von Orten anzufordern, in Ihrer Anwendung anzuzeigen. Vom Fotodienst zurückgegebene Fotos stammen aus einem aus verschiedenen Quellen, einschließlich Geschäftsinhabern und Fotos, die von Nutzern beigesteuert wurden.
Fotos sind Bitmapbilder, die durch eine UIImage-Objekts. Ein Bitmapbild darf maximal 4.800 x 4.800 Pixel groß sein.
Bild anfordern
Sie können bis zu zehn Fotos für einen Ort anfordern:
Anruf
[GMSPlacesClient lookUpPhotosForPlaceID]
, übergeben eine Orts-ID und eineGMSPlacePhotoMetadataResultCallback
-Rückruf. Diese Anfrage ruft denGMSPlacePhotoMetadataResultCallback
-Callback mit einerGMSPlacePhotoMetadataList
-Objekt enthält.Aus dem
GMSPlacePhotoMetadataList
-Objekt im Callbackresults
Array-Eigenschaft enthält die Fotos, wobei jedes Foto durch einGMSPlacePhotoMetadata
-Objekt enthält.Verwenden Sie das
GMSPlacePhotoMetadata
-Objekt, um einGMSFetchPhotoRequest
-Objekt zu erstellen, einschließlich der maximalen Größe des angeforderten Bildes.Rufe für jedes
GMSPlacePhotoMetadata
-Objekt im Array[GMSPlacesClient fetchPhotoWithRequest:callback:]
mit demGMSFetchPhotoRequest
-Objekt auf. Diese Methode ruft die MethodeGMSFetchPhotoResultCallback
mit einem nutzbaren Bitmapbild als UIImage zurück.
Sie können auch Fotos für einen Ort anfordern, indem Sie
Place Details (New)-Anfrage,
einschließlich GMSPlacePropertyPhotos
in der Feldliste. Der Vorteil einer
„Place Details“-Aufruf
ist, dass die Antwort
GMSPlace
kann die Fotos und andere Datenfelder enthalten, die Sie für
auf den Ort.
Beispielcode
In der folgenden Beispielmethode wird eine Orts-ID übergeben, um das erste Foto in der zurückgegebenen Liste abzurufen. Sie können diese Methode als Vorlage für die Methode verwenden, in Ihrer eigenen App erstellen können.
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 for iOS (Vorabversion)
// 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 }
Caching
Fotos von [GMSPlacesClient loadPlacePhoto:callback:]
geladen
oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
werden vom Foundation URL-Ladesystem sowohl auf dem Laufwerk als auch im Arbeitsspeicher im Cache gespeichert.
in der geteilten NSURLCache
.
Um das Caching-Verhalten zu konfigurieren, können Sie den gemeinsamen URL-Cache mit folgendem Befehl ändern:
[NSURLCache setSharedURLCache:]
in der application:didFinishLaunchingWithOptions:
des Anwendungsdelegierten
.
Wenn Sie nicht möchten, dass Ihre Anwendung ein NSURLCache
mit dem
Places SDK for iOS können Sie ein neues NSURLCache
erstellen und dieses
ausschließlich in Ihrer App, ohne ihn als gemeinsamen Cache festzulegen.
Attribution
In den meisten Fällen können Ortsfotos ohne Namensnennung verwendet werden oder sind
die erforderliche Quellenangabe im Bild enthalten. Wenn die zurückgegebene GMSPlacePhotoMetadata
-Instanz jedoch attributions
oder authorAttribution
enthält, müssen Sie diese Quellenangaben in Ihre Anwendung einbinden, wo immer das Bild zu sehen ist. Weitere Informationen finden Sie in der Dokumentation zu Attributionen.