เครื่องมือ: compute_routes
คำนวณเส้นทางการเดินทางระหว่างต้นทางและปลายทาง โดยอาจผ่านจุดแวะพักระหว่างทาง แสดงระยะทางและระยะเวลาของแต่ละเส้นทาง
ข้อกำหนดในการป้อนข้อมูล (สำคัญ):
originและdestination(ออบเจ็กต์ - บังคับ): ต้องระบุแต่ละรายการโดยใช้รายการใดรายการหนึ่งต่อไปนี้เท่านั้นaddress(สตริง เช่น'Eiffel Tower, Paris') ระบบจะแก้ไขชื่อสถานที่ จุดสังเกต และธุรกิจโดยตรง ดังนั้นอย่าเรียกใช้search_placesก่อนเพียงเพื่อเข้ารหัสพิกัดภูมิศาสตร์ของจุดอ้างอิง ระบุเมือง ภูมิภาค หรือประเทศที่ผู้ใช้พูดถึงlat_lng(ออบเจ็กต์,{"latitude": number, "longitude": number})place_id(สตริง เช่น'ChIJOwE_Id1w5EAR4Q27FkL6T_0') เช่น จากsearch_places
intermediate_waypoints(อาร์เรย์ของออบเจ็กต์ - ไม่บังคับ): จุดแวะพักสูงสุด 10 จุดที่ต้องผ่านตามลำดับระหว่างต้นทางและปลายทาง รูปแบบเดียวกับoriginไม่รองรับTRANSITรวมเฉพาะจุดแวะพักที่ผู้ใช้ขอเท่านั้นtravel_mode(enum - ไม่บังคับ):DRIVE(ค่าเริ่มต้น),WALK,BICYCLEหรือTRANSITเวลา (ไม่บังคับ - ตั้งค่าได้ไม่เกิน 1 รายการ): การประทับเวลา RFC 3339 ที่มีการชดเชยเวลา UTC เช่น
'2026-09-19T08:00:00-07:00'ค่าเริ่มต้นคือออกเดินทางตอนนี้ สำหรับTRANSITเวลาอาจเป็นอดีตได้สูงสุด 7 วันหรืออนาคตได้สูงสุด 100 วัน สำหรับโหมดอื่นๆ เวลาอาจเป็นเวลาในอนาคตได้สูงสุด 365 วัน และต้องไม่เป็นเวลาในอดีตdeparture_time: ใช้เมื่อผู้ใช้ระบุเวลาที่จะออก (เช่น "พรุ่งนี้ตอน 8 โมงเช้า")arrival_time: ใช้เมื่อผู้ใช้ระบุเวลาที่ต้องไปถึง (เช่น "ไปถึงที่นั่นภายใน 9:00 น.")
routing_preference(enum - ไม่บังคับ):ROUTING_PREFERENCE_TRAFFIC_UNAWARE(ค่าเริ่มต้น): ไม่สนใจสภาพการจราจรแบบเรียลไทม์ เหตุการณ์ และการปิดถนน เวลาในการตอบสนองต่ำที่สุดROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL: ใช้สภาพการจราจรแบบเรียลไทม์เมื่อพร้อมใช้งาน ไม่รองรับWALKหรือBICYCLEตั้งค่านี้เมื่อผู้ใช้ถามเกี่ยวกับการจราจร ความแออัด หรือ ETA ที่ปรับตามการจราจรเท่านั้น ซึ่งทำให้มีค่าใช้จ่ายและเวลาในการตอบสนองสูงขึ้น
location_bias(ออบเจ็กต์ - ไม่บังคับ):{"latitude": number, "longitude": number}ใช้เพื่อแก้ความกำกวมของชื่อสถานที่ในที่อยู่จุดอ้างอิง หากชื่อมีความกำกวม (เช่น "Springfield") และผู้ใช้ไม่ได้ระบุภูมิภาค ให้คงชื่อตามที่ระบุไว้ในaddressและตั้งค่าlocation_biasไปยังพื้นที่ที่ต้องการแทนการเดาภูมิภาคcompute_alternative_routes(บูลีน - ไม่บังคับ): ตั้งค่าเป็นtrueเฉพาะเมื่อผู้ใช้ขอตัวเลือกเส้นทางหรือทางเลือกอื่น ค่าเริ่มต้นคือfalseซึ่งจะแสดงเฉพาะเส้นทางที่แนะนำinclude_polyline(บูลีน - ไม่บังคับ): ตั้งค่าเป็นtrueเฉพาะเมื่อจำเป็นต้องใช้เรขาคณิตของเส้นทาง (encoded_polyline) ค่าเริ่มต้นคือfalse
วิธีการเรียกใช้เครื่องมือ
- หากไม่มีต้นทางหรือปลายทาง คุณต้องขอให้ผู้ใช้ชี้แจงก่อนเรียกใช้เครื่องมือ
- สำหรับคำถาม "A อยู่ห่างจาก B เท่าใด" ให้ใช้ B เป็น
originและ A เป็นdestination
ตัวอย่างการเรียกใช้เครื่องมือ: {"origin":{"address":"หอไอเฟล"},"destination":{"place_id":"ChIJt_5xIthw5EARoJ71mGq7t74"},"intermediate_waypoints":[{"address":"พิพิธภัณฑ์ลูฟวร์"}],"travel_mode":"DRIVE","departure_time":"2026-09-19T08:00:00+02:00"}
วิธีการตอบกลับ
- เมื่อมีการขอเส้นทางอื่น ระบบจะจัดเรียงเส้นทางจากเส้นทางที่แนะนำมากที่สุดไปจนถึงน้อยที่สุด
- หาก
routesว่างเปล่า ให้แจ้งผู้ใช้ว่าไม่พบเส้นทาง อย่าเดาเส้นทาง - ระบุเฉพาะข้อเท็จจริงที่เครื่องมือแสดงผลเท่านั้น อย่าสร้างเส้นทางแบบเลี้ยวต่อเลี้ยว สายขนส่งสาธารณะ สถานี ชานชาลา หรือการเปลี่ยนสายขึ้นมาเอง
- เอาต์พุตที่มีการตรวจสอบข้อมูลจากแหล่งที่มาต้องระบุแหล่งที่มาโดยใช้ช่อง
attributionของแต่ละเส้นทาง (หากมี)
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้ curl เพื่อเรียกใช้เครื่องมือ MCP compute_routes
| คำขอ Curl |
|---|
curl --location 'https://mapstools.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "compute_routes", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' |
สคีมาอินพุต
ComputeRoutesRequest
ComputeRoutesRequest
| การแสดง JSON |
|---|
{ "origin": { object ( |
| ช่อง | |
|---|---|
origin |
ต้องระบุ จุดอ้างอิงต้นทาง |
destination |
ต้องระบุ จุดอ้างอิงปลายทาง |
travelMode |
ไม่บังคับ ระบุรูปแบบการเดินทาง |
intermediateWaypoints[] |
ไม่บังคับ จุดแวะพักระหว่างต้นทางและปลายทางที่ต้องผ่านตามลำดับ รองรับจุดอ้างอิงระหว่างทางได้สูงสุด 10 จุด ระบบไม่รองรับจุดอ้างอิงระดับกลางเมื่อ |
routingPreference |
ไม่บังคับ กำหนดวิธีใช้ข้อมูลการจราจรเพื่อคำนวณเส้นทาง ไม่รองรับ |
locationBias |
ไม่บังคับ ตำแหน่งที่จะให้น้ำหนักผลการค้นหา เช่น เพื่อแก้ความกำกวมของคำค้นหาข้อความจุดอ้างอิง |
includePolyline |
ไม่บังคับ ระบุว่าจะรวมเส้นประกอบที่เข้ารหัสไว้ในเส้นทางการตอบกลับหรือไม่ ค่าเริ่มต้นคือ |
computeAlternativeRoutes |
ไม่บังคับ เลือกว่าจะคำนวณเส้นทางอื่นนอกเหนือจากเส้นทางที่แนะนำหรือไม่ ค่าเริ่มต้นคือ "เท็จ" ซึ่งในกรณีนี้ระบบจะแสดงเฉพาะเส้นทางที่แนะนำ เมื่อตั้งค่าเป็น "จริง" ระบบจะแสดงผลเส้นทางที่ใช้ได้ทั้งหมด แม้ว่าอาจไม่มีทางเลือกอื่นสำหรับคำขอทั้งหมดก็ตาม |
ฟิลด์ Union timing ระบุเวลาที่จะออกจากต้นทางหรือมาถึงจุดอ้างอิงสุดท้าย ค่าเริ่มต้นจะเป็นการออกเดินทาง ณ เวลาปัจจุบัน หากไม่ได้ระบุไว้ สำหรับ TRANSIT เวลาต้องไม่เกิน 7 วันในอดีตและไม่เกิน 100 วันในอนาคต สำหรับโหมดการเดินทางอื่นๆ เวลาต้องไม่เป็นเวลาในอดีตและต้องไม่เกิน 365 วันในอนาคต timing ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
departureTime |
ไม่บังคับ ระบุว่าควรคำนวณเส้นทางตามเวลาออกเดินทาง ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น |
arrivalTime |
ไม่บังคับ ระบุว่าควรคำนวณเส้นทางตามเวลาที่มาถึง ใช้ RFC 3339 โดยเอาต์พุตที่สร้างขึ้นจะได้รับการแปลงเป็นรูปแบบ Z เสมอ และใช้ตัวเลขเศษส่วน 0, 3, 6 หรือ 9 หลัก นอกจากนี้ ระบบยังยอมรับออฟเซ็ตอื่นๆ นอกเหนือจาก "Z" ด้วย เช่น |
การประทับเวลา
| การแสดง JSON |
|---|
{ "seconds": string, "nanos": integer } |
| ช่อง | |
|---|---|
seconds |
แสดงวินาทีของเวลา UTC นับตั้งแต่ Unix Epoch 1970-01-01T00:00:00Z ต้องอยู่ระหว่าง -62135596800 ถึง 253402300799 (ซึ่งสอดคล้องกับ 0001-01-01T00:00:00Z ถึง 9999-12-31T23:59:59Z) |
nanos |
เศษส่วนของวินาทีที่ไม่เป็นค่าลบที่ความละเอียดระดับนาโนวินาที ช่องนี้เป็นส่วนนาโนวินาทีของระยะเวลา ไม่ใช่ทางเลือกแทนวินาที ค่าที่สองที่เป็นลบซึ่งมีเศษส่วนยังคงต้องมีค่านาโนที่ไม่เป็นลบซึ่งนับเวลาไปข้างหน้า ต้องอยู่ระหว่าง 0 ถึง 999,999,999 |
จุดบอกทาง
| การแสดง JSON |
|---|
{ // Union field |
| ช่อง | |
|---|---|
ฟิลด์ Union location_type วิธีต่างๆ ในการแสดงสถานที่ตั้ง location_type ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
latLng |
จุดที่ระบุโดยใช้พิกัดทางภูมิศาสตร์ |
placeId |
รหัสสถานที่ที่เชื่อมโยงกับจุดอ้างอิง |
address |
ที่อยู่ที่มนุษย์อ่านได้หรือ Plus Code ดูรายละเอียดได้ที่ https://plus.codes |
LatLng
| การแสดง JSON |
|---|
{ "latitude": number, "longitude": number } |
| ช่อง | |
|---|---|
latitude |
ละติจูดในหน่วยองศา โดยต้องอยู่ในช่วง [-90.0, +90.0] |
longitude |
ลองจิจูดเป็นองศา โดยต้องอยู่ในช่วง [-180.0, +180.0] |
RouteTravelMode
ชุดค่าที่ใช้ระบุโหมดการเดินทาง
| Enum | |
|---|---|
ROUTE_TRAVEL_MODE_UNSPECIFIED |
ไม่ได้ระบุโหมดการเดินทาง ค่าเริ่มต้นคือ DRIVE |
DRIVE |
เดินทางโดยรถยนต์นั่งส่วนบุคคล |
WALK |
เดินทางด้วยการเดิน หมายเหตุ: เส้นทางWALKอยู่ในเวอร์ชันเบต้า และบางครั้งอาจไม่มีทางเท้าหรือทางเดินเท้าที่ชัดเจน คุณต้องแสดงคำเตือนนี้แก่ผู้ใช้สำหรับการเดินทั้งหมดที่แสดงในแอป |
BICYCLE |
เดินทางโดยจักรยาน |
TRANSIT |
เดินทางโดยขนส่งสาธารณะ |
RoutingPreference
ชุดค่าที่ระบุปัจจัยที่ต้องพิจารณาเมื่อคำนวณเส้นทาง
| Enum | |
|---|---|
ROUTING_PREFERENCE_UNSPECIFIED |
ไม่ได้ระบุค่ากำหนดการกำหนดเส้นทาง ค่าเริ่มต้นคือ ROUTING_PREFERENCE_TRAFFIC_UNAWARE |
ROUTING_PREFERENCE_TRAFFIC_UNAWARE |
คำนวณเส้นทางโดยไม่พิจารณาสภาพการจราจรแบบเรียลไทม์ เหมาะสำหรับกรณีที่สภาพการจราจรไม่สำคัญหรือไม่เกี่ยวข้อง การใช้ค่านี้จะทำให้เกิดเวลาในการตอบสนองต่ำที่สุด |
ROUTING_PREFERENCE_TRAFFIC_AWARE_OPTIMAL |
คำนวณเส้นทางโดยพิจารณาสภาพการจราจรแบบเรียลไทม์ (หากมีข้อมูลการจราจร) สำหรับ ค่านี้จะทริกเกอร์ระดับ Pro และทำให้มีค่าใช้จ่ายที่เรียกเก็บและเวลาในการตอบสนองสูงขึ้น ฟีเจอร์นี้พร้อมให้บริการแก่ลูกค้าที่อยู่ในรายการที่อนุญาตเท่านั้น หากไม่อยู่ในรายการที่อนุญาต คำขอจะกลับไปเป็น |
สคีมาเอาต์พุต
ComputeRoutesResponse
ComputeRoutesResponse
| การแสดง JSON |
|---|
{
"routes": [
{
object ( |
| ช่อง | |
|---|---|
routes[] |
มีเส้นทางระหว่างต้นทางและปลายทางที่ขอ โดยเรียงลำดับจากเส้นทางที่แนะนำมากที่สุดไปจนถึงเส้นทางที่แนะนำน้อยที่สุด ระบบจะแสดงผลเส้นทางเดียวเท่านั้น เว้นแต่จะตั้งค่า |
เส้นทาง
| การแสดง JSON |
|---|
{
"distanceMeters": integer,
"duration": string,
"attribution": {
object ( |
| ช่อง | |
|---|---|
distanceMeters |
ระยะทางการเดินทางของเส้นทางเป็นเมตร |
duration |
ระยะเวลาที่ต้องใช้ในการเดินทางตามเส้นทาง ระยะเวลาเป็นวินาทีที่มีเศษส่วนไม่เกิน 9 หลัก โดยลงท้ายด้วย " |
attribution |
การระบุแหล่งที่มาที่จำเป็นต้องแสดงพร้อมกับเส้นทาง |
encodedPolyline |
เส้นประกอบที่เข้ารหัสของเส้นทาง ดู https://developers.google.com/maps/documentation/utilities/polylinealgorithm |
retrievalToken |
โทเค็นที่ใช้ดึงข้อมูลเส้นทางที่เฉพาะเจาะจงนี้ในเครื่องมือดาวน์สตรีม เช่น SearchAlongRoute ใช้ได้ 10 นาที |
ระยะเวลา
| การแสดง JSON |
|---|
{ "seconds": string, "nanos": integer } |
| ช่อง | |
|---|---|
seconds |
วินาทีที่ลงชื่อของช่วงเวลา ต้องอยู่ระหว่าง -315,576,000,000 ถึง +315,576,000,000 หมายเหตุ: ขอบเขตเหล่านี้คำนวณจาก 60 วินาที/นาที * 60 นาที/ชม. * 24 ชม./วัน * 365.25 วัน/ปี * 10,000 ปี |
nanos |
เศษส่วนของวินาทีที่มีเครื่องหมายที่ความละเอียดระดับนาโนวินาทีของช่วงเวลา ระยะเวลาที่น้อยกว่า 1 วินาทีจะแสดงด้วยช่อง |
การระบุแหล่งที่มา
| การแสดง JSON |
|---|
{ "title": string, "url": string } |
| ช่อง | |
|---|---|
title |
ชื่อที่จะแสดงสำหรับการระบุแหล่งที่มา |
url |
URL ที่จะลิงก์ไปเพื่อระบุแหล่งที่มา |
คำอธิบายประกอบเครื่องมือ
ระบบจะส่งคำอธิบายประกอบเครื่องมือไปยังไคลเอ็นต์ MCP เพื่ออธิบายความเสี่ยงพื้นฐานของเครื่องมือหนึ่งๆ ไคลเอ็นต์ส่วนใหญ่จะถือว่าคำแนะนำเหล่านี้ไม่น่าเชื่อถือ แต่สามารถใช้เพื่อตัดสินใจว่าจะส่งข้อความแจ้งยืนยันไปยังผู้ใช้เมื่อใด
นอกจากสตริงชื่อแล้ว ยังมีการกำหนดคำแนะนำบูลีนต่อไปนี้ด้วย
readOnlyHint: หากเป็นจริง เครื่องมือจะไม่แก้ไขสภาพแวดล้อมของตนเอง ค่าเริ่มต้น: falsedestructiveHint: หากเป็น "จริง" เครื่องมือจะดำเนินการที่ทำลายล้างได้ หากเป็นเท็จ เครื่องมือจะดำเนินการได้เฉพาะการดำเนินการแบบเพิ่มเท่านั้น ค่าเริ่มต้น: trueidempotentHint: หากเป็นจริง การเรียกใช้เครื่องมือซ้ำๆ ด้วยอาร์กิวเมนต์เดียวกันจะไม่มีผลเพิ่มเติมต่อสภาพแวดล้อม ค่าเริ่มต้น: falseopenWorldHint: หากเป็นจริง เครื่องมือจะโต้ตอบกับ "โอเพนเวิลด์" ของเอนทิตีภายนอกได้ หากเป็นเท็จ เครื่องมือจะโต้ตอบได้เฉพาะกับเอนทิตีภายในเท่านั้น ตัวอย่างเช่น เครื่องมือค้นเว็บจะเป็นแบบโอเพนเวิลด์ ส่วนเครื่องมือความทรงจำจะไม่ใช่แบบโอเพนเวิลด์
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ✅ | Open World Hint: ❌