Places SDK สําหรับ Android จะให้ข้อมูลรายละเอียดเกี่ยวกับสถานที่แก่แอป รวมถึงชื่อและที่อยู่ของสถานที่ ตําแหน่งทางภูมิศาสตร์ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น ไนท์คลับ ร้านขายสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลเกี่ยวกับสถานที่แห่งนี้โดยเฉพาะ คุณสามารถใช้รหัสสถานที่ซึ่งเป็นตัวระบุแบบคงที่ที่ระบุสถานที่ได้อย่างเฉพาะเจาะจง
รายละเอียดสถานที่
ออบเจ็กต์ Place
ให้ข้อมูลเกี่ยวกับสถานที่ที่เฉพาะเจาะจง คุณระงับออบเจ็กต์ Place
ได้ด้วยวิธีต่อไปนี้
- โทรติดต่อ
PlacesClient.findCurrentPlace()
– ดูคําแนะนําเพื่อรับข้อมูลตําแหน่งปัจจุบัน - โทรติดต่อ
PlacesClient.fetchPlace()
– ดูคําแนะนําเพื่อ รับสถานที่ตามรหัส
เมื่อขอสถานที่ คุณต้องระบุข้อมูลสถานที่ที่จะส่ง โดยส่งผ่านรายการค่า Place.Field ที่ระบุข้อมูลที่จะแสดง รายการนี้ถือเป็นสิ่งสําคัญที่ควรพิจารณาเนื่องจากส่งผลต่อต้นทุนสําหรับคําขอแต่ละรายการ
เนื่องจากผลลัพธ์ข้อมูลสถานที่ต้องไม่ว่างเปล่า ระบบจะส่งเฉพาะผลลัพธ์ที่มีข้อมูลเท่านั้น (เช่น หากสถานที่ที่ขอไม่มีรูปภาพ ช่อง photos
จะไม่ปรากฏในผลลัพธ์)
ตัวอย่างต่อไปนี้ส่งรายการค่า Place.Field 3 ค่าเพื่อระบุข้อมูลที่คําขอแสดงผล
Java
// Specify the fields to return. final ListplaceFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
เมื่อได้รับออบเจ็กต์ Place
แล้ว ให้ใช้เมธอดของออบเจ็กต์เพื่อเรียกข้อมูลสถานที่
ตัวอย่างด้านล่างเป็นวิธีบางส่วนที่ใช้ได้ ดูรายการวิธีทั้งหมดได้ในการอ้างอิง API Place
getAddress()
– ที่อยู่ของสถานที่ในรูปแบบที่มนุษย์อ่านได้getAddressComponents()
–List
ของคอมโพเนนต์ที่อยู่สําหรับสถานที่นี้ คอมโพเนนต์เหล่านี้มีไว้เพื่อวัตถุประสงค์ในการแยกข้อมูลที่มีโครงสร้างเกี่ยวกับที่อยู่ของสถานที่ เช่น พบเมืองที่สถานที่ตั้งอยู่ อย่าใช้คอมโพเนนต์เหล่านี้เพื่อจัดรูปแบบที่อยู่ แต่ให้ใช้getAddress()
ซึ่งให้ที่อยู่ที่มีการจัดรูปแบบแทนgetID()
– ตัวระบุข้อความสําหรับสถานที่ อ่านเพิ่มเติมเกี่ยวกับรหัสสถานที่ในส่วนอื่นๆ ของหน้านี้getLatLng()
– สถานที่ตั้งทางภูมิศาสตร์ของสถานที่ ซึ่งระบุเป็นพิกัดละติจูดและลองจิจูดgetName()
– ชื่อสถานที่getOpeningHours()
–OpeningHours
ของสถานที่ เรียกOpeningHours.getWeekdayText()
เพื่อกลับไปที่รายการสตริงที่แสดงเวลาทําการเปิดและปิดของทุกวันของแต่ละสัปดาห์ เรียกใช้OpeningHours.getPeriods()
เพื่อแสดงรายการออบเจ็กต์period
ที่มีรายละเอียดเพิ่มเติมซึ่งเทียบเท่ากับข้อมูลที่ได้จากgetWeekdayText()
หมายเหตุ: หากสถานที่เปิดทําการอยู่เสมอ ระยะเวลาจะแสดงเป็นวันอาทิตย์ตอนเที่ยงคืน และcloseEvent
ไม่มีข้อมูลisOpen()
– บูลีนที่ระบุว่าสถานที่นี้เปิดอยู่หรือไม่ หากไม่ได้ระบุเวลา ค่าเริ่มต้นจะเป็นตอนนี้ ระบบจะแสดงผลisOpen
เฉพาะเมื่อมีพร็อพเพอร์ตี้ทั้งPlace.Field.UTC_OFFSET
และPlace.Field.OPENING_HOURS
เท่านั้น ขอทราบช่องPlace.Field.BUSINESS_STATUS
และPlace.Field.UTC_OFFSET
ในคําขอสถานที่เดิมเพื่อให้ผลลัพธ์ถูกต้อง หากไม่ได้ร้องขอ จะถือว่าธุรกิจเปิดทําการอยู่ ดูวิดีโอนี้เกี่ยวกับวิธีใช้isOpen
พร้อมรายละเอียดสถานที่
ตัวอย่างง่ายๆ มีดังนี้
Java
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
Kotlin
val name = place.name val address = place.address val location = place.latLng
รับสถานที่ตามบัตรประจําตัว
รหัสสถานที่เป็นตัวระบุแบบข้อความที่ระบุสถานที่ได้อย่างแน่ชัด ใน
SDK ของ Places สําหรับ Android คุณสามารถเรียกข้อมูลรหัสของสถานที่ได้โดยการเรียกใช้ Place.getId()
บริการเติมข้อความอัตโนมัติเกี่ยวกับสถานที่ยังแสดงรหัสสถานที่สําหรับแต่ละสถานที่ที่ตรงกับคําค้นหาและตัวกรองนั้นด้วย คุณสามารถจัดเก็บรหัสสถานที่และใช้เพื่อเรียกข้อมูลออบเจ็กต์ Place
อีกครั้งในภายหลังได้
หากต้องการขอสถานที่โดยใช้รหัส โปรดโทรหา PlacesClient.fetchPlace()
ผ่าน FetchPlaceRequest
API แสดงผล FetchPlaceResponse
ใน Task
FetchPlaceResponse
มีออบเจ็กต์ Place
ที่ตรงกับรหัสสถานที่ที่ระบุ
ตัวอย่างโค้ดต่อไปนี้แสดงการเรียกใช้ fetchPlace()
เพื่อดูรายละเอียดของสถานที่ที่ระบุ
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. } });
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") } }
แสดงการระบุแหล่งที่มาในแอป
เมื่อแอปแสดงข้อมูลสถานที่ แอปต้องแสดงการระบุแหล่งที่มาด้วย ดูเอกสารประกอบเกี่ยวกับการระบุแหล่งที่มา
ข้อมูลเพิ่มเติมเกี่ยวกับรหัสสถานที่
รหัสสถานที่ที่ใช้ใน Places SDK สําหรับ Android เป็นตัวระบุเดียวกันกับที่ใช้ใน Places API รหัสสถานที่แต่ละแห่งหมายถึงสถานที่เพียงแห่งเดียว แต่สถานที่ 1 แห่งจะมีรหัสสถานที่ได้มากกว่า 1 รายการ มีสถานการณ์อื่นๆ ที่อาจทําให้สถานที่ได้รับรหัสสถานที่ใหม่ เช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจเปลี่ยนไปใช้สถานที่ใหม่
เมื่อคุณขอสถานที่ด้วยการระบุรหัสสถานที่ คุณมั่นใจได้เลยว่าจะได้รับที่เดียวกันในคําตอบเสมอ (หากสถานที่ดังกล่าวยังคงอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ที่แตกต่างจากรหัสในคําขอ
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมรหัสสถานที่