บทนำ
รหัสสถานที่จะระบุสถานที่ในฐานข้อมูล Google Places และใน Google Maps โดยไม่ซ้ำกัน ระบบยอมรับรหัสสถานที่ ในคำขอไปยัง Maps API ต่อไปนี้
- การดึงข้อมูลที่อยู่สำหรับรหัสสถานที่ใน Geocoding API และบริการการเข้ารหัสพิกัดภูมิศาสตร์, Maps JavaScript API
- การระบุต้นทาง ปลายทาง และจุดแวะพักกลางใน Routes API และ Directions API (เดิม) และบริการเส้นทาง, Maps JavaScript API (เดิม)
- การระบุต้นทางและปลายทางใน Routes API และ Distance Matrix API (เดิม) และ บริการเมทริกซ์ระยะทาง, Maps JavaScript API (เดิม)
- การดึงข้อมูลรายละเอียดสถานที่ใน Places API (ใหม่), Places SDK สำหรับ Android (ใหม่), Places SDK สำหรับ iOS (ใหม่) และ Places Library
- การใช้พารามิเตอร์รหัสสถานที่ใน Maps Embed API
- กำลังดึงข้อมูลคำค้นหาใน URL ของ Maps
- การแสดงขีดจำกัดความเร็วใน Roads API
- การค้นหาและการจัดรูปแบบรูปหลายเหลี่ยมขอบเขตในการจัดรูปแบบตามข้อมูลสำหรับขอบเขต
ค้นหารหัสของสถานที่ที่เฉพาะเจาะจง
คุณกำลังมองหารหัสสถานที่ของสถานที่ที่เฉพาะเจาะจงอยู่ใช่ไหม ใช้เครื่องมือค้นหารหัสสถานที่ ด้านล่างเพื่อค้นหาสถานที่และรับรหัสของสถานที่นั้น
หรือคุณจะดูเครื่องมือค้นหารหัสสถานที่พร้อมโค้ดในเอกสารประกอบของ Maps JavaScript API ก็ได้
ภาพรวม
รหัสสถานที่คือตัวระบุที่เป็นข้อความซึ่งระบุสถานที่โดยไม่ซ้ำกัน ความยาวของตัวระบุอาจแตกต่างกันไป (ไม่มีความยาวสูงสุดสำหรับรหัสสถานที่) ตัวอย่าง
-
ChIJgUbEo8cfqokR5lP9_Wh_DaM -
GhIJQWDl0CIeQUARxks3icF8U8A -
EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN -
EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0E -
IhoSGAoUChIJ0U6OoscfqokR6P225pApu2UQDQ
รหัสสถานที่พร้อมใช้งานสำหรับสถานที่ส่วนใหญ่ ซึ่งรวมถึงธุรกิจ สถานที่สำคัญ สวนสาธารณะ และสี่แยก สถานที่หรือตำแหน่งเดียวกันอาจมีรหัสสถานที่ที่แตกต่างกันหลายรหัส รหัสสถานที่อาจมีการเปลี่ยนแปลงเมื่อเวลาผ่านไป
คุณใช้รหัสสถานที่เดียวกันใน Places API และ Google Maps Platform API หลายรายการได้ เช่น คุณสามารถใช้รหัสสถานที่เดียวกันเพื่อ อ้างอิงสถานที่ใน Places API, Maps JavaScript API, Geocoding API, Maps Embed API และ Roads API
ดึงข้อมูลรายละเอียดสถานที่โดยใช้รหัสสถานที่
วิธีทั่วไปในการใช้รหัสสถานที่คือการค้นหาสถานที่โดยใช้ Places API หรือไลบรารี Places ใน Maps JavaScript API จากนั้นใช้รหัสสถานที่ที่ระบบส่งคืนเพื่อดึงรายละเอียดสถานที่ คุณสามารถจัดเก็บรหัสสถานที่และใช้เพื่อดึงรายละเอียดสถานที่เดียวกันในภายหลังได้ อ่านเกี่ยวกับการบันทึกรหัสสถานที่ได้ที่ส่วนท้ายของเอกสารนี้
ตัวอย่างการใช้ Places SDK สำหรับ Android (ใหม่)
ใน Places SDK สำหรับ Android (ใหม่) คุณสามารถเรียกข้อมูลรหัสของสถานที่ได้โดย
เรียกใช้
Place.getId()
บริการPlace Autocomplete (เดิม) ยังแสดงรหัสสถานที่สำหรับแต่ละสถานที่ที่ตรงกับคำค้นหาและตัวกรองที่ระบุด้วย ใช้รหัสสถานที่เพื่อดึงข้อมูลออบเจ็กต์
Place
อีกครั้งในภายหลัง
หากต้องการดูสถานที่ตามรหัส ให้เรียกใช้ PlacesClient.fetchPlace() โดยส่ง FetchPlaceRequest
API จะแสดง
FetchPlaceResponse
ใน
Task
FetchPlaceResponse มีออบเจ็กต์ Place ที่ตรงกับรหัสสถานที่ที่ระบุ
ตัวอย่างโค้ดต่อไปนี้แสดงการเรียก fetchPlace() เพื่อ
รับรายละเอียดของสถานที่ที่ระบุ
Kotlin
// Define a Place ID. val placeId = PlaceIdProvider.getRandomPlaceId() // Specify the fields to return. val placeFields = listOf( Place.Field.ID, Place.Field.DISPLAY_NAME, Place.Field.FORMATTED_ADDRESS, Place.Field.LOCATION ) // 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 val name = place.displayName val address = place.formattedAddress val location = place.location binding.placeName.text = name binding.placeAddress.text = address if (location != null) { binding.placeLocation.text = getString( R.string.place_location, location.latitude, location.longitude ) } else { binding.placeLocation.text = null } Log.i(TAG, "Place found: ${place.displayName}") }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { val message = getString(R.string.place_not_found, exception.message) binding.placeName.text = message 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 = PlaceIdProvider.getRandomPlaceId(); // Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList( Place.Field.ID, Place.Field.DISPLAY_NAME, Place.Field.FORMATTED_ADDRESS, Place.Field.LOCATION ); // 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(); final CharSequence name = place.getDisplayName(); final CharSequence address = place.getFormattedAddress(); final LatLng location = place.getLocation(); binding.placeName.setText(name); binding.placeAddress.setText(address); if (location != null) { binding.placeLocation.setText( getString(R.string.place_location, location.latitude, location.longitude) ); } else { binding.placeLocation.setText(null); } Log.i(TAG, "Place found: " + place.getDisplayName()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException apiException) { final String message = getString(R.string.place_not_found, apiException.getMessage()); binding.placeName.setText(message); Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } });
บันทึกรหัสสถานที่ไว้ใช้ในภายหลัง
รหัสสถานที่จะได้รับการยกเว้นจากข้อจำกัดการแคชที่ระบุไว้ในส่วนที่ 3.2.3(ข) ของข้อกำหนดในการให้บริการของ Google Maps Platform ดังนั้นคุณจึงจัดเก็บค่ารหัสสถานที่เพื่อใช้ในภายหลังได้
รีเฟรชรหัสสถานที่ที่จัดเก็บไว้
เนื่องจากรหัสสถานที่อาจเปลี่ยนแปลงเนื่องจากการอัปเดตในฐานข้อมูล Google Maps เราจึงขอแนะนำให้อัปเดตรหัสสถานที่หากมีอายุมากกว่า 12 เดือน คุณสามารถรีเฟรชรหัสสถานที่ได้โดยไม่มีค่าใช้จ่ายด้วยการส่งคำขอรายละเอียดสถานที่โดยระบุเฉพาะช่อง Place.Field.ID ในพารามิเตอร์ fields
การเรียกนี้จะทริกเกอร์ SKU ของรายละเอียดสถานที่ - การรีเฟรชรหัส
รหัสข้อผิดพลาดเมื่อใช้รหัสสถานที่
INVALID_REQUEST
รหัสสถานะ INVALID_REQUEST แสดงว่ารหัสสถานที่ที่ระบุไม่ถูกต้อง ระบบอาจแสดงผล INVALID_REQUEST เมื่อรหัสสถานที่มีการตัดให้สั้นลงหรือมีการแก้ไข และไม่ถูกต้องอีกต่อไป
NOT_FOUND
รหัสสถานะ NOT_FOUND แสดงว่ารหัสสถานที่ที่ระบุ
ล้าสมัยแล้ว รหัสสถานที่อาจล้าสมัยหากธุรกิจปิดตัวลงหรือย้ายไป
สถานที่ใหม่ รหัสสถานที่อาจมีการเปลี่ยนแปลงเนื่องจากการอัปเดตฐานข้อมูล Google
Maps ด้วย ในกรณีเช่นนี้ สถานที่อาจได้รับรหัสสถานที่ใหม่ และรหัสเดิมจะแสดงผลเป็น NOT_FOUND
หากต้องการรีเฟรชผลลัพธ์ในกรณีที่รหัสสถานที่ไม่ถูกต้อง ให้จัดเก็บคำขอเดิมที่แสดงรหัสสถานที่แต่ละรหัสและส่งคำขออีกครั้งตามความจำเป็น โปรดทราบว่าคำขอที่ออกใหม่จะ เรียกเก็บเงินตาม SKU ที่เหมาะสม
บางครั้งรหัสสถานที่บางประเภทอาจทำให้เกิดการตอบกลับ NOT_FOUND หรือ API อาจแสดงรหัสสถานที่อื่นในการตอบกลับ รหัสสถานที่ประเภทต่างๆ มีดังนี้
- ที่อยู่ถนนที่ไม่มีอยู่ใน Google Maps เป็นที่อยู่ที่แน่นอน แต่ได้มาจากการอนุมานจากช่วงของที่อยู่
- ส่วนของเส้นทางยาว ซึ่งคำขอจะระบุเมืองหรือท้องถิ่นด้วย
- ทางแยก
- Places ที่มีคอมโพเนนต์ที่อยู่ประเภท
subpremise
รหัสเหล่านี้มักอยู่ในรูปแบบสตริงยาว (รหัสสถานที่ไม่จำกัดความยาวสูงสุด) เช่น
EpID4LC14LC_4LCo4LCv4LGN4LCo4LCX4LCw4LGNIC0g4LC44LGI4LCm4LGN4LCs4LC-4LCm4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSAmIOCwteCwv-CwqOCwr-CxjSDgsKjgsJfgsLDgsY0g4LCu4LGG4LCv4LC_4LCo4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSwg4LC14LC_4LCo4LCv4LGNIOCwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwsuCwleCxjeCwt-CxjeCwruCwv-CwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwuOCwsOCxguCwsOCxjSDgsKjgsJfgsLDgsY0g4LC14LGG4LC44LGN4LCf4LGNLCDgsLjgsK_gsYDgsKbgsL7gsKzgsL7gsKbgsY0sIOCwueCxiOCwpuCwsOCwvuCwrOCwvuCwpuCxjSwg4LCk4LGG4LCy4LCC4LCX4LC-4LCjIDUwMDA1OSwg4LCt4LC-4LCw4LCk4LCm4LGH4LC24LCCImYiZAoUChIJ31l5uGWYyzsR9zY2qk9lDiASFAoSCd9ZebhlmMs7Efc2NqpPZQ4gGhQKEglDz61OZpjLOxHgDJCFY-o1qBoUChIJi37TW2-YyzsRr_uv50r7tdEiCg1MwFcKFS_dyy4