يمكنك استخدام حزمة تطوير برامج الأماكن لأجهزة iOS لطلب صور الأماكن لعرضها في تطبيقك. تأتي الصور التي تعرضها خدمة الصور من مصادر متنوّعة، بما في ذلك مالكو المؤسسات والصور التي يساهم بها المستخدمون. لاسترداد صور مكان، عليك اتّباع الخطوات التالية:
- استدعِ
[GMSPlacesClient fetchPlaceFromPlaceId]، مع تمرير سلسلة تتضمّن رقم تعريف مكان ودالة معاودة الاتصال. سيؤدي ذلك إلى استدعاء دالة معاودة الاتصال باستخدامGMSPlacePhotoMetadataListكائن. - في الكائن
GMSPlacePhotoMetadataList، يمكنك الوصول إلى السمةresultsواختيار الصور التي تريد تحميلها من الصفيف. - بالنسبة إلى كل
GMSPlacePhotoMetadataتريد تحميله من هذه القائمة، استدعِ[GMSPlacesClient loadPlacePhoto:callback:]أو[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. سيؤدي ذلك إلى استدعاء دالة معاودة الاتصال باستخدام UIImage قابل للاستخدام. يمكن أن يكون الحد الأقصى لعرض الصور أو ارتفاعها 1600 بكسل.
نموذج الرموز البرمجية
يأخذ مثال الطريقة التالي رقم تعريف مكان ويحصل على الصورة الأولى في القائمة المعروضة. يمكنك استخدام هذه الطريقة كنموذج للطريقة التي ستنشئها في تطبيقك.
Swift
// Specify the place data types to return (in this case, just photos). let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.photos.rawValue))! placesClient?.fetchPlace(fromPlaceID: "INSERT_PLACE_ID_HERE", placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { // Get the metadata for the first photo in the place photo metadata list. let photoMetadata: GMSPlacePhotoMetadata = place.photos![0] // Call loadPlacePhoto to display the bitmap and attribution. self.placesClient?.loadPlacePhoto(photoMetadata, callback: { (photo, error) -> Void in if let error = error { // TODO: Handle the error. print("Error loading photo metadata: \(error.localizedDescription)") return } else { // Display the first image and its attributions. self.imageView?.image = photo; self.lblText?.attributedText = photoMetadata.attributions; } }) } })
Objective-C
// Specify the place data types to return (in this case, just photos). GMSPlaceField fields = (GMSPlaceFieldPhotos); NSString *placeId = @"INSERT_PLACE_ID_HERE"; [_placesClient fetchPlaceFromPlaceID:placeId placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { GMSPlacePhotoMetadata *photoMetadata = [place photos][0]; [self->_placesClient loadPlacePhoto:photoMetadata callback:^(UIImage * _Nullable photo, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error loading photo metadata: %@", [error localizedDescription]); return; } else { // Display the first image and its attributions. self->imageView.image = photo; self->lblText.attributedText = photoMetadata.attributions; } }]; } }];
التخزين المؤقت
يتم تخزين الصور التي يتم تحميلها باستخدام [GMSPlacesClient loadPlacePhoto:callback:]
أو [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
مؤقتًا على القرص وفي الذاكرة من خلال نظام تحميل عناوين URL في Foundation
في NSURLCache المشتركة.
لتحديد سلوك التخزين المؤقت، يمكنك تغيير ذاكرة التخزين المؤقت المشتركة لعناوين URL باستخدام
[NSURLCache setSharedURLCache:]
في طريقة application:didFinishLaunchingWithOptions:
لمندوب تطبيقك.
إذا كنت لا تريد أن يشارك تطبيقك NSURLCache مع حزمة تطوير برامج الأماكن لأجهزة iOS، يمكنك إنشاء NSURLCache جديد واستخدامه حصريًا داخل تطبيقك بدون ضبطه كذاكرة التخزين المؤقت المشتركة.
عمليات تحديد المصدر
في معظم الحالات، يمكن استخدام صور الأماكن بدون تحديد المصدر، أو سيتم تضمين تحديد المصدر المطلوب كجزء من الصورة. ومع ذلك، إذا كان مثال
GMSPlacePhotoMetadata
المعروض يتضمّن تحديد مصدر، عليك تضمين تحديد المصدر الإضافي
في تطبيقك أينما تعرض الصورة. يُرجى العِلم أنّه يجب أن تكون الروابط في تحديد المصدر قابلة للنقر. يمكنك الاطّلاع على المستندات حول عمليات تحديد المصدر.
سقف الاستخدام
يؤدي استرداد صورة إلى استهلاك وحدة واحدة من الحصة، ولا توجد حدود للاستخدام عند استرداد بيانات الصورة الوصفية. مزيد من المعلومات عن الاستخدام والفوترة.