يمكنك استخدام حزمة تطوير برامج الأماكن لأجهزة iOS (الجديدة) لطلب صور الأماكن لعرضه في تطبيقك. تأتي الصور التي تعرضها خدمة الصور من مجموعة متنوعة من المصادر، بما في ذلك مالكو الأنشطة التجارية والصور التي يساهم بها المستخدمون.
الصور هي صور نقطية يتم تمثيلها بواسطة 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 لنظام التشغيل 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 الأساسية
في NSURLCache
المشترك
لضبط طريقة التخزين المؤقت، يمكنك تغيير ذاكرة التخزين المؤقت المشتركة لعناوين URL باستخدام
[NSURLCache setSharedURLCache:]
في application:didFinishLaunchingWithOptions:
الخاص بمفوَّض طلبك
.
إذا كنت لا تريد أن يشارك تطبيقك NSURLCache
مع
حزمة تطوير برامج الأماكن لأجهزة iOS، يمكنك إنشاء NSURLCache
جديد واستخدام هذه الحزمة
حصريًا داخل تطبيقك بدون تعيينه كذاكرة تخزين مؤقت مشتركة.
عمليات تحديد المصدر
في معظم الحالات، يمكن استخدام صور الأماكن بدون نَسب العمل، أو
تضمين السمة المطلوبة كجزء من الصورة. ومع ذلك، إذا تم إرجاع
GMSPlacePhotoMetadata
يتضمن المثيل أي
attributions
أو
authorAttribution
,
يجب عليك تضمين هذه الإشارات في تطبيقك أينما تعرض
. راجع الوثائق المتعلقة
الإحالة.