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()، یک شناسه کالا عکس‌های مکان (قدیمی) کسر می‌شود. برای جزئیات بیشتر، صفحه استفاده و صورت‌حساب را ببینید.