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

اختيار النظام الأساسي: Android iOS Web Service

المطوّرون المقيمون في المنطقة الاقتصادية الأوروبية (EEA)

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

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

طلب صورة

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

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

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

  3. استخدِم الكائن GMSPlacePhotoMetadata لإنشاء GMSFetchPhotoRequest، بما في ذلك الحد الأقصى لحجم الصورة المطلوبة.

  4. لكل كائن GMSPlacePhotoMetadata في الصفيف، استدعِ [GMSPlacesClient fetchPhotoWithRequest:callback:] مع تمرير كائن GMSFetchPhotoRequest. تستدعي هذه الطرق معاودة الاتصال GMSFetchPhotoResultCallback باستخدام صورة نقطية قابلة للاستخدام ككائن UIImage.

هناك طريقة أخرى لطلب صور لمكان معيّن وهي إجراء طلب "تفاصيل المكان (جديدة)"، بما في ذلك GMSPlacePropertyPhotos في قائمة الحقول. تتمثّل ميزة إجراء طلب "تفاصيل المكان" في أنّ كائن الردّ GMSPlace يمكن أن يحتوي على الصور وأي حقول بيانات أخرى تريدها لـ المكان.

نموذج الرموز البرمجية

يأخذ مثال الطريقة التالي رقم تعريف مكان ويحصل على الصورة الأولى في القائمة المعروضة. يمكنك استخدام هذه الطريقة كنموذج للطريقة التي ستنشئها في تطبيقك.

حزمة تطوير برامج الأماكن لنظام التشغيل iOS في Swift

// 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
}

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
    }
  }];
}];

التخزين المؤقت

يتم تخزين الصور التي يتم تحميلها باستخدام [GMSPlacesClient loadPlacePhoto:callback:] أو [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] مؤقتًا على القرص وفي الذاكرة من خلال نظام تحميل عناوين URL في Foundation في NSURLCache المشتركة.

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

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

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

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