يمكنك استخدام حزمة تطوير البرامج (SDK) الجديدة الخاصة بـ "أماكن Google" لنظام التشغيل iOS لطلب صور الأماكن وعرضها في تطبيقك. يتم الحصول على الصور التي تعرضها خدمة "صور Google" من مجموعة متنوعة من المصادر، بما في ذلك مالكو الأنشطة التجارية والصور التي يساهم بها المستخدمون.
الصور هي صور نقطية يتم تمثيلها بواسطة كائن UIImage. يبلغ الحد الأقصى لحجم صورة نقطية 4800 × 4800 بكسل.
طلب صورة
يمكنك طلب ما يصل إلى 10 صور لمكان معيّن:
Call
[GMSPlacesClient lookUpPhotosForPlaceID]
, passing a place ID and aGMSPlacePhotoMetadataResultCallback
callback. يستدعي هذا الطلب دالة المعالجةGMSPlacePhotoMetadataResultCallback
مع كائنGMSPlacePhotoMetadataList
.من عنصر
GMSPlacePhotoMetadataList
في دالة معاودة الاتصال، تحتوي السمةresults
الخاصة بالمصفوفة على الصور، حيث يتم تمثيل كل صورة بواسطة عنصرGMSPlacePhotoMetadata
.استخدِم العنصر
GMSPlacePhotoMetadata
لإنشاءGMSFetchPhotoRequest
، بما في ذلك الحد الأقصى لحجم الصورة المطلوبة.لكل عنصر
GMSPlacePhotoMetadata
في المصفوفة، استدعِ الدالة[GMSPlacesClient fetchPhotoWithRequest:callback:]
مع تمرير العنصرGMSFetchPhotoRequest
. يستدعي هذا الإجراءGMSFetchPhotoResultCallback
مع صورة نقطية صالحة للاستخدام كـ UIImage.
هناك طريقة أخرى لطلب صور لمكان معيّن، وهي تقديم طلب تفاصيل المكان (جديد)، مع تضمين GMSPlacePropertyPhotos
في قائمة الحقول. تتمثّل ميزة إجراء طلب
Place Details في أنّ عنصر الاستجابة
GMSPlace
يمكن أن يحتوي على الصور وأي حقول بيانات أخرى تريدها
للمكان.
نموذج التعليمات البرمجية
يأخذ مثال الطريقة التالي معرّف مكان ويحصل على الصورة الأولى في القائمة التي تم إرجاعها. يمكنك استخدام هذه الطريقة كنموذج للطريقة التي ستنشئها في تطبيقك.
Places Swift SDK
// 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
مع حزمة تطوير البرامج (SDK) الخاصة بـ "أماكن Google" لنظام التشغيل iOS، يمكنك إنشاء NSURLCache
جديد واستخدامه حصريًا داخل تطبيقك بدون ضبطه كذاكرة التخزين المؤقت المشتركة.
عمليات تحديد المصدر
في معظم الحالات، يمكن استخدام صور الأماكن بدون الإشارة إلى المصدر، أو سيتم تضمين الإشارة المطلوبة إلى المصدر كجزء من الصورة. ومع ذلك، إذا كان العنصر الذي تم عرضه
GMSPlacePhotoMetadata
يتضمّن أي
attributions
أو
authorAttribution
،
عليك تضمين هذه الإشارات في تطبيقك في أي مكان تعرض فيه الصورة. يمكنك الاطّلاع على المستندات حول المصادر.