عکسهای مکان (جدید) به شما امکان میدهد محتوای عکاسی با کیفیت بالا را به برنامه خود اضافه کنید. Place Photos به شما امکان می دهد به میلیون ها عکس ذخیره شده در پایگاه داده Places دسترسی داشته باشید. 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 را می پذیرند. شما باید حداکثر ارتفاع، حداکثر عرض یا هر دو را مشخص کنید.
- برای تنظیم پارامتر حداکثر ارتفاع، هنگام ساختن شی
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 (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
، میتواند شامل یکی از دو نوع اسناد اضافی باشد:
- Attributions ، یک رشته انتساب که توسط
PhotoMetadata.getAttributions()
قابل دسترسی است. - AuthorAttributions ، یک شی
AuthorAttributions
که توسطPhotoMetadata.getAuthorAttributions()
قابل دسترسی است.
اگر شی PhotoMetadata
برگردانده شده شامل هر یک از انواع انتساب است، باید در هر کجا که تصویر را نمایش می دهید، انتساب را در برنامه خود قرار دهید. برای اطلاعات بیشتر، به نمایش اسناد اشاره کنید.