میتوانید از «کیت توسعه نرمافزار مکانها» برای Android (قدیمی) استفاده کنید تا درخواست کنید عکس مکانی در برنامهتان نمایش داده شود. عکسهایی که سرویس عکس برمیگرداند از منابع مختلفی میآید، ازجمله مالکان کسبوکار و عکسهای همیاریشده توسط کاربر.
«کیت توسعه نرمافزار مکانها، ویژه Android» (قدیمی) تصویر بیتمپ با حداکثر اندازه ۱۶۰۰ در ۱۶۰۰ پیکسل برمیگرداند.
فرایند بازیابی عکس
برای بازیابی تصویر مکان:
- از جزئیات مکان (قدیمی) برای واکشی شیء
Place(بااستفاده ازfetchPlace()) استفاده کنید. حتماً فیلدPlace.Field PHOTO_METADATASرا در فهرست فیلدها برای گنجاندن در شیءPlaceپاسخ اضافه کنید. - در
OnSuccessListenerبرایFetchPlaceResponse، ازPlace.getPhotoMetadas()برای دریافت شیء فراداده عکس، از نوعPhotoMetadataاز شیء پاسخPlaceاستفاده کنید. - شیء
FetchPhotoRequestایجاد کنید، بهطور اختیاری حداکثر ارتفاع و عرض (به پیکسل) را مشخص کنید. عکسها میتوانند حداکثر ۱۶۰۰ پیکسل عرض یا ارتفاع داشته باشند. - از
PlacesClient.fetchPhoto()برای درخواست نقشه بیتی عکس استفاده کنید. OnSuccessListenerاضافه کنید و عکس را ازFetchPhotoResponseدریافت کنید.
عکس بگیرید
مثال زیر نحوه دریافت عکس مکان را نشان میدهد:
Kotlin
// Define a Place ID. val placeId = PlaceIdProvider.getRandomPlaceId() // Specify fields. Requests for photos must always have the PHOTO_METADATAS field. val fields = listOf(Place.Field.PHOTO_METADATAS) // Get a Place object (this example uses fetchPlace(), but you can also use findCurrentPlace()) val placeRequest = FetchPlaceRequest.newInstance(placeId, fields) placesClient.fetchPlace(placeRequest) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place // Get the photo metadata. val metadata = place.photoMetadatas if (metadata == null || metadata.isEmpty()) { Log.w(TAG, "No photo metadata.") return@addOnSuccessListener } val photoMetadata = metadata.first() // Get the attribution text. val attributions = photoMetadata?.attributions binding.placePhotosAttributions.text = attributions // Create a FetchResolvedPhotoUriRequest. val photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build() placesClient.fetchResolvedPhotoUri(photoRequest) .addOnSuccessListener { fetchPhotoResponse -> val photoUri = fetchPhotoResponse.uri Glide.with(this) .load(photoUri) .into(binding.placePhotosResult) }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: " + exception.message) val statusCode = exception.statusCode // TODO: Handle error with given status code. } } }
جاوا
// Define a Place ID. final String placeId = PlaceIdProvider.getRandomPlaceId(); // 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. final String attributions = photoMetadata.getAttributions(); binding.placePhotosAttributions.setText(attributions); // Create a FetchResolvedPhotoUriRequest. final FetchResolvedPhotoUriRequest photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata) .setMaxWidth(500) // Optional. .setMaxHeight(300) // Optional. .build(); placesClient .fetchResolvedPhotoUri(photoRequest) .addOnSuccessListener( (fetchPhotoResponse) -> { Glide.with(this) .load(fetchPhotoResponse.getUri()) .into(binding.placePhotosResult); }) .addOnFailureListener( (exception) -> { if (exception instanceof ApiException) { 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 برگرداندهشده شامل هریک از انواع ارجاع باشد، باید
ارجاع را در هر جایی از برنامهتان که تصویر را نمایش میدهید اضافه کنید. برای اطلاعات بیشتر،
نمایش ارجاعها را ببینید.
استفاده و صورتحساب
برای تماس با fetchPhoto()، شناسه کالای عکسهای مکان (قدیمی) هزینه کسر میکند.
برای جزئیات، به صفحه استفاده و صورتحساب مراجعه کنید.