يمكنك استخدام حزمة تطوير برامج الأماكن لأجهزة iOS (جديد) لطلب عرض صور الأماكن في تطبيقك. تأتي الصور التي تعرضها خدمة الصور من مجموعة متنوعة من المصادر، بما في ذلك مالكي الأنشطة التجارية والصور التي يساهم بها المستخدمون.
الصور هي صور نقطية يمثلها كائن UIImage. يبلغ الحد الأقصى لحجم الصورة النقطية 4800 × 4800 بكسل.
طلب صورة
يمكنك طلب ما يصل إلى 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 } }]; }];
GooglePlacesSwift
// 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
،
عليك تضمين هذه السمات في تطبيقك أينما تعرض
الصورة. اطّلِع على مستندات حول
الإحالات.