تتيح لك ميزة "صور الأماكن" (الجديدة) إضافة محتوى فوتوغرافي عالي الجودة إلى تطبيقك. تتيح لك "صور الأماكن" الوصول إلى الملايين من الصور المخزّنة في قاعدة بيانات "الأماكن". تعرض Place Photos معرّف 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 (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.getAttributions()
- AuthorAttributions، وهو عنصر
AuthorAttributions
يتم الوصول إليه من خلالPhotoMetadata.getAuthorAttributions()
.
إذا كان عنصر PhotoMetadata
الذي تم عرضه يتضمّن أيًا من نوعَي الإحالة، عليك تضمين الإحالة في تطبيقك في أي مكان تعرض فيه الصورة. لمزيد من المعلومات،
اطّلِع على عرض بيانات المصدر.