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

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

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

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

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

طلب صورة

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

  1. Call [GMSPlacesClient lookUpPhotosForPlaceID], passing a place ID and a GMSPlacePhotoMetadataResultCallback callback. يستدعي هذا الطلب دالة المعالجة GMSPlacePhotoMetadataResultCallback مع كائن GMSPlacePhotoMetadataList.

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

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

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

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

نموذج التعليمات البرمجية

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

Places Swift SDK

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

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

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