تتيح لك ميزة "صور الأماكن (الجديدة)" إضافة محتوى تصويري عالي الجودة إلى تطبيقك. تمنحك ميزة "صور الأماكن" إمكانية الوصول إلى ملايين الصور المخزّنة في قاعدة بيانات "الأماكن". تعرض ميزة "صور الأماكن" معرّف URI لصورة نقطية. الحد الأقصى لحجم الصورة النقطية هو 4800 × 4800 بكسل.
طلبات ميزة "صور الأماكن"
لاسترداد صورة لمكان:
- استخدِم ميزة تفاصيل المكان (الجديدة) لجلب عنصر
PlaceباستخدامfetchPlace(). تأكَّد من تضمين الحقلPlace.Field PHOTO_METADATASفي قائمة الحقول المطلوب تضمينها في عنصرPlaceللرد. - في
OnSuccessListenerللردFetchPlaceResponse، استخدِمPlace.getPhotoMetadas()للحصول على عنصر البيانات الوصفية للصور من النوعPhotoMetadataمن عنصرPlaceللرد. - أنشِئ عنصر
FetchResolvedPhotoUriRequestلإجراء الطلب ومرِّر عنصر البيانات الوصفية للصور، بالإضافة إلى قيم الحد الأقصى للارتفاع أو الحد الأقصى للعرض أو كليهما. - استخدِم
PlacesClient.fetchResolvedPhotoUri()لطلب معرّف URI للصورة. - أضِف
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.getAttributions(). - AuthorAttributions: هي عنصر
AuthorAttributionsيمكن الوصول إليه من خلالPhotoMetadata.getAuthorAttributions().
إذا كان عنصر PhotoMetadata الذي تم عرضه يتضمّن أيًا من نوعَي معلومات تحديد المصدر، عليك تضمين معلومات تحديد المصدر في تطبيقك أينما تعرض الصورة. لمزيد من المعلومات،
يُرجى الاطّلاع على مقالة عرض معلومات تحديد المصدر.