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

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

يمكنك استخدام حزمة تطوير برامج الأماكن لأجهزة 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 يحتوي على الصور وأي حقول بيانات أخرى تريدها. المكان.

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

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

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

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، يجب عليك تضمين هذه الإشارات في تطبيقك أينما تعرض . راجع الوثائق المتعلقة الإحالة.