השלמה אוטומטית למקומות (מדור ישן) הוא שירות אינטרנט שמחזיר חיזויים של מקומות בתגובה לבקשת HTTP. הבקשה מציינת מחרוזת חיפוש טקסטואלית וגבולות גיאוגרפיים אופציונליים. אפשר להשתמש בשירות כדי לספק פונקציונליות של השלמה אוטומטית לחיפושים גיאוגרפיים שמבוססים על טקסט, על ידי החזרת מקומות כמו עסקים, כתובות ונקודות עניין בזמן שהמשתמש מקליד.
בקשות להשלמה אוטומטית למקומות (גרסה קודמת)
השלמה אוטומטית למקומות (דור קודם) היא חלק מ-Places API, והיא חולקת מפתח API ומכסות עם Places API.
השלמה אוטומטית למקומות (מדור קודם) יכולה להתאים למילים מלאות ולמחרוזות משנה, ולפתור שמות של מקומות, כתובות וקודי Plus. לכן, אפליקציות יכולות לשלוח שאילתות בזמן שהמשתמש מקליד, כדי לספק תחזיות של מקומות תוך כדי התהליך.
צריך להקפיד על פורמט נכון של Plus Codes. כלומר, צריך להחליף את סימן הפלוס ב-%2B ואת הרווחים ב-%20.
- קוד גלובלי הוא קוד אזור בן ארבעה תווים, וקוד מקומי בן שישה תווים או יותר. לדוגמה, הקוד הגלובלי לביטול בריחה מכתובת URL
849VCWC8+R9הוא849VCWC8%2BR9. - קוד מורכב הוא קוד מקומי בן שישה תווים (או יותר) עם מיקום מפורש. לדוגמה, קוד מורכב עם תווי escape בכתובת URL
CWC8+R9 Mountain View, CA, USAהואCWC8%2BR9%20Mountain%20View%20CA%20USA.
התחזיות שמוחזרות נועדו להצגה למשתמש כדי לעזור לו לבחור את המקום הרצוי. כדי לקבל מידע נוסף על כל אחד מהמקומות שמוחזרים, אתם יכולים לשלוח בקשה לפרטי מקום (ממשק API מדור קודם).
בקשה של השלמה אוטומטית למקומות (מדור קודם) היא כתובת URL מסוג HTTP מהצורה הבאה:
https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters
הערך output יכול להיות אחד מהערכים הבאים:
-
json(מומלץ) מציין פלט בפורמט JavaScript Object Notation (JSON) -
xmlמציין שהפלט הוא XML
כדי לשלוח בקשה להשלמה אוטומטית למקומות (גרסה קודמת), צריך להגדיר פרמטרים מסוימים.
כמו בכל כתובת URL, כל הפרמטרים מופרדים באמצעות התו אמפרסנד (&). בהמשך מפורטת רשימת הפרמטרים והערכים האפשריים שלהם.
פרמטרים נדרשים
-
קלט
מחרוזת הטקסט שבה יתבצע החיפוש. שירות ההשלמה האוטומטית למקומות יחזיר התאמות אפשריות על סמך המחרוזת הזו, ויסדר את התוצאות לפי הרלוונטיות המשוערת שלהן.
פרמטרים אופציונליים
-
רכיבים
קבוצה של מקומות שאתם רוצים להגביל את התוצאות אליהם. אפשר להשתמש ברכיבים כדי לסנן לפי עד 5 מדינות. המדינות צריכות להיות מועברות כקוד מדינה בן שני תווים, שתואם לתקן ISO 3166-1 Alpha-2. לדוגמה:
components=country:frיגביל את התוצאות למקומות בצרפת. כדי לציין כמה מדינות, צריך להעביר כמה מסנניםcountry:XXעם התו|'|' כמפריד. לדוגמה:components=country:us|country:pr|country:vi|country:gu|country:mpהתוצאות יוגבלו למקומות בארצות הברית ובטריטוריות המאוגדות שלה.הערה: אם אתם מקבלים תוצאות לא צפויות עם קוד מדינה, ודאו שאתם משתמשים בקוד שכולל את המדינות, הטריטוריות התלויות והאזורים המיוחדים בעלי עניין גיאוגרפי שרציתם לכלול. אפשר למצוא מידע על הקודים בוויקיפדיה: רשימה של קודי מדינה לפי תקן ISO 3166 או בפלטפורמת הגלישה אונליין של ISO. -
language
השפה שבה יוחזרו התוצאות.
- כאן אפשר לעיין ברשימת השפות הנתמכות. Google מעדכנת את השפות הנתמכות לעיתים קרובות, לכן יכול להיות שהרשימה הזו לא מלאה.
-
אם לא מספקים את
language, ה-API מנסה להשתמש בשפה המועדפת שצוינה בכותרתAccept-Language. - הממשק API עושה כמיטב יכולתו כדי לספק כתובת רחוב שקלה לקריאה גם למשתמש וגם לתושבים המקומיים. כדי להשיג את המטרה הזו, הוא מחזיר כתובות רחוב בשפה המקומית, בתעתיק לכתב שניתן לקריאה על ידי המשתמש אם יש צורך, בהתאם לשפה המועדפת. כל שאר הכתובות מוחזרות בשפה המועדפת. כל רכיבי הכתובת מוחזרים באותה שפה, שנבחרת מהרכיב הראשון.
- אם השם לא זמין בשפה המועדפת, ה-API ישתמש בהתאמה הכי קרובה.
- השפה המועדפת משפיעה קצת על קבוצת התוצאות שה-API בוחר להחזיר ועל הסדר שבו הן מוחזרות. כלי להמרת כתובות לקואורדינטות (geocoder) מפרש קיצורים בצורה שונה בהתאם לשפה, כמו קיצורים של סוגי רחובות או מילים נרדפות שעשויות להיות תקפות בשפה אחת אבל לא בשפה אחרת. לדוגמה, utca ו-tér הן מילים נרדפות למילה 'רחוב' בהונגרית.
-
location
הנקודה שסביבה מאחזרים את פרטי המקום. חובה לציין את הערך
latitude,longitude. כשמציינים מיקום, צריך לציין גם את הפרמטרradius. אם לא צויןradius, המערכת תתעלם מהפרמטרlocation.כשמשתמשים ב-Text Search API, יכול להיות שהפרמטר `location` יוחלף אם הפרמטר `query` מכיל מיקום מפורש, כמו `Market in Barcelona`. -
locationbias
העדפת תוצאות באזור מסוים, על ידי ציון רדיוס וקו רוחב/אורך, או שני זוגות של קווי רוחב/אורך שמייצגים את הנקודות של מלבן. אם לא מציינים את הפרמטר הזה, ה-API משתמש בהטיה של כתובת ה-IP כברירת מחדל.
-
הטיה לפי כתובת IP: מנחה את ה-API להשתמש בהטיה לפי כתובת IP. מעבירים את המחרוזת
ipbias(לאפשרות הזו אין פרמטרים נוספים). -
מעגלי: מחרוזת שמציינת את הרדיוס במטרים, וגם קו רוחב/קו אורך במעלות עשרוניות. צריך להשתמש בפורמט הבא:
circle:radius@lat,lng. -
מלבני: מחרוזת שמציינת שני זוגות של קווי רוחב ואורך במעלות עשרוניות, שמייצגים את הנקודות הדרומית/מערבית והצפונית/מזרחית של מלבן. צריך להשתמש בפורמט הבא:
rectangle:south,west|north,east. הערה: ערכים של מזרח/מערב מוגבלים לטווח -180, 180, וערכים של צפון/דרום מוגבלים לטווח -90, 90.
-
הטיה לפי כתובת IP: מנחה את ה-API להשתמש בהטיה לפי כתובת IP. מעבירים את המחרוזת
-
locationrestriction
הגבלת התוצאות לאזור ספציפי, על ידי ציון רדיוס בתוספת קו רוחב/קו אורך, או שני זוגות של קו רוחב/קו אורך שמייצגים את נקודות המלבן.
-
מעגלי: מחרוזת שמציינת את הרדיוס במטרים, בתוספת קו רוחב/קו אורך במעלות עשרוניות. צריך להשתמש בפורמט הבא:
circle:radius@lat,lng. -
מלבני: מחרוזת שמציינת שני זוגות של קווי רוחב/אורך במעלות עשרוניות, שמייצגים את הנקודות הדרומית/מערבית והצפונית/מזרחית של מלבן. צריך להשתמש בפורמט הבא:
rectangle:south,west|north,east. הערה: ערכים של מזרח/מערב מוגבלים לטווח -180, 180, וערכים של צפון/דרום מוגבלים לטווח -90, 90.
-
מעגלי: מחרוזת שמציינת את הרדיוס במטרים, בתוספת קו רוחב/קו אורך במעלות עשרוניות. צריך להשתמש בפורמט הבא:
-
הזחה
המיקום במונח הקלט של התו האחרון שהשירות משתמש בו כדי להתאים תחזיות. לדוגמה, אם הקלט הוא
Googleוההיסט הוא 3, השירות יתאים ל-Goo. המחרוזת שנקבעה על ידי ההיסט מושווית רק למילה הראשונה במונח הקלט. לדוגמה, אם מונח הקלט הואGoogle abcוההיסט הוא 3, השירות ינסה להתאים אותו ל-Goo abc. אם לא מציינים היסט, השירות ישתמש בכל התקופה. באופן כללי, צריך להגדיר את ההיסט למיקום של סמן הטקסט. -
origin
נקודת המוצא שממנה יחושב המרחק בקו ישר אל היעד (מוחזר כ-
distance_meters). אם הערך הזה לא מצוין, המרחק בקו ישר לא יוחזר. חובה לציין את הערךlatitude,longitude. -
רדיוס
הגדרת המרחק (במטרים) שבתוכו יוחזרו תוצאות של מקומות. אפשר להטות את התוצאות לעיגול מסוים על ידי העברת הפרמטרים
locationו-radius. כך שירות Places מקבל הוראה להעדיף להציג תוצאות בתוך המעגל הזה, אבל עדיין יכול להיות שיוצגו תוצאות מחוץ לאזור שהוגדר.הערך של הרדיוס יוגבל אוטומטית לערך מקסימלי בהתאם לסוג החיפוש ולפרמטרים אחרים.
- השלמה אוטומטית: 50,000 מטרים
-
חיפוש בסביבה:
- עם
keywordאוname: 50,000 מטרים -
בלי
keywordאוname-
עד 50,000 מטרים, מותאם באופן דינמי על סמך צפיפות האזור, ללא קשר לפרמטר
rankby. -
כשמשתמשים ב-
rankby=distance, המערכת לא מקבלת את פרמטר הרדיוס, והתוצאה היאINVALID_REQUEST.
-
עד 50,000 מטרים, מותאם באופן דינמי על סמך צפיפות האזור, ללא קשר לפרמטר
- עם
- השלמה אוטומטית של שאילתות: 50,000 מטרים
- חיפוש טקסט: 50,000 מטרים
-
אזור
קוד האזור, שמוגדר כערך ccTLD (דומיין ברמה העליונה) באורך שני תווים. רוב קודי ה-ccTLD זהים לקודי ISO 3166-1, עם כמה יוצאים מן הכלל. לדוגמה, ה-ccTLD של בריטניה הוא uk (.co.uk), אבל קוד ISO 3166-1 שלה הוא gb (טכנית, עבור הישות 'בריטניה וצפון אירלנד').
-
sessiontoken
מחרוזת אקראית שמזהה סשן של השלמה אוטומטית למטרות חיוב.
הסשן מתחיל כשהמשתמש מתחיל להקליד שאילתה, ומסתיים כשהוא בוחר מקום ומתבצעת קריאה ל-Place Details. בכל סשן יכולות להיות כמה שאילתות, ואחריהן בחירה של מקום אחד. מפתחות ה-API שמשמשים לכל בקשה בסשן צריכים להיות שייכים לאותו פרויקט במסוף Google Cloud. אחרי שסשן מסתיים, האסימון כבר לא תקף. האפליקציה צריכה ליצור אסימון חדש לכל סשן. אם הפרמטר
sessiontokenלא מצוין, או אם נעשה שימוש חוזר בטוקן סשן, הסשן יחויב כאילו לא סופק טוקן סשן (כל בקשה תחויב בנפרד).מומלץ לפעול לפי ההנחיות הבאות:
- שימוש בטוקנים לסשן לכל הסשנים של ההשלמה האוטומטית.
- ליצור טוקן חדש לכל סשן. מומלץ להשתמש ב-UUID בגרסה 4.
- מוודאים שמפתחות ה-API שמשמשים לכל הבקשות של השלמה אוטומטית למקומות ו-Place Details בסשן מסוים שייכים לאותו פרויקט ב-מסוף Cloud.
- חשוב להעביר אסימון סשן ייחודי לכל סשן חדש. שימוש באותו טוקן ליותר מסשן אחד יוביל לחיוב נפרד על כל בקשה.
-
strictbounds
הפונקציה מחזירה רק את המקומות שנמצאים בדיוק בתוך האזור שמוגדר על ידי
locationו-radius. זוהי הגבלה, ולא הטיה, כלומר תוצאות מחוץ לאזור הזה לא יוחזרו גם אם הן תואמות לקלט של המשתמש. -
סוגים
כדי להגביל את התוצאות של בקשה להשלמה אוטומטית למקומות לסוג מסוים, מעבירים את הפרמטר
types. הפרמטר הזה מציין סוג או אוסף סוגים, כמו שמופיע בסוגי מקומות. אם לא מציינים כלום, כל הסוגים מוחזרים.למקום יכול להיות רק סוג ראשי אחד מתוך הסוגים שמפורטים בטבלה 1 או בטבלה 2. לדוגמה, מלון שמוגש בו אוכל יכול להיות מוצג רק עם
types=lodgingולא עםtypes=restaurant.בערך של הפרמטר
typesאפשר לציין:-
עד חמישה ערכים מטבלה 1 או מטבלה 2. אם יש כמה ערכים, צריך להפריד ביניהם באמצעות התו
|| (קו אנכי). לדוגמה:types=book_store|cafe -
כל מסנן נתמך בודד בטבלה 3. אי אפשר לערבב בין סוגי אוספים.
הבקשה תידחה ותוצג השגיאה
INVALID_REQUESTאם: -
דוגמאות לשימוש ב-Place Autocomplete (מדור קודם)
בקשה למקומות שמכילים את המחרוזת Amoeba באזור שממורכז בסן פרנסיסקו, קליפורניה:
כתובת URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &types=establishment &location=37.76999%2C-122.44696 &radius=500 &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&key=YOUR_API_KEY'אותה בקשה, עם הגבלה לתוצאות ברדיוס של 500 מטר מהצומת של Ashbury St ו-Haight St, בסן פרנסיסקו:
כתובת URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &types=establishment &location=37.76999%2C-122.44696&radius=500 &strictbounds=true &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&strictbounds=true&key=YOUR_API_KEY'בקשה לכתובות שמכילות את המילה "Vict" עם תוצאות בצרפתית:
כתובת URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &types=geocode &language=fr &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=YOUR_API_KEY'בקשה לערים שמכילות את המילה "Vict" עם תוצאות בפורטוגזית ברזילאית:
כתובת URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &types=(cities) &language=pt_BR&key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=(cities)&language=pt_BR&key=YOUR_API_KEY'שימו לב שצריך להחליף את מפתח ה-API בדוגמאות האלה במפתח שלכם.
תגובה של השלמה אוטומטית למקומות (מדור קודם)
התשובות של השלמה אוטומטית למקומות (הגרסה הקודמת) מוחזרות בפורמט שמצוין בדגל output בנתיב כתובת ה-URL של הבקשה. התוצאות שמוצגות בהמשך הן דוגמה למה שעשוי לחזור משאילתה עם הפרמטרים הבאים:
כתובת URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Paris &types=geocode &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Paris&types=geocode&key=YOUR_API_KEY'JSON
{ "predictions": [ { "description": "Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "reference": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "France", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "France" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TX, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJmysnFgZYSoYRSfPTL2YJuck", "reference": "ChIJmysnFgZYSoYRSfPTL2YJuck", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TX, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TX" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TN, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "reference": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TN, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TN" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, Brant, ON, Canada", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsamfQbVtLIgR-X18G75Hyi0", "reference": "ChIJsamfQbVtLIgR-X18G75Hyi0", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "Brant, ON, Canada", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "Brant" }, { "offset": 14, "value": "ON" }, { "offset": 18, "value": "Canada" }, ], "types": ["neighborhood", "political", "geocode"], }, { "description": "Paris, KY, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "reference": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "KY, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "KY" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, ], "status": "OK", }
XML
<?xml version="1.0" encoding="UTF-8"?> <AutocompletionResponse> <status>OK</status> <prediction> <description>Paris, France</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>France</value> <offset>7</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TX, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJmysnFgZYSoYRSfPTL2YJuck</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TX</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJmysnFgZYSoYRSfPTL2YJuck</place_id> <structured_formatting> <description>Paris</description> <subdescription>TX, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TN, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJ4zHP-Sije4gRBDEsVxunOWg</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TN</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJ4zHP-Sije4gRBDEsVxunOWg</place_id> <structured_formatting> <description>Paris</description> <subdescription>TN, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, Brant, ON, Canada</description> <type>neighborhood</type> <type>political</type> <type>geocode</type> <reference>ChIJsamfQbVtLIgR-X18G75Hyi0</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>Brant</value> <offset>7</offset> </term> <term> <value>ON</value> <offset>14</offset> </term> <term> <value>Canada</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsamfQbVtLIgR-X18G75Hyi0</place_id> <structured_formatting> <description>Paris</description> <subdescription>Brant, ON, Canada</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, KY, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJsU7_xMfKQ4gReI89RJn0-RQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>KY</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsU7_xMfKQ4gReI89RJn0-RQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>KY, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
PlacesAutocompleteResponse
| שדה | חובה | סוג | תיאור |
|---|---|---|---|
|
חובה | מערך<PlaceAutocompletePrediction> |
מכיל מערך של תחזיות. מידע נוסף זמין במאמר בנושא PlaceAutocompletePrediction. |
|
חובה | PlacesAutocompleteStatus |
מכיל את הסטטוס של הבקשה, ועשוי להכיל מידע על ניפוי באגים שיעזור לכם להבין למה הבקשה נכשלה. מידע נוסף זמין במאמר PlacesAutocompleteStatus. |
|
אופציונלי | מחרוזת |
אם השירות מחזיר קוד סטטוס שאינו |
|
אופציונלי | מערך<string> |
אם השירות מחזיר מידע נוסף על מפרט הבקשה, יכול להיות שיהיה שדה |
האלמנטים place_id בתוצאות מעניינים במיוחד, כי אפשר להשתמש בהם כדי לבקש פרטים ספציפיים יותר על המקום באמצעות שאילתה נפרדת. בקשות לפרטי מקום (ממשק קודם)
תגובת XML מורכבת מרכיב <AutocompletionResponse> יחיד עם שני סוגים של רכיבי צאצא:
- רכיב
<status>יחיד מכיל מטא-נתונים על הבקשה. מידע נוסף מופיע בקטע קודי סטטוס בהמשך. - אפס רכיבי
<prediction>או יותר, שכל אחד מהם מכיל מידע על מקום אחד. מידע נוסף על התוצאות האלה זמין במאמר תוצאות של השלמה אוטומטית למקומות (גרסה קודמת). Places API מחזיר עד 5 תוצאות.
מומלץ להשתמש ב-json בתור דגל הפלט המועדף
אלא אם האפליקציה דורשת xml מסיבה כלשהי.
עיבוד של עצי XML דורש זהירות כדי להבטיח שמתייחסים לצמתים ולאלמנטים הנכונים. מידע על עיבוד XML זמין במאמר עיבוד XML באמצעות XPath.
PlacesAutocompleteStatus
קודי סטטוס שמוחזרים על ידי השירות.
-
OKמציין שהבקשה ל-API בוצעה בהצלחה. -
ZERO_RESULTS, שמציין שהחיפוש הצליח אבל לא הניב תוצאות. הבעיה הזו יכולה לקרות אם החיפוש העביר גבולות במיקום מרוחק. -
INVALID_REQUESTמציין שהבקשה ל-API הייתה פגומה, בדרך כלל בגלל שהפרמטרinputחסר. -
OVER_QUERY_LIMITשמציין אחת מהאפשרויות הבאות:- חרגתם ממגבלות השאילתות לשנייה.
- החיוב לא הופעל בחשבון שלכם.
- חרגתם מהקרדיט החודשי בסך 200 $או ממגבלת השימוש שהגדרתם בעצמכם.
- אמצעי התשלום שצוין לא תקף יותר (לדוגמה, תוקף כרטיס האשראי פג).
-
REQUEST_DENIED, שמציין שהבקשה נדחתה, בדרך כלל מהסיבות הבאות:- בבקשה חסר מפתח API.
- הפרמטר
keyלא תקין.
-
UNKNOWN_ERRORשמציינת שגיאה לא ידועה.
כששירות המקומות מחזיר תוצאות JSON מחיפוש, הוא ממקם אותן במערך predictions. גם אם השירות לא מחזיר תוצאות (למשל, אם ה-location מרוחק), הוא עדיין מחזיר מערך predictions ריק. תשובות בפורמט XML מורכבות מאפס רכיבי <prediction> או יותר.
PlaceAutocompletePrediction
| שדה | חובה | סוג | תיאור |
|---|---|---|---|
|
חובה | מחרוזת |
מכיל את השם של התוצאה שהוחזרה, בפורמט שקריא לבני אדם. בדרך כלל, השם של העסק מופיע בתוצאות |
|
חובה | מערך<PlaceAutocompleteMatchedSubstring> |
רשימה של מחרוזות משנה שמתארות את המיקום של המונח שהוזן בטקסט של תוצאת החיזוי, כדי שאפשר יהיה להדגיש את המונח אם הוא ייבחר. מידע נוסף זמין במאמר בנושא PlaceAutocompleteMatchedSubstring. |
|
חובה | PlaceAutocompleteStructuredFormat |
הפונקציה מחזירה טקסט בפורמט מוכן שאפשר להציג בתוצאות ההשלמה האוטומטית. התוכן הזה מיועד לקריאה כמו שהוא. אל תנתחו את הכתובת המעוצבת באופן פרוגרמטי. מידע נוסף זמין במאמר בנושא PlaceAutocompleteStructuredFormat. |
|
חובה | מערך<PlaceAutocompleteTerm> |
מכיל מערך של מונחים שמזהים כל חלק בתיאור שמוחזר (בדרך כלל, חלק בתיאור מסתיים בפסיק). כל רשומה במערך כוללת שדה מידע נוסף זמין במאמר בנושא PlaceAutocompleteTerm. |
|
אופציונלי | מספר שלם |
המרחק בקו ישר במטרים מנקודת המוצא. השדה הזה מוחזר רק לבקשות שבוצעו עם |
|
אופציונלי | מחרוזת |
מזהה טקסטואלי שמזהה באופן ייחודי מקום. כדי לאחזר מידע על המקום, מעבירים את המזהה הזה בשדה placeId של בקשה ל-Places API. מידע נוסף על מזהי מקומות זמין במאמר מזהי מקומות. |
|
אופציונלי | מחרוזת |
ראו place_id. |
|
אופציונלי | Array<string> |
מכיל מערך של סוגים שרלוונטיים למקום הזה. לדוגמה:
|
PlaceAutocompleteMatchedSubstring
| שדה | חובה | סוג | תיאור |
|---|---|---|---|
|
חובה | number |
אורך מחרוזת המשנה התואמת בטקסט של תוצאת החיזוי. |
|
חובה | number |
מיקום ההתחלה של מחרוזת המשנה התואמת בטקסט של תוצאת החיזוי. |
PlaceAutocompleteStructuredFormat
| שדה | חובה | סוג | תיאור |
|---|---|---|---|
|
חובה | מחרוזת |
מכיל את הטקסט הראשי של החיזוי, בדרך כלל שם המקום. |
|
חובה | מערך<PlaceAutocompleteMatchedSubstring> |
הוא מכיל מערך עם הערך מידע נוסף זמין במאמר בנושא PlaceAutocompleteMatchedSubstring. |
|
אופציונלי | מחרוזת |
מכיל את הטקסט המשני של חיזוי, בדרך כלל המיקום של המקום. |
|
אופציונלי | מערך<PlaceAutocompleteMatchedSubstring> |
הוא מכיל מערך עם הערך מידע נוסף זמין במאמר בנושא PlaceAutocompleteMatchedSubstring. |
PlaceAutocompleteTerm
| שדה | חובה | סוג | תיאור |
|---|---|---|---|
|
חובה | number |
מגדיר את מיקום ההתחלה של המונח הזה בתיאור, שנמדד בתווי Unicode |
|
חובה | מחרוזת |
הטקסט של המונח. |
אופטימיזציה של השלמה אוטומטית למקומות (מדור קודם)
בקטע הזה מתוארות שיטות מומלצות שיעזרו לכם להפיק את המרב משירות השלמה אוטומטית למקומות (גרסה קודמת).
הנה כמה הנחיות כלליות:
- הדרך המהירה ביותר לפתח ממשק משתמש פעיל היא להשתמש בווידג'ט ההשלמה האוטומטית למקומות (מדור קודם) של Maps JavaScript API, בווידג'ט ההשלמה האוטומטית למקומות (מדור קודם) של Places SDK ל-Android או ברכיב אינטראקטיבי של ההשלמה האוטומטית למקומות (מדור קודם) של Places SDK ל-iOS.
- להבין מההתחלה את שדות הנתונים החיוניים של השלמה אוטומטית למקומות (מדור קודם).
- השדות 'הטיה לפי מיקום' ו'הגבלת מיקום' הם אופציונליים, אבל יכולה להיות להם השפעה משמעותית על הביצועים של ההשלמה האוטומטית.
- כדאי להשתמש בטיפול בשגיאות כדי לוודא שהאפליקציה תפעל בצורה תקינה גם אם ה-API יחזיר שגיאה.
- חשוב לוודא שהאפליקציה מטפלת במצב שבו לא נבחרה אפשרות, ומציעה למשתמשים דרך להמשיך.
שיטות מומלצות לאופטימיזציה של עלויות
אופטימיזציה בסיסית של עלויות
כדי לבצע אופטימיזציה של העלות של השימוש בשירות השלמה אוטומטית למקומות (מדור ישן), צריך להשתמש במסכות שדות בווידג'טים Place Details (מדור ישן) והשלמה אוטומטית למקומות (מדור ישן) כדי להחזיר רק את שדות הנתונים של השלמה אוטומטית למקומות (מדור ישן) שאתם צריכים.
אופטימיזציה מתקדמת של עלויות
כדאי להטמיע באופן פרוגרמטי את השלמה אוטומטית למקומות (מדור קודם) כדי לגשת אל מק"ט: השלמה אוטומטית – תמחור לכל בקשה ולבקש תוצאות של Geocoding API לגבי המקום שנבחר במקום Place Details (מדור קודם). תמחור לפי בקשה בשילוב עם Geocoding API משתלם יותר מתמחור לפי סשן אם שני התנאים הבאים מתקיימים:
- אם אתם צריכים רק את קו הרוחב וקו האורך או את הכתובת של המקום שהמשתמש בחר, Geocoding API מספק את המידע הזה בעלות נמוכה יותר מאשר קריאה ל-Place Details (דור קודם).
- אם המשתמשים בוחרים הצעות להשלמת החיפוש בממוצע של ארבע בקשות או פחות לתחזיות של השלמה אוטומטית למקומות (גרסה קודמת), התמחור לפי בקשה יכול להיות חסכוני יותר מהתמחור לפי סשן.
האם האפליקציה שלך דורשת מידע כלשהו מלבד הכתובת וקו הרוחב/קו האורך של החיזוי שנבחר?
כן, צריך עוד פרטים
שימוש ב-השלמה אוטומטית למקומות (מדור קודם) מבוסס-סשן עם Place Details (מדור קודם)
מכיוון שהאפליקציה שלך דורשת Place Details (מדור קודם), כמו שם המקום, הסטטוס של העסק,
או שעות פעילות, ההטמעה של השלמה אוטומטית למקומות (מדור קודם) צריכה להשתמש בטוקן לסשן
(באופן פרוגרמטי או מובנה בווידג'טים של
JavaScript,
Android,
או iOS
) לכל סשן
בנוסף למק"טים הרלוונטיים של Places Data,
בהתאם לשדות הנתונים של המקום שאתה מבקש.1
הטמעה של ווידג'טים
ניהול הסשנים מוטמע אוטומטית בווידג'טים של
JavaScript,
Android,
או iOS. הגדרה זו כוללת גם בקשות של השלמה אוטומטית למקומות (מדור קודם) וגם בקשות של Place Details (מדור קודם) לגבי החיזוי שנבחר. חשוב לציין את הפרמטר fields כדי לוודא שאתם מבקשים רק את שדות הנתונים שאתם צריכים ב-השלמה אוטומטית למקומות (גרסה קודמת).
הטמעה פרוגרמטית
משתמשים בטוקן לסשן עם הבקשות של השלמה אוטומטית למקומות (מדור קודם). כשמבקשים Place Details (גרסה מדור קודם) לגבי החיזוי שנבחר, צריך לכלול את הפרמטרים הבאים:
- מזהה המקום מהתגובה של השלמה אוטומטית למקומות (מדור קודם)
- טוקן לסשן שמשמש בבקשה של השלמה אוטומטית למקומות (מדור קודם)
- הפרמטר
fieldsשמציין את שדות הנתונים של ההשלמה האוטומטית למקומות (מדור קודם) שאתם צריכים
לא, צריך רק כתובת ומיקום
יכול להיות ש-Geocoding API יהיה אפשרות חסכונית יותר מאשר Place Details (מדור קודם) לאפליקציה שלכם, בהתאם לביצועים של השימוש שלכם ב-השלמה אוטומטית למקומות (מדור קודם). היעילות של השלמה אוטומטית למקומות (גרסה קודמת) בכל אפליקציה משתנה בהתאם למה שהמשתמשים מזינים, איפה האפליקציה נמצאת והאם הוטמעו בה שיטות מומלצות לאופטימיזציה של הביצועים.
כדי לענות על השאלה הבאה, צריך לנתח כמה תווים משתמש מקליד בממוצע לפני שהוא בוחר חיזוי של השלמה אוטומטית למקומות (מדור קודם) באפליקציה.
האם המשתמשים שלכם בוחרים חיזוי של השלמה אוטומטית למקומות (מדור קודם) בארבע בקשות או פחות, בממוצע?
כן
מטמיעים את השלמה אוטומטית למקומות (מדור קודם) באופן פרוגרמטי בלי אסימוני סשן, ומפעילים את Geocoding API על החיזוי של המקום שנבחר.
Geocoding API מספק כתובות וקואורדינטות של קו רוחב וקו אורך.
ביצוע ארבע בקשות של Autocomplete - Per Request וקריאה אחת ל-Geocoding API לגבי החיזוי של המקום שנבחר, יעלה פחות מהעלות של השלמה אוטומטית למקומות (מדור קודם) לכל סשן.1
כדאי להשתמש בשיטות מומלצות לשיפור הביצועים כדי לעזור למשתמשים לקבל את התחזית שהם מחפשים גם אם הם מקלידים פחות תווים.
לא
שימוש ב-השלמה אוטומטית למקומות (מדור קודם) מבוסס-סשן עם Place Details (מדור קודם)
מכיוון שהמספר הממוצע של הבקשות שאתם צפויים לשלוח לפני שהמשתמש בוחר חיזוי של
השלמה אוטומטית למקומות (מדור קודם) גבוה מהעלות של תמחור לפי סשן, בהטמעה שלכם של השלמה אוטומטית למקומות (מדור קודם) צריך להשתמש בטוקן לסשן גם לבקשות של השלמה אוטומטית למקומות (מדור קודם) וגם לבקשה המשויכת של Place Details (מדור קודם)
לכל סשן.
1
הטמעה של ווידג'טים
ניהול הסשנים מוטמע אוטומטית בווידג'טים של
JavaScript,
Android,
או iOS. הגדרה זו כוללת גם בקשות של השלמה אוטומטית למקומות (גרסה קודמת) וגם בקשות של Place Details (גרסה קודמת) לגבי החיזוי שנבחר. כדי לוודא שאתם מבקשים רק את השדות שאתם צריכים, הקפידו לציין את הפרמטר fields.
הטמעה פרוגרמטית
משתמשים בטוקן לסשן עם הבקשות של השלמה אוטומטית למקומות (מדור קודם).
כשמבקשים Place Details (גרסה מדור קודם) לגבי החיזוי שנבחר,
צריך לכלול את הפרמטרים הבאים:
- מזהה המקום מהתגובה של השלמה אוטומטית למקומות (מדור קודם)
- טוקן לסשן שמשמש בבקשה של השלמה אוטומטית למקומות (מדור קודם)
- הפרמטר
fieldsשמציין שדות של נתונים בסיסיים כמו כתובת וגיאומטריה
אפשר לעכב את הבקשות להשלמה אוטומטית למקומות (מדור קודם)
אפשר להשתמש באסטרטגיות כמו עיכוב של בקשה להשלמה אוטומטית למקומות (מדור קודם) עד שהמשתמש מקליד את שלושת או ארבעת התווים הראשונים, כדי שהאפליקציה תשלח פחות בקשות. לדוגמה, אם שולחים בקשות להשלמה אוטומטית של מקומות (גרסה קודמת) לכל תו אחרי שהמשתמש הקליד את התו השלישי, ואם המשתמש מקליד שבעה תווים ואז בוחר תחזית שבשבילה שולחים בקשה אחת ל-Geocoding API, העלות הכוללת תהיה של 4 בקשות להשלמה אוטומטית של מקומות (גרסה קודמת) + Geocoding.1
אם עיכוב הבקשות יכול להפחית את הממוצע של הבקשות הפרוגרמטיות לפחות מ-4, אתם יכולים לפעול לפי ההנחיות להטמעה של השלמה אוטומטית למקומות (מדור קודם) עם Geocoding API. חשוב לזכור שעיכוב של בקשות יכול להיתפס כזמן אחזור על ידי המשתמש, שאולי מצפה לראות תחזיות עם כל הקשה חדשה על המקשים.
כדאי להשתמש בשיטות מומלצות לשיפור הביצועים כדי לעזור למשתמשים לקבל את החיזוי שהם מחפשים בפחות תווים.
-
למידע על עלויות, אפשר לעיין במחירונים של Google Maps Platform.
שיטות מומלצות לשיפור הביצועים
בהמשך מפורטות דרכים לשיפור הביצועים של השלמה אוטומטית למקומות (מדור קודם):
- מוסיפים להטמעה של Place Autocomplete (מדור קודם) הגבלות לפי מדינה, הטיה לפי מיקום והעדפת שפה (להטמעות פרוגרמטיות). אין צורך בהעדפת שפה בווידג'טים, כי הם בוחרים את העדפות השפה מתוך הדפדפן או המכשיר הנייד של המשתמש.
- אם השלמה אוטומטית למקומות (מדור קודם) מופיעה עם מפה, אפשר להטות את המיקום לפי אזור התצוגה של המפה.
- במקרים שבהם משתמש לא בוחר באחד מהחיזויים של השלמה אוטומטית למקומות (מדור קודם), בדרך כלל כי אף אחד מהחיזויים האלה לא מתאים לכתובת הרצויה, אפשר להשתמש מחדש בקלט של משתמשים המקורי כדי לנסות לקבל תוצאות רלוונטיות יותר:
- אם אתם מצפים שהמשתמש יזין רק פרטי כתובת, תוכלו להשתמש מחדש בקלט של משתמשים המקורי בקריאה ל-Geocoding API.
- אם אתם מצפים שהמשתמש יזין שאילתות למקום ספציפי לפי שם או כתובת, השתמשו בבקשה ל-Place Details (מדור קודם). אם התוצאות צפויות רק באזור ספציפי, השתמשו בהטיית מיקום.
- משתמשים שמזינים כתובות של יחידות משנה, כמו כתובות של יחידות או דירות ספציפיות בתוך בניין. לדוגמה, הכתובת הצ'כית Stroupežnického 3191/17, Praha מניבה חיזוי חלקי ב-השלמה אוטומטית למקומות (מדור קודם).
- משתמשים שמזינים כתובות עם קידומות של קטעי כביש, כמו "23-30 29th St, Queens" בניו יורק או "47-380 Kamehameha Hwy, Kaneohe" באי קאואיי בהוואי.
הטיה של מיקום
כדי להטות את התוצאות לאזור מסוים, מעבירים פרמטר location ופרמטר radius. ההגדרה הזו מנחה את ההשלמה האוטומטית למקומות (מדור קודם) להעדיף להציג תוצאות באזור שהוגדר. יכול להיות שיוצגו תוצאות מחוץ לאזור שהוגדר. אפשר להשתמש בפרמטר includedRegionCodes כדי לסנן את התוצאות ולהציג רק מקומות במדינה מסוימת.
הגבלת מיקום
כדי להגביל את התוצאות לאזור מסוים, מעבירים פרמטר locationRestriction.
אפשר גם להגביל את התוצאות לאזור שמוגדר על ידי location ופרמטר radius, על ידי הוספת הפרמטר strictbounds. ההוראה הזו גורמת להשלמה אוטומטית למקומות (מדור קודם) להחזיר רק תוצאות באזור הזה.