Maps Tools Resolution API מספק נקודות קצה לעיבוד ברצף (batch processing) כדי לפתור שמות של מיקומים וכתובות URL למזהי מקומות במפות Google.
גישה ל-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 אפשר לשלוח עד 20 פריטים בכל בקשה.
- דרישות ל-ResolveNames:
- בכל פריט queries צריך לציין פרמטר text לא ריק.
- השאילתות צריכות לייצג שם או כתובת של מקום ספציפי (לדוגמה, 'Googleplex, Mountain View, CA', 'Eiffel Tower, Paris').
- חיפושים כלליים לפי קטגוריה (למשל, 'מסעדות בניו יורק') או שמות רשתות כלליים ללא מיקום (למשל, 'סטארבקס') לא נתמכים, ויכול להיות שהם לא יניבו תוצאות.
- דרישות לשימוש ב-ResolveMapsUrls:
- כל כתובת URL חייבת להיות כתובת URL תקינה מבחינה מבנית של דף במפות Google.
- הפורמטים הנתמכים כוללים:
- כתובת URL רגילה של מקום:
https://www.google.com/maps/place/... - כתובת URL מקוצרת:
https://maps.app.goo.gl/...
- כתובת URL רגילה של מקום:
- לא אפשרי בכתובות URL כלליות של מפות שמבוססות על שאילתות (למשל,
https://maps.google.com/?q=restaurant) ובכתובות URL שלא מפנות למקום ייחודי יחיד.
טיפול בשגיאות חלקיות
שני ממשקי ה-API האלה מיועדים לעיבוד פעולות מקובצות. אם חלק מהפריטים באצווה לא נפתרים, הבקשה הכוללת לא נכשלת עם שגיאה ברמה העליונה. במקום זאת, ה-API מחזיר תגובה מסוג Partial Success (הצלחה חלקית).
איך לפרש את התשובה
- התאמה של 1:1: התוצאות שמוחזרות (עבור
ResolveNames) או רשימות הישויות (עבורResolveMapsUrls) ממופות 1:1 עם רשימת הקלט. - רכיבים ריקים במקרה של כשלים: אם פריט באינדקס
iלא נפתר, רשימת התוצאות תכיל אובייקט ריק{}באינדקסi. - failedRequests Map: התשובה מכילה מפה של
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 לפתרון (עד 20).
דוגמה ל-Curl: פתרון מוצלח
פתרון של קישור רגיל למקום במפות Google.
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 תקינה של מקום וכתובת URL פגומה או לא נתמכת.
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: אימות נכשל
ניסית להעביר יותר מ-20 כתובות URL בבקשה אחת.
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"
}
}