תמונות של המקום (חדש)

בחירת פלטפורמה: Android iOS שירות אינטרנט

התכונה 'תמונות מ-Places' (חדשה) מאפשרת לכם להוסיף לאפליקציה תוכן צילום באיכות גבוהה. התכונה 'תמונות של מקומות' מעניקה לכם גישה למיליארדי התמונות שמאוחסנות במסד הנתונים של 'מקומות'. Place Photos מחזיר URI לתמונה בפורמט בייטמאפ. גודל התמונה בפורמט bitmap הוא מקסימום 4,800 על 4,800 פיקסלים.

שליחת בקשות ב-Photos

כדי לאחזר תמונה של מקום:

  1. משתמשים ב-Place Details (New) כדי לאחזר אובייקט Place באמצעות fetchPlace(). חשוב לכלול את השדה Place.Field PHOTO_METADATAS ברשימת השדות שרוצים לכלול באובייקט התגובה Place.
  2. ב-OnSuccessListener של FetchPlaceResponse, קוראים ל-Place.getPhotoMetadas() כדי לקבל את אובייקט המטא-נתונים של התמונה מסוג PhotoMetadata מאובייקט התגובה Place.
  3. יוצרים אובייקט FetchResolvedPhotoUriRequest כדי לשלוח את הבקשה ולהעביר את אובייקט המטא-נתונים של התמונה, וגם ערכים לגובה המקסימלי, לרוחב המקסימלי או לשניהם.
  4. משתמשים ב-PlacesClient.fetchResolvedPhotoUri() כדי לבקש את ה-URI של התמונה.
  5. מוסיפים OnSuccessListener ומקבלים את ה-URI של התמונה מהאובייקט FetchResolvedPhotoUriResponse.

פרמטרים נדרשים

הפרמטרים הנדרשים ל-FetchResolvedPhotoUriRequest הם:

  • מטא-נתונים של תמונות

    אובייקט המטא-נתונים של התמונה להחזרה.

  • גובה מקסימלי או רוחב מקסימלי

    קובע את הגובה והרוחב המקסימליים, בפיקסלים, של התמונה שתוחזר. אם התמונה קטנה מהערכים שצוינו, התמונה המקורית תוחזר. אם התמונה גדולה יותר באחת מהמידות, היא תתאים לגודל הקטן מבין שתי המימדים, תוך שמירה על יחס הגובה-רוחב המקורי שלה. גם המאפיין 'גובה מקסימלי' וגם המאפיין 'רוחב מקסימלי' מקבלים מספר שלם בין 1 ל-4,800. חובה לציין גובה מקסימלי, רוחב מקסימלי או את שניהם.

    • כדי להגדיר את הפרמטר של הגובה המקסימלי, צריך להפעיל את השיטה setMaxHeight() בזמן היצירה של האובייקט FetchResolvedPhotoUriRequest.
    • כדי להגדיר את הפרמטר של רוחב מקסימלי, צריך להפעיל את השיטה setMaxWidth() בזמן היצירה של האובייקט FetchResolvedPhotoUriRequest.

דוגמאות לתמונות ב-Places

הדוגמה הבאה מדגימה אחזור של 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 (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 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 המוחזר כולל את אחד מסוגי השיוך, צריך לכלול את השיוך באפליקציה בכל מקום שבו מוצגת התמונה. מידע נוסף זמין במאמר הצגת שיוך.