Place Photos (جدید) به شما امکان میدهد محتوای عکاسی با کیفیت بالا را به برنامه خود اضافه کنید. Place Photos به شما امکان دسترسی به میلیونها عکس ذخیره شده در پایگاه داده Places را میدهد. Place Photos یک URI به یک تصویر بیتمپ برمیگرداند. تصویر بیتمپ حداکثر اندازه ۴۸۰۰ در ۴۸۰۰ پیکسل دارد.
درخواستهای عکسهای مکان
برای بازیابی تصویر یک مکان:
- از Place Details (جدید) برای دریافت یک شیء
Placeبا استفاده ازfetchPlace()استفاده کنید. حتماً فیلدPlace.Field PHOTO_METADATASرا در لیست فیلدهایی که باید در شیءPlaceپاسخ گنجانده شوند، قرار دهید. - در
OnSuccessListenerمربوط بهFetchPlaceResponseخود، متدPlace.getPhotoMetadas()را فراخوانی کنید تا شیء فراداده عکس از نوعPhotoMetadataرا از شیءPlaceپاسخ دریافت کنید. - یک شیء
FetchResolvedPhotoUriRequestایجاد کنید تا درخواست را ایجاد کرده و شیء فراداده عکس و همچنین مقادیر مربوط به حداکثر ارتفاع، حداکثر عرض یا هر دو را به آن ارسال کنید. - برای درخواست آدرس عکس
PlacesClient.fetchResolvedPhotoUri()استفاده کنید. - یک
OnSuccessListenerاضافه کنید و URI عکس را از شیءFetchResolvedPhotoUriResponseدریافت کنید.
پارامترهای مورد نیاز
پارامترهای مورد نیاز برای FetchResolvedPhotoUriRequest عبارتند از:
فراداده عکس
شیء فرادادهی عکس که قرار است برگردانده شود.
حداکثر ارتفاع یا حداکثر عرض
حداکثر ارتفاع و عرض تصویر را بر حسب پیکسل مشخص میکند. اگر تصویر از مقادیر مشخص شده کوچکتر باشد، تصویر اصلی برگردانده میشود. اگر تصویر در هر دو بُعد بزرگتر باشد، به گونهای مقیاسبندی میشود که با کوچکترین بُعد از دو بُعد مطابقت داشته باشد و به نسبت ابعاد اصلی خود محدود شود. هر دو ویژگی حداکثر ارتفاع و حداکثر عرض، اعداد صحیحی بین ۱ تا ۴۸۰۰ را میپذیرند. شما باید حداکثر ارتفاع، حداکثر عرض یا هر دو را مشخص کنید.
- برای تنظیم پارامتر حداکثر ارتفاع، هنگام ساخت شیء
FetchResolvedPhotoUriRequest، متدsetMaxHeight()را فراخوانی کنید. - برای تنظیم پارامتر حداکثر عرض، هنگام ساخت شیء
FetchResolvedPhotoUriRequest، متدsetMaxWidth()را فراخوانی کنید.
- برای تنظیم پارامتر حداکثر ارتفاع، هنگام ساخت شیء
نمونههای عکسهای مکان
مثال زیر دریافت 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 ، میتواند شامل هر یک از دو نوع منبع اضافی باشد:
- Attributions ، یک رشتهی انتساب که توسط
PhotoMetadata.getAttributions()قابل دسترسی است. - AuthorAttributions ، یک شیء
AuthorAttributionsکه توسطPhotoMetadata.getAuthorAttributions()قابل دسترسی است.
اگر شیء PhotoMetadata برگردانده شده شامل هر یک از این دو نوع انتساب باشد، باید آن انتساب را در برنامه خود، هر کجا که تصویر را نمایش میدهید، لحاظ کنید. برای اطلاعات بیشتر، به بخش نمایش انتسابها مراجعه کنید.