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