รายละเอียดสถานที่

เลือกแพลตฟอร์ม Android iOS JavaScript บริการผ่านเว็บ

Places SDK สำหรับ Android จะให้ข้อมูลที่สมบูรณ์กับแอปพลิเคชันของคุณ เกี่ยวกับสถานที่ต่างๆ รวมทั้งชื่อและที่อยู่ของสถานที่ ตำแหน่งที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น อย่างไนท์คลับ ร้านสัตว์เลี้ยง พิพิธภัณฑ์ และอื่นๆ วิธีเข้าถึงข้อมูลนี้สำหรับ สถานที่หนึ่ง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุแบบคงที่ที่ไม่ซ้ำกัน ระบุสถานที่

รายละเอียดสถานที่

Place ให้ข้อมูลเกี่ยวกับสถานที่เฉพาะ คุณสามารถระงับ Place ด้วยวิธีต่อไปนี้

เมื่อขอสถานที่ คุณต้องระบุข้อมูลสถานที่ที่จะแสดง โดยส่งรายชื่อ Place.Field ซึ่งระบุข้อมูลที่จะแสดง ซึ่งเป็นสิ่งสำคัญที่ต้องพิจารณาเพราะมีผลต่อ ค่าใช้จ่ายสำหรับคำขอแต่ละรายการ

เนื่องจากไม่สามารถเว้นว่างผลลัพธ์ข้อมูลสถานที่ได้ เฉพาะผลลัพธ์สถานที่ที่มีข้อมูลเท่านั้น (ตัวอย่างเช่น หากสถานที่ที่ขอไม่มีรูปภาพ ระบบจะแสดงผล photos จะไม่ปรากฏในผลลัพธ์)

ตัวอย่างต่อไปนี้ส่งผ่านรายการ ค่า Place.Field เพื่อระบุข้อมูลที่ส่งคืนจากคำขอ:

Kotlin

// Specify the fields to return.
val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)

Java

// Specify the fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
  

เข้าถึงช่องข้อมูลออบเจ็กต์สถานที่

หลังจากได้รับออบเจ็กต์ Place แล้ว ให้ใช้เมธอดของออบเจ็กต์เพื่อเข้าถึง ข้อมูลที่ระบุในคำขอ หากช่องหายไปจากออบเจ็กต์ Place เมธอดที่เกี่ยวข้องแสดงผลเป็น Null ด้านล่างนี้เป็นตัวอย่างของวิธีการที่ใช้ได้ ดูรายการวิธีการทั้งหมดได้ที่ Place การอ้างอิง API

  • getAddress() – ที่อยู่ของสถานที่ ซึ่งมนุษย์อ่านได้
  • getAddressComponents()List ขององค์ประกอบของที่อยู่ของสถานที่นี้ คอมโพเนนต์เหล่านี้มีไว้เพื่อ ในการดึงข้อมูลที่มีโครงสร้างเกี่ยวกับที่อยู่ของสถานที่ ตัวอย่างการค้นหาเมืองที่สถานที่นั้นตั้งอยู่ ไม่ใช้ คอมโพเนนต์สำหรับการจัดรูปแบบที่อยู่ ให้โทรหา getAddress() แทน ซึ่งให้ที่อยู่ในรูปแบบที่แปลแล้ว
  • getId() – ตัวระบุแบบข้อความสำหรับสถานที่ อ่านแล้ว เพิ่มเติมเกี่ยวกับรหัสสถานที่ในส่วนอื่นของหน้านี้
  • getLatLng() – สถานที่ตั้งทางภูมิศาสตร์ของสถานที่ ระบุเป็นพิกัดละติจูดและลองจิจูด
  • getName() – ชื่อสถานที่
  • getOpeningHours()OpeningHours ของสถานที่นั้น โทรติดต่อ OpeningHours.getWeekdayText() เพื่อส่งคืน รายการของสตริงที่แสดงเวลาเปิดและปิดในแต่ละวันของ ทั้งสัปดาห์ โทรติดต่อ OpeningHours.getPeriods() เพื่อแสดงรายการ period ที่มีรายละเอียดเพิ่มเติมซึ่ง เทียบเท่ากับข้อมูลที่ได้จาก getWeekdayText()

    ออบเจ็กต์ Place ยังมีส่วน getCurrentOpeningHours() ซึ่งแสดงผลเวลาทำการของสถานที่ในช่วง 7 วันข้างหน้า และ getSecondaryOpeningHours() ซึ่งแสดงเวลาทำการรองของสถานที่ในอีก 7 วันข้างหน้า

  • isOpen() – บูลีนที่ระบุว่าสถานที่นี้เป็น เปิดอยู่ หากไม่ได้ระบุเวลา จะใช้ค่าเริ่มต้นตอนนี้ isOpen ระบบจะส่งคืนก็ต่อเมื่อทั้ง Place.Field.UTC_OFFSET และ Place.Field.OPENING_HOURSว่างอยู่ เพื่อให้แน่ใจว่าข้อมูลถูกต้อง ให้ขอ Place.Field.BUSINESS_STATUS และ Place.Field.UTC_OFFSET ฟิลด์ในคำขอสถานที่เดิมของคุณ หากไม่ได้ขอ ระบบจะถือว่าธุรกิจดำเนินกิจการอยู่ ดูวิธีใช้วิดีโอนี้ isOpenพร้อมรายละเอียดสถานที่

