صور المكان (جديدة)

يمكنك استخدام حزمة تطوير برامج الأماكن لأجهزة iOS (جديد) لطلب عرض صور الأماكن في تطبيقك. تأتي الصور التي تعرضها خدمة الصور من مجموعة متنوعة من المصادر، بما في ذلك مالكي الأنشطة التجارية والصور التي يساهم بها المستخدمون.

الصور هي صور نقطية يمثلها كائن UIImage. يبلغ الحد الأقصى لحجم الصورة النقطية 4800 × 4800 بكسل.

طلب صورة

يمكنك طلب ما يصل إلى 10 صور لمكان معيّن:

  1. يمكنك الاتصال [GMSPlacesClient lookUpPhotosForPlaceID]، وإدخال معرّف مكان، ومعاودة الاتصال على GMSPlacePhotoMetadataResultCallback. يستدعي هذا الطلب معاودة الاتصال GMSPlacePhotoMetadataResultCallback باستخدام كائن GMSPlacePhotoMetadataList.

  2. من الكائن GMSPlacePhotoMetadataList في عملية الاستدعاء، تحتوي سمة المصفوفة results على الصور، حيث يتم تمثيل كل صورة بواسطة كائن GMSPlacePhotoMetadata.

  3. لكل عنصر GMSPlacePhotoMetadata في المصفوفة، يمكنك استدعاء [GMSPlacesClient loadPlacePhoto:callback:] أو [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. تطلب هذه الطرق رد الاتصال باستخدام صورة نقطية قابلة للاستخدام كصورة 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 = photos.first else { return }

  // Request individual photos in the response list
  let fetchPhotoRequest = GMSFetchPhotoRequest(metadata: photoMetadata, maxSize: CGSizeMake(4800, 4800)
  placesClient.fetchPhoto(fetchPhotoRequest: fetchPhotoRequest, callback: {
    (photoURL: URL?, error: Error?) in
      guard let photoURL, error == nil else { return }
      print("Photo URL: \(photoURL)")
  })
};

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

[placesClient lookUpPhotosForPlaceID:placeID callback: (GMSPlacePhotoMetadataList *list, NSError *error) {
  GMSPlacePhotoMetadata *photoMetadata = [list firstObject];

  if (photoMetadata == nil) { return }

  // Request individual photos in the response list
  GMSFetchPhotoRequest *fetchPhotoRequest = [[GMSFetchPhotoRequest alloc] initWithPhotoMetadata:photoMetadata maxSize:CGSizeMake(4800, 4800)];
  [placesClient fetchPhoto:fetchPhotoRequest, callback: ^(NSURL *_Nullable photoURL, NSError *_Nullable error) {
    if (error == null) {
      NSLog(@"Photo URL: %@", photoURL)
    }
  }];
}];

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، عليك تضمين هذه السمات في تطبيقك أينما تعرض الصورة. اطّلِع على مستندات حول الإحالات.