รูปภาพสถานที่ (ใหม่)

เลือกแพลตฟอร์ม: Android iOS เว็บเซอร์วิส

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

Place Photos (ใหม่) ช่วยให้คุณเพิ่มเนื้อหารูปภาพคุณภาพสูงลงในแอปพลิเคชันได้ Place Photos ช่วยให้คุณเข้าถึงรูปภาพนับล้านที่จัดเก็บไว้ในฐานข้อมูล Places Place Photos จะแสดงผล URI ไปยังรูปภาพบิตแมป รูปภาพบิตแมปมีขนาดสูงสุด 4800 x 4800 พิกเซล

คำขอ Place Photos

วิธีดึงรูปภาพของสถานที่

  1. ใช้ รายละเอียดสถานที่ (ใหม่) เพื่อดึงออบเจ็กต์ 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 ถึง 4800 คุณต้องระบุความสูงสูงสุด ความกว้างสูงสุด หรือทั้งสองอย่าง

    • หากต้องการตั้งค่าพารามิเตอร์ความสูงสูงสุด ให้เรียกใช้เมธอด setMaxHeight() เมื่อสร้างออบเจ็กต์ FetchResolvedPhotoUriRequest
    • หากต้องการตั้งค่าพารามิเตอร์ความกว้างสูงสุด ให้เรียกใช้เมธอด setMaxWidth() เมื่อสร้างออบเจ็กต์ FetchResolvedPhotoUriRequest

ตัวอย่าง Place Photos

ตัวอย่างต่อไปนี้แสดงวิธีรับ 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, อาจมีข้อมูลการระบุแหล่งที่มาเพิ่มเติม 2 ประเภท ได้แก่

หากออบเจ็กต์ PhotoMetadata ที่แสดงผลมีข้อมูลการระบุแหล่งที่มาประเภทใดประเภทหนึ่ง คุณต้องใส่ข้อมูลการระบุแหล่งที่มาในแอปพลิเคชันทุกที่ที่แสดงรูปภาพ ดูข้อมูลเพิ่มเติมได้ที่ ดู การแสดงข้อมูลการระบุแหล่งที่มา