صور المكان

اختَر النظام الأساسي: Android iOS JavaScript خدمة الويب

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

  1. يمكنك الاتصال بـ [GMSPlacesClient fetchPlaceFromPlaceId]، مع تمرير سلسلة بها معرّف مكان ومعاودة الاتصال. سيؤدي ذلك إلى استدعاء معاودة الاتصال باستخدام كائن GMSPlacePhotoMetadataList.
  2. في عنصر GMSPlacePhotoMetadataList، ادخل إلى السمة results واختَر الصور المطلوب تحميلها من المصفوفة.
  3. لكل 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 للمؤسسة في NSURLCache المشتركة.

لضبط سلوك التخزين المؤقت، يمكنك تغيير ذاكرة التخزين المؤقت لعنوان URL المشترك باستخدام [NSURLCache setSharedURLCache:] في طريقة application:didFinishLaunchingWithOptions: لتفويض التطبيق.

إذا كنت لا تريد أن يشارك تطبيقك NSURLCache مع حزمة SDK للأماكن لأجهزة iOS، يمكنك إنشاء NSURLCache جديد واستخدامه بشكل حصري داخل تطبيقك بدون تعيينه كذاكرة التخزين المؤقت المشتركة.

عمليات تحديد المصدر

في معظم الحالات، يمكن استخدام صور الأماكن بدون ذكر اسمها، أو سيتم تضمين الإسناد المطلوب كجزء من الصورة. ومع ذلك، إذا كان مثيل GMSPlacePhotoMetadata الذي تم عرضه يتضمن إحالة، عليك تضمين الإسناد الإضافي في طلبك أينما عرضت الصورة. تجدر الإشارة إلى أنّ الروابط في الإحالة يجب أن تكون قابلة للنقر. راجِع المستندات التي تتناول عمليات الإحالة.

حدود الاستخدام

يكلف استرداد صورة وحدة واحدة من الحصة، وليس هناك حدود للاستخدام لاسترداد البيانات الوصفية للصور. يمكنك الاطّلاع على المزيد من المعلومات حول الاستخدام والفوترة.