عکس های مکان

پلتفرم را انتخاب کنید: سرویس وب جاوا اسکریپت اندروید iOS

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

  1. از جزئیات مکان برای واکشی یک شی Place استفاده کنید (از fetchPlace() یا findCurrentPlace() استفاده کنید. حتماً فیلد Place.Field PHOTO_METADATAS را در لیست فیلدهایی که باید در شیء پاسخ Place گنجانده شود، قرار دهید.
  2. در OnSuccessListener برای FetchPlaceResponse یا FindCurrentPlaceResponse شما:
    1. از Place.getPhotoMetadas() برای دریافت شی فوق داده عکس، از نوع PhotoMetadata از شی پاسخ Place استفاده کنید.
    2. یک شی FetchPhotoRequest ایجاد کنید، به صورت اختیاری حداکثر ارتفاع و عرض (بر حسب پیکسل) را مشخص کنید. عکس ها می توانند حداکثر عرض یا ارتفاع 1600 پیکسل داشته باشند.
    3. از PlacesClient.fetchPhoto() برای درخواست عکس استفاده کنید.
    4. یک OnSuccessListener اضافه کنید و عکس را از FetchPhotoResponse دریافت کنید.

دسترسی به داده های PhotoMetadata اضافه شده در نسخه 3.3.0

Places SDK برای Android (جدید) فیلد AuthorAttributions را به کلاس PhotoMetadata اضافه می کند. اگر برنامه شما SDK جدید را فعال می‌کند، شی PhotoMetadata که توسط Place.getPhotoMetadas() برگردانده می‌شود می‌تواند حاوی یک یا چند انتساب نویسنده باشد.

هنگامی که شئ PhotoMetadata حاوی هر گونه انتساب باشد، چه اسناد نویسنده جدید اضافه شده در نسخه 3.3.0 یا اسناد موجود موجود در نسخه 3.2.0 و قبل از آن، باید آنها را همراه با عکس نمایش دهید. برای اطلاعات بیشتر در مورد مدیریت همه انواع اسناد، به اسناد مراجعه کنید.

برای پر کردن شی PhotoMetadata با اسناد نویسنده، باید:

  1. وقتی پروژه Google Cloud خود را راه‌اندازی می‌کنید، SDK جدید را فعال کنید.
  2. SDK جدید را در یک فعالیت یا قطعه راه‌اندازی کنید .
  3. Place.Field.PHOTO_METADATAS را در لیست فیلد درخواست جزئیات مکان قرار دهید.
  4. برای دریافت شیء Place PlacesClient.fetchPlace() و برای دریافت شی PhotoMetadata Place.getPhotoMetadas() فراخوانی کنید. فیلد اسناد نویسنده توسط PlacesClient.findCurrentPlace() پشتیبانی نمی شود.
  5. از PhotoMetadata.getAuthorAttributions() برای دریافت اسناد نویسنده استفاده کنید.

عکس مکان بگیرید

مثال زیر گرفتن عکس مکان را نشان می دهد.

کاتلین



// Define a Place ID.
val placeId = "INSERT_PLACE_ID_HERE"

// 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 metada = place.photoMetadatas
        if (metada == null || metada.isEmpty()) {
            Log.w(TAG, "No photo metadata.")
            return@addOnSuccessListener
        }
        val photoMetadata = metada.first()

        // Get the attribution text.
        val attributions = photoMetadata?.attributions

        // Create a FetchPhotoRequest.
        val photoRequest = FetchPhotoRequest.builder(photoMetadata)
            .setMaxWidth(500) // Optional.
            .setMaxHeight(300) // Optional.
            .build()
        placesClient.fetchPhoto(photoRequest)
            .addOnSuccessListener { fetchPhotoResponse: FetchPhotoResponse ->
                val bitmap = fetchPhotoResponse.bitmap
                imageView.setImageBitmap(bitmap)
            }.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 = "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.
    final String attributions = photoMetadata.getAttributions();

    // Create a FetchPhotoRequest.
    final FetchPhotoRequest photoRequest = FetchPhotoRequest.builder(photoMetadata)
        .setMaxWidth(500) // Optional.
        .setMaxHeight(300) // Optional.
        .build();
    placesClient.fetchPhoto(photoRequest).addOnSuccessListener((fetchPhotoResponse) -> {
        Bitmap bitmap = fetchPhotoResponse.getBitmap();
        imageView.setImageBitmap(bitmap);
    }).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 ، می‌تواند شامل یکی از دو نوع اسناد اضافی باشد:

اگر شی PhotoMetadata برگردانده شده شامل هر یک از انواع انتساب است، باید در هر کجا که تصویر را نمایش می دهید، انتساب را در برنامه خود قرار دهید. برای اطلاعات بیشتر، به نمایش اسناد اشاره کنید.

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

برای تماس با fetchPhoto() یک Places Photo SKU هزینه می شود. برای جزئیات به صفحه استفاده و صورتحساب مراجعه کنید.