ตัวอย่างง่ายๆ มีดังนี้

Kotlin



val name = place.name
val address = place.address
val location = place.latLng

      

Java


final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final LatLng location = place.getLatLng();

      

รับสถานที่โดยใช้รหัส

รหัสสถานที่คือตัวระบุแบบข้อความที่ระบุสถานที่แต่ละแห่งโดยไม่ซ้ำกัน ใน Places SDK สำหรับ Android คุณสามารถเรียกดูรหัสของสถานที่โดยการเรียก Place.getId() บริการเติมข้อความอัตโนมัติเกี่ยวกับสถานที่ จะแสดงรหัสสถานที่สำหรับแต่ละสถานที่ที่ตรงกับคำค้นหาที่ให้ไว้ด้วย และกรอง คุณสามารถจัดเก็บรหัสสถานที่และใช้เพื่อดึงข้อมูล Place อีกครั้งในภายหลัง

หากต้องการสถานที่โดยใช้บัตรประจำตัว ให้โทร PlacesClient.fetchPlace() การส่ง FetchPlaceRequest

API จะแสดงผล FetchPlaceResponse ใน Task FetchPlaceResponse มี Place ตรงกับรหัสสถานที่ที่ระบุ

ตัวอย่างโค้ดต่อไปนี้แสดงการเรียกใช้ fetchPlace() ไปยัง ดูรายละเอียดของสถานที่ที่ระบุ

Kotlin



// Define a Place ID.
val placeId = "INSERT_PLACE_ID_HERE"

// Specify the fields to return.
val placeFields = listOf(Place.Field.ID, Place.Field.NAME)

// Construct a request object, passing the place ID and fields array.
val request = FetchPlaceRequest.newInstance(placeId, placeFields)

placesClient.fetchPlace(request)
    .addOnSuccessListener { response: FetchPlaceResponse ->
        val place = response.place
        Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}")
    }.addOnFailureListener { exception: Exception ->
        if (exception is ApiException) {
            Log.e(TAG, "Place not found: ${exception.message}")
            val statusCode = exception.statusCode
            TODO("Handle error with given status code")
        }
    }

      

Java


// Define a Place ID.
final String placeId = "INSERT_PLACE_ID_HERE";

// Specify the fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Construct a request object, passing the place ID and fields array.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);

placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
    Place place = response.getPlace();
    Log.i(TAG, "Place found: " + place.getName());
}).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.
    }
});

      

รับสถานะเปิด

PlacesClient.isOpen(IsOpenRequest request) จะแสดงออบเจ็กต์ IsOpenResponse ที่ระบุว่าสถานที่นี้ เปิดอยู่ตามเวลาที่ระบุในการโทร

เมธอดนี้ใช้อาร์กิวเมนต์ประเภท IsOpenRequest รายการเดียวที่มีสิ่งต่อไปนี้

  • Place หรือสตริงที่ระบุรหัสสถานที่
  • ค่าเวลา (ไม่บังคับ) ที่ระบุเวลาเป็นมิลลิวินาทีจาก 1970-01-01T00:00:00Z หากไม่ได้ระบุเวลา จะใช้ค่าเริ่มต้นตอนนี้

วิธีนี้กำหนดให้ต้องมีช่องต่อไปนี้ในออบเจ็กต์ Place

  • Place.Field.BUSINESS_STATUS
  • Place.Field.CURRENT_OPENING_HOURS
  • Place.Field.OPENING_HOURS
  • Place.Field.UTC_OFFSET

หากช่องเหล่านี้ไม่กรอกข้อมูลในออบเจ็กต์ Place หรือหากส่งรหัสสถานที่ เมธอดที่ใช้ PlacesClient.fetchPlace() เพื่อดึงข้อมูล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์สถานที่ด้วยฟิลด์ที่จำเป็น ดูรายละเอียดสถานที่

