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

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

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

בקשות להוספת תמונות

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

  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.

דוגמאות לתמונות של מקומות

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