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

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

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

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

طلب صورة

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

  1. اتصل بـ [GMSPlacesClient lookUpPhotosForPlaceID]، مع تضمين معرّف مكان وسلسلة اتصال مجددة GMSPlacePhotoMetadataResultCallback. يُطلِب هذا الطلب إجراء معاودة الاتصال GMSPlacePhotoMetadataResultCallback باستخدام عنصر GMSPlacePhotoMetadataList.

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

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

  4. لكل عنصر 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
    }
  }];
}];

حزمة تطوير البرامج Swift لأماكن Google لنظام التشغيل iOS (إصدار تجريبي)

// 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 في Foundation في NSURLCache المشترَكة.

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

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

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

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