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