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

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

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

تتيح لك ميزة "صور الأماكن" (الجديدة) إضافة محتوى فوتوغرافي عالي الجودة إلى تطبيقك. تتيح لك "صور الأماكن" الوصول إلى الملايين من الصور المخزّنة في قاعدة بيانات "الأماكن". تعرض Place Photos معرّف 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 (this example uses fetchPlace(), but you can also use findCurrentPlace())
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 الذي تم عرضه يتضمّن أيًا من نوعَي الإحالة، عليك تضمين الإحالة في تطبيقك في أي مكان تعرض فيه الصورة. لمزيد من المعلومات، اطّلِع على عرض بيانات المصدر.