Maps Tools Resolution API הוא חלק מ-Maps Grounding Lite. הוא מספק נקודות קצה (endpoints) באצווה שממירות שמות של מיקומים וכתובות URL של מפות Google למזהי מקומות במפות Google. אתם יכולים להשתמש במזהי המקומות שמוחזרים עם ממשקי API אחרים של Google Maps Platform. כל תשובה כוללת גם קישור ששומר את המקומות שזוהו כרשימה במפות Google.
Resolution API זמין גם כשיטות REST וגם ככלים בשרת Maps Grounding Lite MCP:
| פונקציה | שיטת REST | כלי MCP |
|---|---|---|
| התאמה בין שמות או כתובות של מיקומים לבין מקומות | resolveNames |
resolve_names |
| המרת כתובות URL של מפות Google למקומות | resolveMapsUrls |
resolve_maps_urls |
לפני שמתחילים
כדי להשתמש ב-Resolution API, אתם צריכים פרויקט בענן ב-Google Cloud עם חיוב מופעל ושירות ה-API של Maps Grounding Lite מופעל. הוראות להפעלה מופיעות במאמר הפעלת שירות Maps Grounding Lite בפרויקט ב-Google Cloud.
גישה ל-API ואימות
Resolution API תומך גם במפתח API וגם בפרטי כניסה של OAuth 2.0.
מפתח API
כדי לאמת בקשות, אפשר להעביר מפתח API תקין של Google Maps Platform בכותרת X-Goog-Api-Key או להוסיף אותו לכתובת ה-URL של הבקשה:
https://mapstools.googleapis.com/v1:resolveNames?key=API_KEY
בדוגמאות שבדף הזה, מחליפים את הערך API_KEY במפתח ה-API שלכם.
היקפי ההרשאות של OAuth 2.0
אם אתם משתמשים בהרשאת OAuth, היקף ההרשאות הבא נתמך:
https://www.googleapis.com/auth/maps-platform.mapstools
מכסות שימוש
המכסות הבאות חלות על Resolution API כברירת מחדל:
- ResolveNames: 600 שאילתות לדקה, לכל פרויקט.
- ResolveMapsUrls: 600 שאילתות לדקה, לכל פרויקט.
- גודל אצווה: עד 20 שאילתות או כתובות URL לכל בקשה.
כל בקשה נחשבת כשאילתה אחת, לא משנה כמה פריטים היא מכילה.
תמחור
בקשות אל ResolveNames ואל ResolveMapsUrls מחויבות בחינם (0$) במסגרת המק"ט Places API חיפוש טקסט Essentials (IDs Only). כמו בשאר התכונות של Maps Grounding Lite, לפרויקט צריך להיות חשבון לחיוב.
אימות בקשות ואילוצים
כדי למנוע עומס יתר ולהבטיח זמני תגובה מהירים, בקשות Batch מאומתות באופן קפדני:
- מגבלת גודל האצווה: בשתי השיטות אפשר להוסיף עד 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 כלליות של מפות Google שמבוססות על שאילתות (לדוגמה,
https://maps.google.com/?q=restaurant) ובכתובות URL שלא מפנות למקום ייחודי אחד.
שמירת מקומות שזוהו במפות Google
אם לפחות פריט אחד באצווה נפתר, התשובה כוללת את השדה saveToMapsUrl. זהו קישור יחיד למפות Google שמכיל את כל המקומות שזוהו בהצלחה באצווה. הציגו את הקישור הזה למשתמשים שרוצים לשמור, לשתף או לפתוח את המקומות שנמצאו כרשימה במפות Google.
תמיד צריך להשתמש בקישור שמוחזר על ידי ה-API. אל תיצרו את הקישור בעצמכם. אם אף אחד מהפריטים באצווה לא נפתר, התגובה לא תכלול את saveToMapsUrl.
טיפול בשגיאות חלקיות
שתי השיטות הן מעבדי אצווה. אם חלק מהפריטים באצווה לא נפתרים, הבקשה הכוללת לא נכשלת עם שגיאה ברמה העליונה. במקום זאת, ה-API מחזיר תגובה של הצלחה חלקית, וצריך לבדוק את התגובה כדי לראות אילו פריטים נכשלו.
איך לפרש את התשובה
- התאמה מובטחת של 1:1: הרשימה המוחזרת של
results(עבורResolveNames) או הרשימה שלentities(עבורResolveMapsUrls) ממפה 1:1 עם רשימת הקלט, לפי אינדקס. - רכיבים ריקים במקרה של כשלים: אם הפריט באינדקס
iלא נפתר, רשימת התוצאות מכילה אובייקט ריק{}באינדקסi. - מפת
failedRequests: התשובה מכילה מפתfailedRequests.- המפתח הוא האינדקס מבוסס-האפס של הפריט שנכשל (מיוצג כמחרוזת ב-JSON).
- הערך הוא אובייקט
google.rpc.Statusשמכיל את קוד השגיאה והודעה שמסבירה למה הפריט נכשל.
-
saveToMapsUrlcovers only successes: הקישורsaveToMapsUrlכולל רק את הפריטים שהבעיה שלהם נפתרה. פריטים שנכשלו לא נכללים.
אל תניחו שכל הקבוצה נכשלה בגלל שפריט אחד נכשל. תמיד כדאי לבדוק את failedRequests כדי לראות אילו פריטים לא נפתרו, אם יש כאלה.
שגיאות בכל פריט
בטבלה הבאה מפורטות השגיאות ברמת הפריט שעשויות להופיע ב-failedRequests:
| שיטה | סיבה | קוד | שליחת הודעה |
|---|---|---|---|
ResolveNames |
אי אפשר לזהות מקום לפי השם או הכתובת. | 5 (NOT_FOUND) |
Place not found. |
ResolveMapsUrls |
אי אפשר לפתור את כתובת ה-URL למקום. | 3 (INVALID_ARGUMENT) |
Failed to resolve Maps URL to a place. |
| שתי השיטות | הייתה שגיאה פנימית במהלך פתרון הבעיה. | 13 (INTERNAL) |
Internal server error. Please retry. If the problem persists, please open a support case. https://goo.gle/maps-platform-support |
מנסים שוב רק את הפריטים שנכשלו עם INTERNAL.
כשלים ברמה העליונה
ה-API מחזיר שגיאה ברמה העליונה במקום תגובה חלקית במקרים הבאים:
- בקשה לא תקינה (
400 INVALID_ARGUMENT): הבקשה מכילה יותר מ-20 פריטים, בקשתResolveNamesלא מכילה שאילתות או מכילה שאילתה עם ערךtextריק, או שבקשתResolveMapsUrlsמכילה כתובת URL ריקה או כתובת URL לא תקינה מבחינה תחבירית. אם יש פריט אחד לא תקין, כל הבקשה נכשלת. - שגיאות אימות, הרשאה או מכסה: לדוגמה, מפתח ה-API חסר או לא תקין, או שהבקשה חורגת ממגבלות השימוש.
- שגיאות בחיבור לשרת (
500 INTERNAL): נסו לשלוח שוב את הבקשה.
שימוש ב-Resolution API עם MCP
שרת ה-MCP של Maps Grounding Lite בכתובת https://mapstools.googleapis.com/mcp חושף את Resolution API כשני כלים:
-
resolve_names: ממירה קבוצה של שמות או כתובות של מיקומים למזהי מקומות. -
resolve_maps_urls: פתרון של קבוצת כתובות URL במפות Google למזהי מקומות.
כשמגדירים את ה-LLM כך שישתמש בשרת MCP של Maps Grounding Lite, הכלים האלה זמינים לצד הכלים האחרים של Maps Grounding Lite. הכלים מקבלים את אותם קלטים, אוכפים את אותן מגבלות ומחזירים את אותה תגובה של כישלון חלקי כמו השיטות של REST.
התשובות של הכלי כוללות את השדה save_to_maps_url. תיאורי הכלים מנחים את ה-LLM להציג את הקישור הזה כשהמשתמש רוצה לשמור, לשתף או לפתוח את המקומות שנמצאו כרשימה במפות Google, במקום ליצור קישור בעצמו.
בדוגמה הבאה משתמשים ב-curl כדי להפעיל את הכלי resolve_names ישירות:
curl --location 'https://mapstools.googleapis.com/mcp' \
--header 'content-type: application/json' \
--header 'accept: application/json, text/event-stream' \
--header 'X-Goog-Api-Key: API_KEY' \
--data '{
"method": "tools/call",
"params": {
"name": "resolve_names",
"arguments": {
"queries": [
{ "text": "Googleplex, Mountain View, CA" },
{ "text": "Eiffel Tower, Paris" }
]
}
},
"jsonrpc": "2.0",
"id": 1
}'
כדי להפעיל את resolve_maps_urls, מגדירים את name ל-resolve_maps_urls ומעבירים מערך urls ב-arguments.
מפרט של API בארכיטקטורת REST ודוגמאות ל-curl
ResolveNames
Method: POST
https://mapstools.googleapis.com/v1: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/v1:resolveNames?key=API_KEY"
תגובת JSON
{
"results": [
{
"entity": {
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
},
"confidence": "HIGH"
},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
],
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJj61dQgK6j4AR4GeTYWZsKWw,ChIJLU7jZClu5kcR4PcOOO6p3I0"
}
דוגמה ל-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/v1:resolveNames?key=API_KEY"
תגובת JSON
{
"results": [
{},
{
"entity": {
"place": "places/ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"confidence": "HIGH"
}
],
"failedRequests": {
"0": {
"code": 5,
"message": "Place not found."
}
},
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJLU7jZClu5kcR4PcOOO6p3I0"
}
ResolveMapsUrls
שיטה: POST
https://mapstools.googleapis.com/v1:resolveMapsUrls
פורמט גוף הבקשה
{
"urls": [
"string"
]
}
-
urls(חובה): רשימה חוזרת של מחרוזות של כתובות URL במפות Google שצריך לפתור (עד 20).
דוגמה ל-Curl: פתרון מוצלח
בדוגמה הבאה, כתובת URL רגילה של מקום במפות Google מומרת לכתובת 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!1s0x808fba02425dad8f:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6"
]
}' \
"https://mapstools.googleapis.com/v1:resolveMapsUrls?key=API_KEY"
תגובת JSON
{
"entities": [
{
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
}
],
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJj61dQgK6j4AR4GeTYWZsKWw"
}
דוגמה ל-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!1s0x808fba02425dad8f:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840575!16s%2Fg%2F11c8b0ssp6",
"https://www.google.com/not-a-place"
]
}' \
"https://mapstools.googleapis.com/v1:resolveMapsUrls?key=API_KEY"
תגובת JSON
{
"entities": [
{
"place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
},
{}
],
"failedRequests": {
"1": {
"code": 3,
"message": "Failed to resolve Maps URL to a place."
}
},
"saveToMapsUrl": "https://www.google.com/maps/@?api=1&map_action=shortlist&place_ids=ChIJj61dQgK6j4AR4GeTYWZsKWw"
}
דוגמה ל-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/v1:resolveMapsUrls?key=API_KEY"
תגובת JSON
{
"error": {
"code": 400,
"message": "Request contains more than 20 URLs.",
"status": "INVALID_ARGUMENT"
}
}
שליחת משוב
כדי לדווח על בעיה או לשלוח משוב על Resolution API, אתם יכולים להשתמש ברכיב הציבורי של Issue Tracker ב-Maps Grounding Lite: