عکس‌های مکان (جدید)

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

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

Place Photos (جدید) به شما امکان می‌دهد محتوای عکاسی با کیفیت بالا را به برنامه خود اضافه کنید. Place Photos به شما امکان دسترسی به میلیون‌ها عکس ذخیره شده در پایگاه داده Places را می‌دهد. Place Photos یک URI به یک تصویر بیت‌مپ برمی‌گرداند. تصویر بیت‌مپ حداکثر اندازه ۴۸۰۰ در ۴۸۰۰ پیکسل دارد.

درخواست‌های عکس‌های مکان

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

  1. از Place Details (جدید) برای دریافت یک شیء Place با استفاده از fetchPlace() استفاده کنید. حتماً فیلد Place.Field PHOTO_METADATAS را در لیست فیلدهایی که باید در شیء Place پاسخ گنجانده شوند، قرار دهید.
  2. در OnSuccessListener مربوط به FetchPlaceResponse خود، متد Place.getPhotoMetadas() را فراخوانی کنید تا شیء فراداده عکس از نوع PhotoMetadata را از شیء Place پاسخ دریافت کنید.
  3. یک شیء FetchResolvedPhotoUriRequest ایجاد کنید تا درخواست را ایجاد کرده و شیء فراداده عکس و همچنین مقادیر مربوط به حداکثر ارتفاع، حداکثر عرض یا هر دو را به آن ارسال کنید.
  4. برای درخواست آدرس عکس PlacesClient.fetchResolvedPhotoUri() استفاده کنید.
  5. یک OnSuccessListener اضافه کنید و URI عکس را از شیء FetchResolvedPhotoUriResponse دریافت کنید.

پارامترهای مورد نیاز

پارامترهای مورد نیاز برای FetchResolvedPhotoUriRequest عبارتند از:

  • فراداده عکس

    شیء فراداده‌ی عکس که قرار است برگردانده شود.

  • حداکثر ارتفاع یا حداکثر عرض

    حداکثر ارتفاع و عرض تصویر را بر حسب پیکسل مشخص می‌کند. اگر تصویر از مقادیر مشخص شده کوچکتر باشد، تصویر اصلی برگردانده می‌شود. اگر تصویر در هر دو بُعد بزرگتر باشد، به گونه‌ای مقیاس‌بندی می‌شود که با کوچکترین بُعد از دو بُعد مطابقت داشته باشد و به نسبت ابعاد اصلی خود محدود شود. هر دو ویژگی حداکثر ارتفاع و حداکثر عرض، اعداد صحیحی بین ۱ تا ۴۸۰۰ را می‌پذیرند. شما باید حداکثر ارتفاع، حداکثر عرض یا هر دو را مشخص کنید.

    • برای تنظیم پارامتر حداکثر ارتفاع، هنگام ساخت شیء FetchResolvedPhotoUriRequest ، متد setMaxHeight() را فراخوانی کنید.
    • برای تنظیم پارامتر حداکثر عرض، هنگام ساخت شیء FetchResolvedPhotoUriRequest ، متد setMaxWidth() را فراخوانی کنید.

نمونه‌های عکس‌های مکان

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

// 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
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 and author attributions.
    final String attributions = photoMetadata.getAttributions();
    final AuthorAttributions authorAttributions = photoMetadata.getAuthorAttributions();

    // Create a FetchResolvedPhotoUriRequest.
    final FetchResolvedPhotoUriRequest photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata)
        .setMaxWidth(500)
        .setMaxHeight(300)
        .build();

    // Request the photo URI
    placesClient.fetchResolvedPhotoUri(photoRequest).addOnSuccessListener((fetchResolvedPhotoUriResponse) -> {
        Uri uri = fetchResolvedPhotoUriResponse.getUri();
        RequestOptions requestOptions = new RequestOptions().override(Target.SIZE_ORIGINAL);
        Glide.with(this).load(uri).apply(requestOptions).into(imageView);
    }).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 برگردانده شده شامل هر یک از این دو نوع انتساب باشد، باید آن انتساب را در برنامه خود، هر کجا که تصویر را نمایش می‌دهید، لحاظ کنید. برای اطلاعات بیشتر، به بخش نمایش انتساب‌ها مراجعه کنید.