Maps Tools Resolution API มีปลายทางการประมวลผลแบบกลุ่มเพื่อแปลงชื่อสถานที่และ URL เป็นรหัสสถานที่ของ Google Maps
การเข้าถึงและการตรวจสอบสิทธิ์ API
วิธีการตรวจสอบสิทธิ์
API รองรับทั้งข้อมูลเข้าสู่ระบบคีย์ API และ OAuth 2.0 ดังนี้
1. คีย์ API
คุณสามารถตรวจสอบสิทธิ์คำขอได้โดยการต่อท้ายคีย์ API ของ Google Maps Platform ที่ถูกต้อง
ไปยัง URL ของคำขอหรือในส่วนหัว X-Goog-Api-Key
https://mapstools.googleapis.com/v1alpha:resolveNames?key=YOUR_API_KEY
2. ขอบเขต OAuth 2.0
หากใช้การให้สิทธิ์ OAuth ระบบจะรองรับขอบเขตต่อไปนี้
https://www.googleapis.com/auth/maps-platform.mapstools(แนะนำ)
คำขอการตรวจสอบและความถูกต้อง
ระบบจะตรวจสอบคำขอแบบกลุ่มอย่างเข้มงวดเพื่อป้องกันไม่ให้มีการโหลดมากเกินไปและรับประกันเวลาในการตอบสนองที่รวดเร็ว
- ขีดจำกัดขนาดกลุ่ม: API ทั้ง 2 รายการอนุญาตให้มีรายการสูงสุด 20 รายการต่อคำขอ
- ข้อกำหนดของ ResolveNames
- รายการคำค้นหาแต่ละรายการต้องระบุพารามิเตอร์ข้อความที่ไม่ว่างเปล่า
- คำค้นหาต้องแสดงชื่อหรือที่อยู่ที่เฉพาะเจาะจง (เช่น "Googleplex, Mountain View, CA", "หอไอเฟล, ปารีส")
- การค้นหาหมวดหมู่ทั่วไป (เช่น "ร้านอาหารในนิวยอร์ก") หรือ ชื่อเชนทั่วไปที่ไม่มีสถานที่ตั้ง (เช่น "สตาร์บัคส์") ไม่รองรับและอาจไม่สามารถระบุได้
- ข้อกำหนดของ ResolveMapsUrls
- URL แต่ละรายการต้องเป็น URL ของ Google Maps ที่ถูกต้องตามโครงสร้าง
- รูปแบบที่รองรับมีดังนี้
- URL ของสถานที่มาตรฐาน:
https://www.google.com/maps/place/... - URL แบบย่อ:
https://maps.app.goo.gl/...
- URL ของสถานที่มาตรฐาน:
- URL ของ Maps ทั่วไปที่อิงตามการค้นหา (เช่น
https://maps.google.com/?q=restaurant) และ URL ที่ไม่ได้ชี้ไปยัง สถานที่ที่ไม่ซ้ำกันเพียงแห่งเดียวไม่รองรับ
การจัดการข้อผิดพลาดบางส่วน
API ทั้ง 2 รายการออกแบบมาให้เป็นเครื่องมือประมวลผลแบบกลุ่ม หากรายการบางรายการในกลุ่มไม่สามารถ แก้ไขได้ คำขอโดยรวมจะไม่ล้มเหลวพร้อมข้อผิดพลาดระดับบนสุด แต่ API จะแสดงการตอบกลับสำเร็จบางส่วนแทน
วิธีตีความคำตอบ
- การจัดแนวแบบ 1:1 ที่รับประกัน: ผลลัพธ์ที่ส่งคืน (สำหรับ
ResolveNames) หรือรายการเอนทิตี (สำหรับResolveMapsUrls) จะแมปกับรายการอินพุตแบบ 1:1 - องค์ประกอบว่างสำหรับความล้มเหลว: หากรายการที่ดัชนี
iแก้ไขไม่สำเร็จ รายการผลลัพธ์จะมีออบเจ็กต์ว่าง{}ที่ดัชนีi - แผนที่ failedRequests: การตอบกลับมีแผนที่
failedRequests- คีย์คือดัชนีที่อิงตาม 0 ของรายการที่ไม่สำเร็จ (แสดงเป็นสตริงใน JSON)
- value คือออบเจ็กต์
google.rpc.Statusที่มีรหัสข้อผิดพลาดที่เฉพาะเจาะจง (จากสถานะ gRPC/HTTP มาตรฐาน) และข้อความโดยละเอียดที่อธิบายสาเหตุที่ทำให้เกิดข้อผิดพลาด
ข้อผิดพลาดระดับบนสุด
ข้อผิดพลาด HTTP ระดับบนสุด (เช่น 400 Bad Request) จะแสดงก็ต่อเมื่อคำขอไม่ผ่านการตรวจสอบ (เช่น เมื่อส่งสินค้ามากกว่า 20 รายการ หรือไม่มี
ฟิลด์ที่จำเป็น)
ข้อกำหนดของ API และตัวอย่าง Curl
1. ResolveNames API
วิธีการ: POST
https://mapstools.googleapis.com/v1alpha:resolveNames
รูปแบบเนื้อหาคำขอ
{
"queries": [
{ "text": "string" }
],
"locationBias": {
"viewport": {
"low": { "latitude": number, "longitude": number },
"high": { "latitude": number, "longitude": number }
}
},
"regionCode": "string"
}
queries(ต้องระบุ): รายการคำค้นหาที่ทำซ้ำเพื่อแก้ไข (สูงสุด 20 รายการ)locationBias(ไม่บังคับ): กรอบล้อมรอบวิวพอร์ตเพื่อให้น้ำหนักพิเศษกับผลลัพธ์ในภูมิภาคท้องถิ่นregionCode(ไม่บังคับ): รหัสประเทศ CLDR (เช่น "US", "FR") เพื่อให้ผลลัพธ์มีความเอนเอียง
ตัวอย่าง Curl: การแก้ปัญหาสำเร็จ
การค้นหานี้จะแสดงผล "Googleplex" และ "หอไอเฟล"
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"queries": [
{ "text": "Googleplex, Mountain View, CA" },
{ "text": "Eiffel Tower, Paris" }
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveNames?key=KEY"
การตอบกลับ JSON
{
"results": [
{
"entity": {
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
},
"confidence": "HIGH"
},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
]
}
ตัวอย่าง Curl: ผลลัพธ์แบบผสม (ล้มเหลวบางส่วน)
ในตัวอย่างนี้ รายการแรกเป็นข้อความขยะที่แก้ไขไม่ได้ และรายการที่สอง เป็นสถานที่ที่ถูกต้อง
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"queries": [
{ "text": "This is not a real place name at all 123456789" },
{ "text": "Eiffel Tower, Paris" }
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveNames?key=KEY"
การตอบกลับ JSON
{
"results": [
{},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
],
"failedRequests": {
"0": {
"code": 5,
"message": "Place not found."
}
}
}
2. ResolveMapsUrls API
วิธีการ: POST
https://mapstools.googleapis.com/v1alpha:resolveMapsUrls
รูปแบบเนื้อหาคำขอ
{
"urls": [
"string"
]
}
urls(ต้องระบุ): รายการสตริง URL ของ Google Maps ที่ทำซ้ำเพื่อแก้ไข (สูงสุด 20 รายการ)
ตัวอย่าง Curl: การแก้ปัญหาสำเร็จ
การแก้ปัญหาลิงก์สถานที่ใน Google Maps มาตรฐาน
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba024255ad8f:0x6ca26666619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6"
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
การตอบกลับ JSON
{
"entities": [
{
"place": "places/ChIJj61VQgK6j4AR4GeTYWZmomw"
}
]
}
ตัวอย่าง Curl: ผลลัพธ์แบบผสม (ล้มเหลวบางส่วน)
การแก้ไข URL ของสถานที่ที่ถูกต้อง 1 รายการและ URL ที่มีรูปแบบไม่ถูกต้อง/ไม่รองรับ 1 รายการ
curl -X POST \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0862515,17z/data=!3m1!4b1!4m6!3m5!1s0x808fba024255ad8f:0x6ca26666619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6",
"https://www.google.com/not-a-place"
]
}' \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
การตอบกลับ JSON
{
"entities": [
{
"place": "places/ChIJj61VQgK6j4AR4GeTYWZmomw"
},
{}
],
"failedRequests": {
"1": {
"code": 3,
"message": "Invalid URL."
}
}
}
ตัวอย่าง Curl: การตรวจสอบไม่สำเร็จ
พยายามส่ง URL มากกว่า 20 รายการในคำขอเดียว
python3 -c 'import json; print(json.dumps({"urls": ["https://www.google.com/maps/place/Googleplex"] * 21}))' | \
curl -X POST \
-H "Content-Type: application/json" \
-d @- \
"https://mapstools.googleapis.com/v1alpha:resolveMapsUrls?key=KEY"
การตอบกลับ JSON
{
"error": {
"code": 400,
"message": "Request contains more than 20 URLs.",
"status": "INVALID_ARGUMENT"
}
}