يمكنك استخدام حزمة تطوير برامج الأماكن لنظام التشغيل iOS (جديدة) لطلب صور الأماكن لعرضها في تطبيقك. تأتي الصور التي تعرضها خدمة الصور من مصادر متنوّعة، بما في ذلك مالكو المؤسسات والصور التي يساهم بها المستخدمون.
الصور هي صور نقطية ممثّلة بكائن UIImage. يبلغ الحد الأقصى لحجم الصورة النقطية 4800 × 4800 بكسل.
طلب صورة
يمكنك طلب ما يصل إلى 10 صور لمكان معيّن:
استدعِ
[GMSPlacesClient lookUpPhotosForPlaceID]، مع تمرير رقم تعريف مكان وطلب معاودة الاتصالGMSPlacePhotoMetadataResultCallback. يستدعي هذا الطلب معاودة الاتصالGMSPlacePhotoMetadataResultCallbackباستخدامGMSPlacePhotoMetadataListكائن.من الكائن
GMSPlacePhotoMetadataListفي معاودة الاتصال، يحتوي العنصرresultsعلى الصور، حيث يتم تمثيل كل صورة بكائنGMSPlacePhotoMetadata.استخدِم الكائن
GMSPlacePhotoMetadataلإنشاءGMSFetchPhotoRequest، بما في ذلك الحد الأقصى لحجم الصورة المطلوبة.لكل كائن
GMSPlacePhotoMetadataفي الصفيف، استدعِ[GMSPlacesClient fetchPhotoWithRequest:callback:]مع تمرير كائنGMSFetchPhotoRequest. تستدعي هذه الطرق معاودة الاتصالGMSFetchPhotoResultCallbackباستخدام صورة نقطية قابلة للاستخدام ككائن UIImage.
هناك طريقة أخرى لطلب صور لمكان معيّن وهي إجراء طلب
"تفاصيل المكان (جديدة)"،
بما في ذلك GMSPlacePropertyPhotos في قائمة الحقول. تتمثّل ميزة إجراء طلب
"تفاصيل المكان" في أنّ كائن الردّ
GMSPlace
يمكن أن يحتوي على الصور وأي حقول بيانات أخرى تريدها لـ
المكان.
نموذج الرموز البرمجية
يأخذ مثال الطريقة التالي رقم تعريف مكان ويحصل على الصورة الأولى في القائمة المعروضة. يمكنك استخدام هذه الطريقة كنموذج للطريقة التي ستنشئها في تطبيقك.
حزمة تطوير برامج الأماكن لنظام التشغيل iOS في Swift
// 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 }
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 } }]; }];
التخزين المؤقت
يتم تخزين الصور التي يتم تحميلها باستخدام [GMSPlacesClient loadPlacePhoto:callback:]
أو [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
مؤقتًا على القرص وفي الذاكرة من خلال نظام تحميل عناوين URL في Foundation
في NSURLCache المشتركة.
لتعديل سلوك التخزين المؤقت، يمكنك تغيير ذاكرة التخزين المؤقت لعناوين URL المشتركة باستخدام
[NSURLCache setSharedURLCache:]
في طريقة application:didFinishLaunchingWithOptions:
لمندوب تطبيقك.
إذا كنت لا تريد أن يشارك تطبيقك NSURLCache مع حزمة تطوير برامج الأماكن لنظام التشغيل iOS، يمكنك إنشاء NSURLCache جديد واستخدامه حصريًا داخل تطبيقك بدون ضبطه كذاكرة تخزين مؤقت مشتركة.
عمليات تحديد المصدر
في معظم الحالات، يمكن استخدام صور الأماكن بدون تحديد المصدر، أو سيتم تضمين تحديد المصدر المطلوب كجزء من الصورة. ومع ذلك، إذا كان مثيل
GMSPlacePhotoMetadata
المعروض يتضمّن أي
attributions
أو
authorAttribution،
عليك تضمين عمليات تحديد المصدر هذه في تطبيقك أينما تعرض
الصورة. يُرجى الاطّلاع على المستندات حول
عمليات تحديد المصدر.