Places SDK สำหรับ Android จะให้ข้อมูลที่สมบูรณ์กับแอปพลิเคชันของคุณ เกี่ยวกับสถานที่ต่างๆ รวมทั้งชื่อและที่อยู่ของสถานที่ ตำแหน่งที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น อย่างไนท์คลับ ร้านสัตว์เลี้ยง พิพิธภัณฑ์ และอื่นๆ วิธีเข้าถึงข้อมูลนี้สำหรับ สถานที่หนึ่ง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุแบบคงที่ที่ไม่ซ้ำกัน ระบุสถานที่
รายละเอียดสถานที่
Place
ให้ข้อมูลเกี่ยวกับสถานที่เฉพาะ คุณสามารถระงับ
Place
ด้วยวิธีต่อไปนี้
- โทร
PlacesClient.fetchPlace()
– ดูคู่มือเพื่อ การขอข้อมูลสถานที่โดยใช้บัตรประจำตัว - โทร
PlacesClient.findCurrentPlace()
– ดูคู่มือเพื่อ กำลังดูสถานที่ปัจจุบัน
เมื่อขอสถานที่ คุณต้องระบุข้อมูลสถานที่ที่จะแสดง โดยส่งรายชื่อ 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 รหัส นอกจากนี้ยังมีกรณีอื่นๆ ที่อาจทำให้เกิด รับรหัสสถานที่ใหม่ ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปยัง ตำแหน่งนั้น
เมื่อคุณขอสถานที่ด้วยการระบุรหัสสถานที่ คุณสามารถมั่นใจได้ว่า คุณจะได้รับการตอบกลับในตำแหน่งเดิมเสมอ (หากสถานที่นั้นยังคง อยู่แล้ว) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ซึ่ง ที่แตกต่างจากในคำขอของคุณ
สำหรับข้อมูลเพิ่มเติม โปรดดู ภาพรวมรหัสสถานที่