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

เลือกแพลตฟอร์ม: 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 คือ

  • ข้อมูลเมตาของรูปภาพ

    ออบเจ็กต์ข้อมูลเมตาของรูปภาพที่จะแสดง

  • ความสูงสูงสุดหรือความกว้างสูงสุด

    ระบุความสูงและความกว้างสูงสุดของรูปภาพที่จะแสดงในหน่วยพิกเซล หากรูปภาพมีขนาดเล็กกว่าค่าที่ระบุ ระบบจะแสดงผลรูปภาพต้นฉบับ หากรูปภาพมีขนาดใหญ่กว่าในมิติใดมิติหนึ่ง ระบบจะปรับขนาดให้ตรงกับมิติที่เล็กกว่าใน 2 มิตินั้น โดยจำกัดไว้ที่สัดส่วนภาพเดิม ทั้งพร็อพเพอร์ตี้ความสูงสูงสุดและความกว้างสูงสุดยอมรับจำนวนเต็มระหว่าง 1 ถึง 4800 คุณต้องระบุความสูงสูงสุด ความกว้างสูงสุด หรือทั้ง 2 อย่าง

    • หากต้องการตั้งค่าพารามิเตอร์ความสูงสูงสุด ให้เรียกใช้เมธอด 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 ที่แสดงผลมีแหล่งที่มาประเภทใดประเภทหนึ่ง คุณต้อง ใส่แหล่งที่มาในแอปพลิเคชันทุกที่ที่แสดงรูปภาพ ดูข้อมูลเพิ่มเติมได้ที่การแสดงการระบุแหล่งที่มา