Place Photos (قدیمی)

توسعه‌دهندگان منطقه اقتصادی اروپا (EEA)

می‌توانید از «کیت توسعه نرم‌افزار مکان‌ها» برای Android (قدیمی) استفاده کنید تا درخواست کنید عکس مکانی در برنامه‌تان نمایش داده شود. عکس‌هایی که سرویس عکس برمی‌گرداند از منابع مختلفی می‌آید، ازجمله مالکان کسب‌وکار و عکس‌های همیاری‌شده توسط کاربر.

«کیت توسعه نرم‌افزار مکان‌ها، ویژه Android» (قدیمی) تصویر بیت‌مپ با حداکثر اندازه ۱۶۰۰ در ۱۶۰۰ پیکسل برمی‌گرداند.

فرایند بازیابی عکس

برای بازیابی تصویر مکان:

  1. از جزئیات مکان (قدیمی) برای واکشی شیء Place (بااستفاده از fetchPlace()) استفاده کنید. حتماً فیلد Place.Field PHOTO_METADATAS را در فهرست فیلدها برای گنجاندن در شیء Place پاسخ اضافه کنید.
  2. در OnSuccessListener برای FetchPlaceResponse، از Place.getPhotoMetadas() برای دریافت شیء فراداده عکس، از نوع PhotoMetadata از شیء پاسخ Place استفاده کنید.
  3. شیء FetchPhotoRequest ایجاد کنید، به‌طور اختیاری حداکثر ارتفاع و عرض (به پیکسل) را مشخص کنید. عکس‌ها می‌توانند حداکثر ۱۶۰۰ پیکسل عرض یا ارتفاع داشته باشند.
  4. از PlacesClient.fetchPhoto() برای درخواست نقشه بیتی عکس استفاده کنید.
  5. 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 برگردانده‌شده شامل هریک از انواع ارجاع باشد، باید ارجاع را در هر جایی از برنامه‌تان که تصویر را نمایش می‌دهید اضافه کنید. برای اطلاعات بیشتر، نمایش ارجاع‌ها را ببینید.

استفاده و صورت‌حساب

برای تماس با fetchPhoto()، شناسه کالای عکس‌های مکان (قدیمی) هزینه کسر می‌کند. برای جزئیات، به صفحه استفاده و صورت‌حساب مراجعه کنید.