عکس‌های مکان (میراث)، عکس‌های مکان (قدمت)، عکس‌های مکان (میراث)، عکس‌های مکان (قدمت)

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

شما می‌توانید از Places SDK برای اندروید (Legacy) برای درخواست عکس مکان جهت نمایش در برنامه خود استفاده کنید. عکس‌هایی که توسط سرویس عکس‌ها برگردانده می‌شوند از منابع مختلفی از جمله صاحبان مشاغل و عکس‌های ارائه شده توسط کاربران می‌آیند.

کیت توسعه نرم‌افزاری Places برای اندروید (Legacy) یک تصویر بیت‌مپ با حداکثر اندازه ۱۶۰۰ در ۱۶۰۰ پیکسل برمی‌گرداند.

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

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

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

عکس بگیرید

مثال زیر نحوه گرفتن عکس از یک مکان را نشان می‌دهد:

کاتلین

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