ตัวอย่างต่อไปนี้จะกำหนดว่าสถานที่แห่งหนึ่งเปิดอยู่หรือไม่ ในตัวอย่างนี้ คุณจะ รหัสสถานที่ไปยัง isOpen():

Kotlin



val isOpenCalendar: Calendar = Calendar.getInstance()
val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"

val request: IsOpenRequest = try {
    IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis)
} catch (e: IllegalArgumentException) {
    e.printStackTrace()
    return
}
val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request)
isOpenTask.addOnSuccessListener { response ->
    val isOpen = response.isOpen
}
// ...

      

Java


@NonNull
Calendar isOpenCalendar = Calendar.getInstance();
String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk";
IsOpenRequest isOpenRequest;

try {
    isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis());
} catch (IllegalArgumentException e) {
    e.printStackTrace();
    return;
}

Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest);

placeTask.addOnSuccessListener(
        (response) ->
                isOpen = response.isOpen());
// ...

      

ตัวอย่างถัดไปแสดงการเรียกใช้ isOpen() เมื่อคุณส่งออบเจ็กต์ Place ออบเจ็กต์ Place ต้องมีรหัสสถานที่ที่ถูกต้อง

Kotlin



val isOpenCalendar: Calendar = Calendar.getInstance()
var place: Place
val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"
// Specify the required fields for an isOpen request.
val placeFields: List<Place.Field> = listOf(
    Place.Field.BUSINESS_STATUS,
    Place.Field.CURRENT_OPENING_HOURS,
    Place.Field.ID,
    Place.Field.OPENING_HOURS,
    Place.Field.UTC_OFFSET
)

val placeRequest: FetchPlaceRequest =
    FetchPlaceRequest.newInstance(placeId, placeFields)
val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest)
placeTask.addOnSuccessListener { placeResponse ->
    place = placeResponse.place

    val isOpenRequest: IsOpenRequest = try {
        IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis)
    } catch (e: IllegalArgumentException) {
        e.printStackTrace()
        return@addOnSuccessListener
    }
    val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest)
    isOpenTask.addOnSuccessListener { isOpenResponse ->
        val isOpen = isOpenResponse.isOpen
    }
    // ...
}
// ...

      

Java


@NonNull
Calendar isOpenCalendar = Calendar.getInstance();
String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk";
// Specify the required fields for an isOpen request.
List<Place.Field> placeFields = new ArrayList<>(Arrays.asList(
        Place.Field.BUSINESS_STATUS,
        Place.Field.CURRENT_OPENING_HOURS,
        Place.Field.ID,
        Place.Field.OPENING_HOURS,
        Place.Field.UTC_OFFSET
));

FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request);

placeTask.addOnSuccessListener(
        (placeResponse) -> {
            Place place = placeResponse.getPlace();
            IsOpenRequest isOpenRequest;

            try {
                isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis());
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                return;
            }
            Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest);

            isOpenTask.addOnSuccessListener(
                    (isOpenResponse) -> isOpen = isOpenResponse.isOpen());
            // ...
        });
// ...

      

แสดงการระบุแหล่งที่มาในแอปของคุณ

เมื่อแอปของคุณแสดงข้อมูลสถานที่ รวมถึงรีวิวสถานที่ แอปต้องแสดง การระบุแหล่งที่มาใดๆ สำหรับข้อมูลเพิ่มเติม โปรดดู การระบุแหล่งที่มา

ข้อมูลเพิ่มเติมเกี่ยวกับรหัสสถานที่

รหัสสถานที่ที่ใช้ใน Places SDK สำหรับ Android เป็นตัวระบุเดียวกัน ตามที่ใช้ใน Places API รหัสสถานที่แต่ละรายการอ้างอิงถึงสถานที่ได้เพียงแห่งเดียว แต่สถานที่ 1 แห่งอาจมีมากกว่า รหัสสถานที่มากกว่า 1 รหัส นอกจากนี้ยังมีกรณีอื่นๆ ที่อาจทำให้เกิด รับรหัสสถานที่ใหม่ ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปยัง ตำแหน่งนั้น

เมื่อคุณขอสถานที่ด้วยการระบุรหัสสถานที่ คุณสามารถมั่นใจได้ว่า คุณจะได้รับการตอบกลับในตำแหน่งเดิมเสมอ (หากสถานที่นั้นยังคง อยู่แล้ว) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ซึ่ง ที่แตกต่างจากในคำขอของคุณ

สำหรับข้อมูลเพิ่มเติม โปรดดู ภาพรวมรหัสสถานที่