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

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

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

تتيح لك ميزة "صور الأماكن (الجديدة)" إضافة محتوى تصويري عالي الجودة إلى تطبيقك. تمنحك ميزة "صور الأماكن" إمكانية الوصول إلى ملايين الصور المخزّنة في قاعدة بيانات "الأماكن". تعرض ميزة "صور الأماكن" معرّف URI لصورة نقطية. الحد الأقصى لحجم الصورة النقطية هو 4800 × 4800 بكسل.

طلبات ميزة "صور الأماكن"

لاسترداد صورة لمكان:

  1. استخدِم ميزة تفاصيل المكان (الجديدة) لجلب عنصر Place باستخدام fetchPlace(). تأكَّد من تضمين الحقل Place.Field PHOTO_METADATAS في قائمة الحقول المطلوب تضمينها في عنصر Place للرد.
  2. في OnSuccessListener للرد FetchPlaceResponse، استخدِم Place.getPhotoMetadas() للحصول على عنصر البيانات الوصفية للصور من النوع PhotoMetadata من عنصر Place للرد.
  3. أنشِئ عنصر FetchResolvedPhotoUriRequest لإجراء الطلب ومرِّر عنصر البيانات الوصفية للصور، بالإضافة إلى قيم الحد الأقصى للارتفاع أو الحد الأقصى للعرض أو كليهما.
  4. استخدِم PlacesClient.fetchResolvedPhotoUri() لطلب معرّف URI للصورة.
  5. أضِف OnSuccessListener واحصل على معرّف URI للصورة من عنصر FetchResolvedPhotoUriResponse.

المعلمات المطلوبة

المعلمات المطلوبة لـ FetchResolvedPhotoUriRequest هي:

  • البيانات الوصفية للصور

    عنصر البيانات الوصفية للصورة المطلوب عرضها

  • الحد الأقصى للارتفاع أو الحد الأقصى للعرض

    يحدّد هذا الخيار الحد الأقصى لارتفاع الصورة وعرضها بالبكسل المطلوب عرضها. إذا كانت الصورة أصغر من القيم المحدّدة، سيتم عرض الصورة الأصلية. إذا كانت الصورة أكبر في أي من البُعدَين، سيتم تغيير حجمها ليطابق البُعد الأصغر، مع الحفاظ على نسبة العرض إلى الارتفاع الأصلية. تقبل كلّ من سمة الحد الأقصى للارتفاع وسمة الحد الأقصى للعرض عددًا صحيحًا يتراوح بين 1 و4800. يجب تحديد الحد الأقصى للارتفاع أو الحد الأقصى للعرض أو كليهما.

    • لضبط مَعلمة الحد الأقصى للارتفاع، استخدِم طريقة setMaxHeight() عند إنشاء عنصر FetchResolvedPhotoUriRequest.
    • لضبط مَعلمة الحد الأقصى للعرض، استخدِم طريقة setMaxWidth() عند إنشاء عنصر FetchResolvedPhotoUriRequest

أمثلة على ميزة "صور الأماكن"

يوضّح المثال التالي كيفية الحصول على معرّف URI لصورة مكان.

// Define a Place ID.
final String placeId = "INSERT_PLACE_ID_HERE";

// Specify fields. Requests for photos must always have the PHOTO_METADATAS field.
final List<Place.Field> fields = Collections.singletonList(Place.Field.PHOTO_METADATAS);

// Get a Place object
final FetchPlaceRequest placeRequest = FetchPlaceRequest.newInstance(placeId, fields);

placesClient.fetchPlace(placeRequest).addOnSuccessListener((response) -> {
    final Place place = response.getPlace();

    // Get the photo metadata.
    final List<PhotoMetadata> metadata = place.getPhotoMetadatas();
    if (metadata == null || metadata.isEmpty()) {
        Log.w(TAG, "No photo metadata.");
        return;
    }
    final PhotoMetadata photoMetadata = metadata.get(0);

    // Get the attribution text and author attributions.
    final String attributions = photoMetadata.getAttributions();
    final AuthorAttributions authorAttributions = photoMetadata.getAuthorAttributions();

    // Create a FetchResolvedPhotoUriRequest.
    final FetchResolvedPhotoUriRequest photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata)
        .setMaxWidth(500)
        .setMaxHeight(300)
        .build();

    // Request the photo URI
    placesClient.fetchResolvedPhotoUri(photoRequest).addOnSuccessListener((fetchResolvedPhotoUriResponse) -> {
        Uri uri = fetchResolvedPhotoUriResponse.getUri();
        RequestOptions requestOptions = new RequestOptions().override(Target.SIZE_ORIGINAL);
        Glide.with(this).load(uri).apply(requestOptions).into(imageView);
    }).addOnFailureListener((exception) -> {
        if (exception instanceof ApiException) {
            final ApiException apiException = (ApiException) exception;
            Log.e(TAG, "Place not found: " + exception.getMessage());
            final int statusCode = apiException.getStatusCode();
            // TODO: Handle error with given status code.
        }
    });
});

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

في معظم الحالات، يمكن استخدام صور الأماكن بدون تحديد المصدر، أو سيتم تضمين معلومات تحديد المصدر المطلوبة كجزء من الصورة. ومع ذلك، يمكن أن يحتوي عنصر البيانات الوصفية للصور من النوع PhotoMetadata, على أحد نوعَي معلومات تحديد المصدر الإضافية:

إذا كان عنصر PhotoMetadata الذي تم عرضه يتضمّن أيًا من نوعَي معلومات تحديد المصدر، عليك تضمين معلومات تحديد المصدر في تطبيقك أينما تعرض الصورة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة عرض معلومات تحديد المصدر.