เอกสารนี้เป็นการปรับปรุงบทความเก่า ที่ใช้ GMP API เวอร์ชันก่อนหน้า เนื้อหานี้ได้รับการอัปเดตเป็น Places API เวอร์ชันใหม่ที่เปิดตัวในปี 2023-24 และ Routes API ที่เปิดตัวในปี 2023
โดยปกติแล้ว เมื่อผู้ใช้ขับรถไปยังจุดที่น่าสนใจ (POI) ผู้ใช้จะต้อง ใช้การนำทางไปยังสถานที่ใกล้เคียง เช่น ลานจอดรถหรือ จุดเข้าถึง ลองนึกถึงคนขับที่ต้องไปสนามบินหรือห้างสรรพสินค้า เมื่อไปสนามบิน คนขับจะพยายามไปที่อาคารผู้โดยสารหรือ จุดส่งผู้โดยสารแทนที่จะเป็นใจกลางของบริเวณสนามบิน ในทำนองเดียวกัน ลานจอดรถที่อยู่ติดกับศูนย์การค้าอาจเป็นตัวเลือกที่ดีกว่ามากสำหรับผู้ใช้ที่มีรถยนต์ ในกรณีนี้ เมื่อพัฒนาแอปหรือบริการเพื่อนำทางผู้ขับขี่ ให้ค้นหาตำแหน่งที่ผู้ขับขี่กำลังจะไปก่อน แล้วเสนอจุดหมายปลายทางเพิ่มเติมที่อยู่ใกล้ตำแหน่งนั้นให้ผู้ขับขี่ แนวทางนี้ช่วยให้คุณให้บริการลูกค้าได้ดียิ่งขึ้นและแสดงให้เห็นว่าคุณให้ความสำคัญกับเวลาของลูกค้า ด้วยความพยายามในการพัฒนาที่เล็กแต่ชาญฉลาดซึ่งใช้ประโยชน์จากข้อมูลตำแหน่งที่ Google Maps Platform มอบให้
เราจะแสดงวิธีใช้ Places API ใหม่และ Routes API ตามลำดับหรือร่วมกันเพื่อระบุตำแหน่งที่เหมาะสมในการจอดรถใกล้กับจุดหมาย โซลูชันนี้มีจุดมุ่งหมายเพื่อขจัดความไม่แน่นอนและการโต้ตอบหลายครั้ง เพื่อค้นหาที่จอดรถขณะขับรถเมื่อใกล้ถึงจุดหมายปลายทาง ดูตัวอย่าง 2 กรณีที่แสดงให้เห็นถึงวิธีนำกรณีเหล่านี้ไปใช้โดยละเอียด
ตัวอย่างที่ 1 - สถานที่ท่องเที่ยวที่ไม่มีลานจอดรถ
เลือกสถานที่ที่ไม่ได้เชื่อมต่อกับริมถนนโดยตรงเพื่อให้ต้องดึงข้อมูลเส้นทางแยกต่างหาก โดยจุดหมายคือ Notre Dame ในปารีส และจุดเริ่มต้นคือสถานีรถไฟ Gare de l'Est (48.87697775149635, 2.3592247806755564)
คนขับจะออกจากสถานีที่อยู่ทางเหนือของน็อทร์-ดามประมาณ 16 นาที Notre Dame เป็นสถานที่ท่องเที่ยวที่มีชื่อเสียงบนเกาะซึ่งมีสะพานเชื่อมถึง ถนนบางสายเป็นแบบทางเดียว และไม่มีที่จอดรถขนาดใหญ่ในบริเวณใกล้เคียง ดังนั้นการนำทางไปยังสถานที่นี้จึงเป็นความท้าทายที่น่าสนใจ
1. คำขอ Places API
คำขอ Places API ตัวอย่างนี้ใช้การค้นหาข้อความเพื่อค้นหา Notre Dame ดูรายละเอียดได้ที่ เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ "$APIKEY" ในตัวอย่างเหล่านี้คือคีย์ API ที่คุณมีสำหรับ API สถานที่และเส้นทางของ Google Maps Platform ที่เปิดใช้ใน Google Cloud Console ดูคำอธิบายโดยละเอียดเพิ่มเติมได้ในเอกสารประกอบสำหรับการเริ่มต้นใช้งาน Google Maps Platform
คำขอ Places API ใหม่มีรูปแบบใหม่ ฟิลด์การตอบกลับจะไม่ คงที่อีกต่อไป และในฐานะนักพัฒนาแอป คุณต้องกำหนดฟิลด์มาสก์ในส่วนหัว การใช้ fieldmask มีคำจำกัดความใน เอกสารประกอบ
curl -X POST --data @notre_dame.json \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: places.id,places.displayName,places.formattedAddress,places.location' \
'https://places.googleapis.com/v1/places:searchText'
เมื่อมีเนื้อหา "notre_date.json" สำหรับพารามิเตอร์การค้นหา ให้ทำดังนี้
{
"textQuery": "Notre Dame, Paris",
"languageCode": "en"
}
การตอบกลับคำขอข้างต้นจะให้พิกัดละติจูดและลองจิจูดต่อไปนี้
{
"places": [
{
"id": "ChIJATr1n-Fx5kcRjQb6q6cdQDY",
"formattedAddress": "6 Parvis Notre-Dame - Pl. Jean-Paul II, 75004 Paris, France",
"location": {
"latitude": 48.852968200000007,
"longitude": 2.3499021
},
"displayName": {
"text": "Cathédrale Notre-Dame de Paris",
"languageCode": "en"
}
}
]
}
คุณจะเห็นว่าพิกัดดังกล่าวชี้ไปยังน็อทร์-ดามจริงๆ
![]() |
![]() |
ในฐานะนักพัฒนาแอปหรือผู้ให้บริการ คุณควรแจ้งให้คนขับทราบโดยอัตโนมัติว่า "กำลังมองหาที่จอดรถใกล้กับนอเทรอดามใช่ไหม" หรือหากคนขับใช้รถยนต์ไฟฟ้า คุณอาจต้องการค้นหาสถานีชาร์จ ประสบการณ์ของผู้ใช้จะแตกต่างกันไปตามอุปกรณ์และหน้าจอ แต่ข้อความในกล่องโต้ตอบที่หายไปหลังจากผ่านไปครู่หนึ่งอาจเป็นตัวเลือกที่ควรพิจารณาในกรณีนี้ หากต้องการค้นหาที่จอดรถใกล้นอเทรอดาม ให้ค้นหาใกล้เคียงใน Places API โดยใช้ ประเภท "parking" และ "electric_vehicle_charging_station" ที่มีรัศมี 500 เมตร ตัวอย่างต่อไปนี้จะทำให้ผลการค้นหาเอนเอียงไปยังพื้นที่จอดรถภายใน 500 เมตรจากนอเทรอดาม
curl -X POST -d '{
"includedTypes": ["parking", "electric_vehicle_charging_station"],
"maxResultCount": 10,
"rankPreference": "DISTANCE",
"locationRestriction": {
"circle": {
"center": {
"latitude": 48.852968200000007,
"longitude": 2.3499021},
"radius": 500.0
}
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H "X-Goog-FieldMask: places.displayName,places.location" \
https://places.googleapis.com/v1/places:searchNearby
ผลลัพธ์แรกคือสถานีชาร์จที่ 48.854981, 2.350629 แต่ผลลัพธ์ของคุณอาจแตกต่างออกไปเมื่อคุณเรียกใช้ตัวอย่างนี้ ใช้ตำแหน่งนี้ในส่วนถัดไป ซึ่งเราจะส่งคำขอ Routes API
2. คำขอ Routes API
หากต้องการค้นหาเส้นทางจากสถานีไปยังสถานีชาร์จใกล้กับนอเทรอดาม คุณต้องส่งคำขอ Routes API เพียงตั้งค่าพารามิเตอร์ต้นทางและปลายทาง ดูตัวเลือกเพิ่มเติมได้ที่เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 48.87697775149635,
"longitude": 2.3592247806755564
}
}
},
"destination":{
"location":{
"latLng":{
"latitude": 48.854981,
"longitude": 2.350629
}
}
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"routeModifiers": {
"avoidTolls": false,
"avoidHighways": false,
"avoidFerries": false
},
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
โดยปกติแล้วการตอบกลับของ Routes API จะมีคำแนะนำเส้นทางหลายรายการ หากต้องการรวมข้อมูลเส้นทางไว้ในการตอบกลับ ให้กำหนด "routes.legs" ใน fieldmask แต่ละเส้นทางประกอบด้วย "ขา" หลายขา และแต่ละขาประกอบด้วย "ขั้นตอน" หลายขั้นตอนที่แสดงระยะทางและพิกัดการเดินทาง หากต้องการค้นหาพิกัดสุดท้ายที่เข้าถึงได้ด้วยรถยนต์ ให้ใช้ฟิลด์ "endLocation" ของขั้นตอนสุดท้ายของช่วงสุดท้ายในเส้นทางที่คุณเลือก "latitude": 48.854937299999996, "longitude": 2.3505841999999997
แม้ว่าสถานที่นี้อาจดูเหมือนไม่ใช่ตัวเลือกแรก แต่เมื่อดูแผนที่ หรือ Google Street View คุณจะพบว่าสถานที่นี้อยู่ห่างจากนอเทรอดามโดยใช้เวลาเดินเพียงไม่นาน ประมาณ 6-7 นาที
เส้นทางเดินจากจุดจอดรถของสถานีชาร์จไปยังน็อทร์-ดาม
สรุปสำหรับตัวอย่างที่ 1
ดังที่เห็น การค้นหาพื้นที่จอดรถต้องใช้การเรียก API เพียงไม่กี่ครั้ง และแสดงคำแนะนำต่อผู้ขับ ซึ่งจะช่วยประหยัดเวลาให้ผู้ใช้ เนื่องจากไม่ต้องขับรถไปตามถนนวันเวย์หรือพยายามหาสถานที่จอดรถในแหล่งท่องเที่ยวที่พลุกพล่าน โดยสรุป เราได้ดำเนินการคำขอ API ดังนี้
- คำขอค้นหาข้อความ Places API เพื่อค้นหาพิกัดของนอเทรอดาม
- การค้นหา Places API ที่อยู่ใกล้เคียงเพื่อค้นหาพื้นที่จอดรถที่มีสถานีชาร์จรถยนต์ไฟฟ้าภายใน 500 เมตรจากพิกัดเหล่านั้น
- คำขอ Routes API เพื่อค้นหาเส้นทางไปยังสถานีชาร์จ
ตัวอย่างที่ 2 - การนำทางไปยังอาคารผู้โดยสารในสนามบินขนาดใหญ่
ลองดูอีกตัวอย่างหนึ่งที่คนขับพยายามไปถึงพื้นที่ขนาดใหญ่ที่มีสถานที่หลายแห่ง จุดที่น่าสนใจ หรือจุดส่งที่อาจเกิดขึ้น คนขับกำลังออกจาก สนามกีฬาเวมบลีย์ สหราชอาณาจักร (51.557263604707224, -0.2794575145680608) และพยายาม ไปที่อาคารผู้โดยสาร 5 ของสนามบินลอนดอนฮีทโธรว์
ข้อดีของฟีเจอร์เติมข้อความอัตโนมัติของ Places API ใหม่คือความสามารถในการกำหนดประเภทหลักเป็นเกณฑ์การค้นหาร่วมกับ API ที่คาดคะเนสถานที่ย่อยเป็นผลการค้นหาที่เป็นไปได้ ในกรณีนี้ หมายความว่าการค้นหา สนามบินและที่จอดรถจะแสดงอาคารผู้โดยสารหรือลานจอดรถด้วย ดูรายการประเภททั้งหมด ที่จะรวมหรือยกเว้นได้ในเอกสารประกอบ
curl -X POST -d '{
"input": "Heathrow",
"includedPrimaryTypes": ["airport", "parking"]
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
https://places.googleapis.com/v1/places:autocomplete
คําค้นหาข้างต้นจะแสดงรายการอาคารผู้โดยสารและจุดส่งทีละรายการ ที่อาคารผู้โดยสารเหล่านั้น จากรายการผลการค้นหา เราจะเห็น "London Heathrow Airport Terminal 5" และรหัสสถานที่ของอาคารผู้โดยสารดังกล่าว
"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",
การใช้พารามิเตอร์ "placeId" จะช่วยให้เราบอก Routes API ได้ว่าเรากำลังพยายาม ไปถึงสถานที่หนึ่งๆ ไม่ใช่พิกัดใดๆ
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 51.557263604707224,
"longitude": -0.2794575145680608
}
}
},
"destination":{
"placeId": "ChIJo21hnPxxdkgRksRL0KQRWII"
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
อีกครั้งเช่นเดียวกับในตัวอย่างก่อนหน้า การอ่านขั้นตอนทั้งหมดในคำตอบ JSON จะทำให้คุณพบส่วนสุดท้ายของเส้นทางและพิกัดละติจูดและลองจิจูดของจุดสิ้นสุด (51.4714348, "longitude": -0.48967890000000003)
สรุปสำหรับตัวอย่างที่ 2
เช่นเดียวกับในตัวอย่างก่อนหน้า ความพยายามในการพัฒนาเพื่อให้คำแนะนำที่ดีขึ้นแก่ผู้ขับขี่นั้นมีน้อยมาก และสามารถวัดผลประโยชน์ในด้านเวลาที่ประหยัดได้สำหรับผู้ขับขี่ เราได้ดำเนินการตามคำขอต่อไปนี้
- คำขอการเติมข้อความอัตโนมัติของ Places API (ใหม่) เพื่อค้นหาอาคารผู้โดยสาร 5 ของสนามบินฮีทโธรว์
- คำขอ Routes API เพื่อรับเส้นทางจากเวมบลีย์ไปยังเทอร์มินัล 5
ตัวอย่างนี้เป็นเพียงส่วนหนึ่งของฟีเจอร์ใหม่ๆ ของ Places API ดูประเภทสถานที่ใหม่บางส่วน เช่น แถบลงจอดและสนามบินนานาชาติ
บทสรุป
ดังที่เห็นได้ว่า ความพยายามในการพัฒนาที่จำเป็นต่อการให้บริการระดับพรีเมียมแก่ ลูกค้าที่เดินทางโดยรถยนต์นั้นค่อนข้างน้อย และคุณสามารถแสดงให้เห็นว่าคุณ คำนึงถึงความต้องการของลูกค้าอย่างไร
เพื่อวัตถุประสงค์ในการพัฒนา คุณสามารถใช้ไลบรารีและเครื่องมือต่างๆ ที่พร้อมใช้งาน เพื่อช่วยสร้างบริการสำหรับลูกค้า ดูที่เก็บ GitHub สำหรับ Google Maps Platform ที่เราเปิดให้ใช้งานแก่สาธารณะ
การดำเนินการถัดไป
การเริ่มต้นใช้งาน GMP : https://developers.google.com/maps/get-started
อ่านเพิ่มเติมที่แนะนำ
เอกสารประกอบการเติมข้อความอัตโนมัติของ Places API (ใหม่) : https://developers.google.com/maps/documentation/places/web-service/place-autocomplete
เอกสารประกอบ Routes API : https://developers.google.com/maps/documentation/routes
ผู้ร่วมให้ข้อมูล
ผู้เขียนหลัก: Mikko Toivanen | วิศวกรโซลูชัน Google Maps Platform