يمكنك استخدام حزمة تطوير برامج "الأماكن" لنظام التشغيل iOS لطلب صور الأماكن لعرضها في تطبيقك. تأتي الصور التي تعرضها خدمة "صور Google" من مجموعة متنوعة من المصادر، بما في ذلك صور أصحاب الأنشطة التجارية والصور التي ينشرها المستخدمون. لاسترداد صور مكان معيّن، عليك اتّباع الخطوات التالية:
- اتصل بـ
[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
مع
حزمة تطوير البرامج (SDK) لتطبيق "الأماكن" لنظام التشغيل iOS، يمكنك إنشاء NSURLCache
جديد واستخدام
هذاNSURLCache
حصريًا داخل تطبيقك بدون ضبطه كذاكرة التخزين المؤقت المشتركة.
عمليات تحديد المصدر
في معظم الحالات، يمكن استخدام صور الأماكن بدون نسبها إلى مصدرها، أو سيتم تضمين
نسبة المصدر المطلوبة كجزء من الصورة. ومع ذلك، إذا كان مثيل
GMSPlacePhotoMetadata
المعروض يتضمّن مصدرًا، يجب تضمين المصدر الإضافي
في تطبيقك في أيّ مكان تعرض فيه الصورة. يُرجى العلم أنّ الروابط في
الإحالة يجب أن تكون قابلة للنقر. راجِع المستندات حول عمليات تحديد المصدر.
حدود الاستخدام
يتطلّب استرداد صورة وحدة واحدة من الحصة، ولا توجد حدود لاستخدام استرداد البيانات الوصفية للصور. يمكنك الاطّلاع على مزيد من المعلومات حول الاستخدام والفوترة.