השלמה אוטומטית למקומות (דור קודם)

מפתחים באזור הכלכלי האירופי (EEA)

‫השלמה אוטומטית למקומות (מדור קודם) הוא שירות אינטרנט שמחזיר חיזויים של מקומות בתגובה לבקשת HTTP. הבקשה מציינת מחרוזת חיפוש טקסטואלית וגבולות גיאוגרפיים אופציונליים. אפשר להשתמש בשירות כדי לספק פונקציונליות של השלמה אוטומטית לחיפושים גיאוגרפיים מבוססי-טקסט, על ידי החזרת מקומות כמו עסקים, כתובות ונקודות עניין בזמן שהמשתמש מקליד.

בקשות של השלמה אוטומטית למקומות (מדור קודם)

‫השלמה אוטומטית למקומות (מדור קודם) הוא חלק מ-Places API, והוא חולק מפתח API ומכסות עם Places API.

השלמה אוטומטית למקומות (מדור קודם) יכולה להתאים מילים מלאות ומחרוזות משנה, לפתור שמות של מקומות, כתובות וקודי Plus. לכן, אפליקציות יכולות לשלוח שאילתות בזמן שהמשתמש מקליד, כדי לספק תחזיות של מקומות תוך כדי ההקלדה.

צריך להקפיד על הפורמט הנכון של קודי פלוס. כלומר, צריך להשתמש בתווים מיוחדים כדי להחליף את סימן הפלוס בכתובת ה-URL ב-%2B, ואת הרווחים ב-%20.

  • קוד גלובלי הוא קידומת אזור בת ארבעה תווים, וקוד מקומי בן שישה תווים או יותר. לדוגמה, הקוד הגלובלי לביטול בריחה מכתובת URL‏ 849VCWC8+R9 הוא 849VCWC8%2BR9.
  • קוד מורכב הוא קוד מקומי בן שישה תווים (או יותר) עם מיקום מפורש. לדוגמה, קוד מורכב עם תווי escape בכתובת URL CWC8+R9 Mountain View, CA, USA הוא CWC8%2BR9%20Mountain%20View%20CA%20USA.

התחזיות שמוחזרות מיועדות להצגה למשתמש כדי לעזור לו לבחור את המקום הרצוי. אתם יכולים לשלוח בקשה לפרטי מקום (גרסה קודמת) כדי לקבל מידע נוסף על כל אחד מהמקומות שמוחזרים.

בקשה של השלמה אוטומטית למקומות (מדור קודם) היא כתובת 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.
  • 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. הפעולה הזו תגרום לשירות 'מקומות' להעדיף להציג תוצאות בתוך העיגול הזה. יכול להיות שעדיין יוצגו תוצאות מחוץ לאזור המוגדר.

    הרדיוס יוגבל אוטומטית לערך מקסימלי בהתאם לסוג החיפוש ולפרמטרים אחרים.

    • השלמה אוטומטית: 50,000 מטרים
    • חיפוש בקרבת מקום:
      • עם keyword או name: 50,000 מטרים
      • בלי keyword או name
        • עד 50,000 מטרים, מותאם באופן דינמי על סמך צפיפות האזור, ללא קשר לפרמטר rankby.
        • כשמשתמשים ב-rankby=distance, המערכת לא מקבלת את פרמטר הרדיוס ומוצגת השגיאה INVALID_REQUEST.
    • השלמה אוטומטית של שאילתות: 50,000 מטרים
    • חיפוש טקסט: 50,000 מטר
  • אזור

    קוד האזור, שמוגדר כערך ccTLD (דומיין ברמה העליונה) באורך שני תווים. רוב קודי ה-ccTLD זהים לקודי ISO 3166-1, אבל יש כמה יוצאים מן הכלל. לדוגמה, ה-ccTLD של בריטניה הוא uk (‎.co.uk), אבל קוד ISO 3166-1 שלה הוא gb (טכנית, עבור הישות 'ממלכת בריטניה הגדולה וצפון אירלנד').

  • sessiontoken

    מחרוזת אקראית שמזהה סשן של השלמה אוטומטית למטרות חיוב.

    הסשן מתחיל כשהמשתמש מתחיל להקליד שאילתה, ומסתיים כשהוא בוחר מקום ומתבצעת קריאה לפרטי המקום. כל ביקור באתר יכול לכלול כמה שאילתות, ואחריהן בחירה של מקום אחד. מפתחות ה-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 אם:

    • צוינו יותר מחמישה סוגים.
    • יש סוגים לא מזוהים.
    • כל סוג מהסוגים שמופיעים בטבלה 1 או בטבלה 2 מעורב עם כל אחד מהמסננים שמופיעים בטבלה 3.

דוגמאות לשימוש ב-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

שדה חובה סוג תיאור
חובה ‫Array<PlaceAutocompletePrediction>

מכיל מערך של תחזיות.

מידע נוסף זמין במאמר בנושא PlaceAutocompletePrediction.

חובה PlacesAutocompleteStatus

התגובה מכילה את הסטטוס של הבקשה, ועשויה להכיל מידע על ניפוי באגים שיעזור לכם להבין למה הבקשה נכשלה.

מידע נוסף זמין במאמר בנושא PlacesAutocompleteStatus.

אופציונלי מחרוזת

אם השירות מחזיר קוד סטטוס ששונה מ-OK<, יכול להיות שיהיה שדה error_message נוסף באובייקט התשובה. השדה הזה מכיל מידע מפורט יותר על הסיבות לקוד הסטטוס שצוין. השדה הזה לא תמיד מוחזר, והתוכן שלו נתון לשינויים.

אופציונלי Array<string>

אם השירות מחזיר מידע נוסף על מפרט הבקשה, יכול להיות שיהיה שדה info_messages נוסף באובייקט התגובה. השדה הזה מוחזר רק לבקשות שהצליחו. יכול להיות שהיא לא תמיד תוחזר, והתוכן שלה עשוי להשתנות.

בתוצאות, כדאי לשים לב במיוחד לרכיבי place_id שבהם אפשר להשתמש כדי לבקש פרטים ספציפיים יותר על המקום באמצעות שאילתה נפרדת. בקשות לפרטי מקום (גרסה קודמת)

תגובת XML מורכבת מרכיב <AutocompletionResponse> יחיד עם שני סוגים של רכיבי צאצא:

מומלץ להשתמש ב-json בתור דגל הפלט המועדף, אלא אם האפליקציה דורשת xml מסיבה כלשהי. כדי לעבד עצי XML, צריך להקפיד להפנות לצמתים ולרכיבים המתאימים. לקבלת עזרה בעיבוד XML, אפשר לעיין במאמר בנושא עיבוד XML באמצעות XPath.

PlacesAutocompleteStatus

קודי סטטוס שמוחזרים על ידי השירות.

  • OK מציין שבקשת ה-API בוצעה בהצלחה.
  • ZERO_RESULTS מציין שהחיפוש הצליח אבל לא הניב תוצאות. השגיאה הזו עשויה להתרחש אם החיפוש העביר גבולות במיקום מרוחק.
  • INVALID_REQUEST מציין שהבקשה ל-API הייתה פגומה, בדרך כלל בגלל שהפרמטר input חסר.
  • OVER_QUERY_LIMIT שמציין אחת מהאפשרויות הבאות:
    • חרגתם ממגבלות ה-QPS.
    • החיוב לא הופעל בחשבון שלך.
    • חרגתם מהקרדיט החודשי בסך 200 $או ממגבלת השימוש שהגדרתם בעצמכם.
    • אמצעי התשלום שצוין לא תקף יותר (לדוגמה, תוקף כרטיס האשראי פג).
    מידע נוסף על פתרון השגיאה הזו מופיע בשאלות הנפוצות בנושא מפות.
  • REQUEST_DENIED שבה מצוין שהבקשה שלך נדחתה, בדרך כלל בגלל:
    • בבקשה חסר מפתח API.
    • הפרמטר key לא תקין.
  • UNKNOWN_ERROR שמציינת שגיאה לא ידועה.

כששירות המקומות מחזיר תוצאות JSON מחיפוש, הוא מציב אותן במערך predictions. גם אם השירות לא מחזיר תוצאות (למשל אם location הוא מרוחק), הוא עדיין מחזיר מערך predictions ריק. תשובות XML מורכבות מאפס רכיבי <prediction> או יותר.

PlaceAutocompletePrediction

שדה חובה סוג תיאור
חובה מחרוזת

מכיל את השם של התוצאה שהוחזרה, בפורמט שקריא לבני אדם. בדרך כלל, השם הזה הוא שם העסק.establishment התוכן הזה מיועד לקריאה כמו שהוא. אל תנתחו את הכתובת המעוצבת באופן פרוגרמטי.

חובה מערך<PlaceAutocompleteMatchedSubstring>

רשימה של מחרוזות משנה שמתארות את המיקום של המונח שהוזן בטקסט של תוצאת החיזוי, כדי שאפשר יהיה להדגיש את המונח אם הוא ייבחר.

מידע נוסף זמין במאמר בנושא PlaceAutocompleteMatchedSubstring.

חובה PlaceAutocompleteStructuredFormat

הפונקציה מחזירה טקסט מעוצב מראש שאפשר להציג בתוצאות ההשלמה האוטומטית. התוכן הזה מיועד לקריאה כמו שהוא. אל תנתחו את הכתובת המעוצבת באופן פרוגרמטי.

מידע נוסף זמין במאמר בנושא PlaceAutocompleteStructuredFormat.

חובה מערך<PlaceAutocompleteTerm>

מכיל מערך של מונחים שמזהים כל חלק בתיאור שמוחזר (חלק בתיאור מסתיים בדרך כלל בפסיק). כל רשומה במערך כוללת שדה value שמכיל את הטקסט של המונח, ושדה offset שמגדיר את מיקום ההתחלה של המונח בתיאור, במדידה של תווים ב-Unicode.

מידע נוסף זמין במאמר בנושא PlaceAutocompleteTerm.

אופציונלי מספר שלם

המרחק בקו ישר במטרים מנקודת המוצא. השדה הזה מוחזר רק לבקשות שמתבצעות עם origin.

אופציונלי מחרוזת

מזהה טקסטואלי שמזהה באופן ייחודי מקום. כדי לאחזר מידע על המקום, מעבירים את המזהה הזה בשדה placeId של בקשה ל-Places API. מידע נוסף על מזהי מקומות זמין במאמר מזהי מקומות.

אופציונלי מחרוזת

ראו place_id.

אופציונלי Array<string>

מכיל מערך של סוגים שרלוונטיים למקום הזה. לדוגמה: [ "political", "locality" ] או [ "establishment", "geocode", "beauty_salon" ]. המערך יכול להכיל כמה ערכים. מידע נוסף על סוגי מקומות

PlaceAutocompleteMatchedSubstring

שדה חובה סוג תיאור
חובה number

אורך מחרוזת המשנה התואמת בטקסט של תוצאת החיזוי.

חובה number

מיקום ההתחלה של מחרוזת המשנה התואמת בטקסט של תוצאת החיזוי.

PlaceAutocompleteStructuredFormat

שדה חובה סוג תיאור
חובה מחרוזת

מכיל את הטקסט העיקרי של התחזית, בדרך כלל שם המקום.

חובה מערך<PlaceAutocompleteMatchedSubstring>

הוא מכיל מערך עם הערך offset ועם length. הערכים האלה מתארים את המיקום של המונח שהוזן בטקסט של תוצאת החיזוי, כדי שאפשר יהיה להדגיש את המונח אם הוא ייבחר.

מידע נוסף זמין במאמר בנושא PlaceAutocompleteMatchedSubstring.

אופציונלי מחרוזת

מכיל את הטקסט המשני של חיזוי, בדרך כלל המיקום של המקום.

אופציונלי מערך<PlaceAutocompleteMatchedSubstring>

הוא מכיל מערך עם הערך offset ועם length. הערכים האלה מתארים את המיקום של המונח שהוזן בטקסט של תוצאת החיזוי, כדי שאפשר יהיה להדגיש את המונח אם הוא ייבחר.

מידע נוסף זמין במאמר בנושא PlaceAutocompleteMatchedSubstring.

PlaceAutocompleteTerm

שדה חובה סוג תיאור
חובה number

מגדיר את מיקום ההתחלה של המונח הזה בתיאור, במדידה של תווי Unicode

חובה מחרוזת

הטקסט של המונח.

אופטימיזציה של השלמה אוטומטית למקומות (מדור קודם)

בקטע הזה מתוארות שיטות מומלצות שיעזרו לכם להפיק את המרב מהשירות השלמה אוטומטית למקומות (מדור קודם).

הנה כמה הנחיות כלליות:

  • הדרך הכי מהירה לפתח ממשק משתמש תקין היא להשתמש בווידג'ט השלמה אוטומטית למקומות (מדור קודם) של Maps JavaScript API, בווידג'ט השלמה אוטומטית למקומות (מדור קודם) של Places SDK ל-Android או ברכיב אינטראקטיבי השלמה אוטומטית למקומות (מדור קודם) של Places SDK ל-iOS.
  • הסבר על שדות הנתונים של השלמה אוטומטית למקומות (מדור קודם) מההתחלה.
  • השדות 'הטיה לפי מיקום' ו'הגבלת מיקום' הם אופציונליים, אבל יכולה להיות להם השפעה משמעותית על הביצועים של ההשלמה האוטומטית.
  • כדאי להשתמש בטיפול בשגיאות כדי לוודא שהאפליקציה תפעל בצורה תקינה גם אם ה-API יחזיר שגיאה.
  • חשוב לוודא שהאפליקציה מטפלת במצב שבו לא נבחרה אפשרות, ומציעה למשתמשים דרך להמשיך.

שיטות מומלצות לאופטימיזציה של עלויות

אופטימיזציה בסיסית של עלויות

כדי לבצע אופטימיזציה לעלות השימוש בשירות השלמה אוטומטית למקומות (מדור קודם), כדאי להשתמש במסכות שדות בווידג'טים Place Details (מדור קודם) והשלמה אוטומטית למקומות (מדור קודם) כדי להחזיר רק את שדות הנתונים של השלמה אוטומטית למקומות (מדור קודם) שאתם צריכים.

אופטימיזציה מתקדמת של עלויות

כדאי לשקול הטמעה פרוגרמטית של השלמה אוטומטית למקומות (מדור קודם) כדי לגשת אל SKU: השלמה אוטומטית – תמחור לפי בקשה ולבקש תוצאות של Geocoding API לגבי המקום שנבחר במקום Place Details (מדור קודם). תמחור לפי בקשה בשילוב עם Geocoding API הוא חסכוני יותר מתמחור לפי סשן (מבוסס-סשן) אם מתקיימים שני התנאים הבאים:

  • אם אתם צריכים רק את קו הרוחב/קו האורך או את הכתובת של המקום שהמשתמש בחר, תוכלו לקבל את המידע הזה באמצעות Geocoding API במחיר נמוך יותר מאשר קריאה ל-Place Details (Legacy).
  • אם המשתמשים בוחרים בהצעות להשלמת החיפוש בתוך ממוצע של ארבע בקשות או פחות של השלמה אוטומטית למקומות (גרסה קודמת), התמחור לפי בקשה עשוי להיות חסכוני יותר מהתמחור לפי סשן.
כדי לקבל עזרה בבחירת ההטמעה של השלמה אוטומטית למקומות (גרסה מדור קודם) שמתאימה לצרכים שלכם, בוחרים את הכרטיסייה שמתאימה לתשובה שלכם לשאלה הבאה.

האם האפליקציה שלך דורשת מידע כלשהו מלבד הכתובת וקו הרוחב/קו האורך של החיזוי שנבחר?

כן, צריך עוד פרטים

שימוש בהשלמה אוטומטית למקומות (מדור קודם) שמבוססת על סשן עם Place Details (מדור קודם)
מכיוון שהאפליקציה שלך דורשת Place Details (מדור קודם), כמו שם המקום, הסטטוס של העסק או שעות פעילות, ההטמעה של השלמה אוטומטית למקומות (מדור קודם) צריכה להשתמש בטוקן לסשן (באופן פרוגרמטי או כחלק מווידג'טים של JavaScript,‏ Android או iOS) לכל סשן, בנוסף למק"טים רלוונטיים של נתוני מקומות, בהתאם לשדות נתונים של המקום שאתה מבקש.1

הטמעה של ווידג'טים
ניהול הסשנים מוטמע אוטומטית בווידג'טים של JavaScript, Android, או iOS. החיוב כולל גם את הבקשות של השלמה אוטומטית למקומות (מדור קודם) וגם את הבקשות של Place Details (מדור קודם) לגבי החיזוי שנבחר. כדי לוודא שאתם מבקשים רק את שדות הנתונים שאתם צריכים ב-השלמה אוטומטית למקומות (גרסה קודמת), הקפידו לציין את הפרמטר fields.

הטמעה פרוגרמטית
משתמשים בטוקן לסשן עם בקשות השלמה אוטומטית למקומות (מדור קודם). כשמבקשים Place Details (גרסה קודמת) לגבי התחזית שנבחרה, צריך לכלול את הפרמטרים הבאים:

  1. מזהה המקום מהתגובה של השלמה אוטומטית למקומות (מדור קודם)
  2. טוקן הסשן שמשמש בבקשה של השלמה אוטומטית למקומות (מדור קודם)
  3. הפרמטר fields שמציין את שדות הנתונים של השלמה אוטומטית למקומות (מדור קודם) שדרושים לכם

לא, צריך רק כתובת ומיקום

יכול להיות ש-Geocoding API יהיה אפשרות חסכונית יותר מאשר Place Details (מדור קודם) לאפליקציה שלכם, בהתאם לביצועים של השימוש שלכם ב-השלמה אוטומטית למקומות (מדור קודם). היעילות של השלמה אוטומטית למקומות (גרסה קודמת) בכל אפליקציה משתנה בהתאם למה שהמשתמשים מזינים, איפה האפליקציה נמצאת והאם הוטמעו בה שיטות מומלצות לאופטימיזציה של הביצועים.

כדי לענות על השאלה הבאה, צריך לנתח כמה תווים משתמש מקליד בממוצע לפני שהוא בוחר חיזוי של השלמה אוטומטית למקומות (מדור קודם) באפליקציה.

האם המשתמשים שלכם בוחרים חיזוי של השלמה אוטומטית למקומות (מדור קודם) בארבע בקשות או פחות, בממוצע?

כן

הטמעה של השלמה אוטומטית למקומות (מדור קודם) באופן פרוגרמטי ללא טוקנים לסשן, וקריאה ל-Geocoding API לגבי חיזוי המקום שנבחר.
‫Geocoding API מספק כתובות וקואורדינטות של קו רוחב וקו אורך. ביצוע ארבע בקשות Autocomplete – לכל בקשה בתוספת קריאה ל-Geocoding API לגבי חיזוי המקום שנבחר, יעלה פחות מהעלות לכל סשן של השלמה אוטומטית למקומות (מדור קודם).1

כדאי להשתמש בשיטות מומלצות לשיפור הביצועים כדי לעזור למשתמשים לקבל את התחזית שהם מחפשים גם אם הם מקלידים פחות תווים.

לא

שימוש בהשלמה אוטומטית למקומות (מדור קודם) שמבוססת על סשן עם Place Details (מדור קודם)
מכיוון שהמספר הממוצע של הבקשות שצפויות להישלח לפני שהמשתמש בוחר חיזוי של השלמה אוטומטית למקומות (מדור קודם) גבוה מהעלות של תמחור לכל סשן, בהטמעה של השלמה אוטומטית למקומות (מדור קודם) צריך להשתמש באסימון סשן גם לבקשות של השלמה אוטומטית למקומות (מדור קודם) וגם לבקשה המשויכת של Place Details (מדור קודם) לכל סשן. 1

הטמעה של ווידג'טים
ניהול הסשנים מוטמע אוטומטית בווידג'טים של JavaScript, Android, או iOS. החיוב כולל גם את הבקשות של השלמה אוטומטית למקומות (מדור קודם) וגם את הבקשות של Place Details (מדור קודם) לגבי החיזוי שנבחר. כדי לוודא שאתם מבקשים רק את השדות שאתם צריכים, חשוב לציין את הפרמטר fields.

הטמעה פרוגרמטית
משתמשים בטוקן לסשן עם בקשות השלמה אוטומטית למקומות (מדור קודם). כשמבקשים Place Details (גרסה קודמת) לגבי התחזית שנבחרה, צריך לכלול את הפרמטרים הבאים:

  1. מזהה המקום מהתגובה של השלמה אוטומטית למקומות (מדור קודם)
  2. טוקן הסשן שמשמש בבקשה של השלמה אוטומטית למקומות (מדור קודם)
  3. הפרמטר fields שמציין שדות של נתונים בסיסיים כמו כתובת וגיאומטריה

כדאי לשקול לדחות בקשות של השלמה אוטומטית למקומות (מדור קודם)
אפשר להשתמש באסטרטגיות כמו דחיית בקשה של השלמה אוטומטית למקומות (מדור קודם) עד שהמשתמש יקליד את שלושת או ארבעת התווים הראשונים, כדי שהאפליקציה תשלח פחות בקשות. לדוגמה, אם שולחים בקשות להשלמה אוטומטית למקומות (גרסה קודמת) לכל תו אחרי שהמשתמש הקליד את התו השלישי, ואם המשתמש מקליד שבעה תווים ואז בוחר תחזית שבשבילה שולחים בקשת API אחת ל-Geocoding, העלות הכוללת תהיה של 4 בקשות להשלמה אוטומטית למקומות (גרסה קודמת) + בקשת API ל-Geocoding.1

אם עיכוב הבקשות יכול להוריד את הממוצע של הבקשות הפרוגרמטיות מתחת לארבע, אפשר לפעול לפי ההנחיות להטמעה של השלמה אוטומטית למקומות (מדור קודם) עם Geocoding API. חשוב לזכור שעיכוב בקשות עלול להיתפס כזמן טעינה על ידי המשתמש, שאולי מצפה לראות תחזיות עם כל הקשה חדשה על המקשים.

כדאי להשתמש בשיטות מומלצות לשיפור הביצועים כדי לעזור למשתמשים לקבל את התחזית שהם מחפשים בפחות תווים.


  1. למידע על עלויות, אפשר לעיין במחירונים של Google Maps Platform.

שיטות מומלצות לשיפור הביצועים

בהנחיות הבאות מוסבר איך לבצע אופטימיזציה של הביצועים של השלמה אוטומטית למקומות (גרסה קודמת):

  • מוסיפים הגבלות לפי מדינה, הטיה לפי מיקום והעדפת שפה (ביישומים פרוגרמטיים) להטמעה של השלמה אוטומטית למקומות (מדור קודם). אין צורך בהעדפת שפה בווידג'טים, כי הם בוחרים את העדפות השפה מתוך הדפדפן או המכשיר הנייד של המשתמש.
  • אם השלמה אוטומטית למקומות (מדור קודם) מופיע עם מפה, אפשר להטות את המיקום לפי אזור התצוגה של המפה.
  • במקרים שבהם המשתמש לא בוחר באחד מהחיזויים של השלמה אוטומטית למקומות (מדור קודם), בדרך כלל כי אף אחד מהחיזויים האלה לא מתאים לכתובת הרצויה, אפשר להשתמש מחדש בקלט של משתמשים כדי לנסות לקבל תוצאות רלוונטיות יותר:
    • אם אתם מצפים שהמשתמש יזין רק פרטי כתובת, תוכלו להשתמש מחדש בקלט של משתמשים המקורי בקריאה ל-Geocoding API.
    • אם אתם מצפים שהמשתמש יזין שאילתות לגבי מקום ספציפי לפי שם או כתובת, תשתמשו בבקשה של Place Details (גרסה קודמת). אם אתם מצפים לתוצאות רק באזור מסוים, כדאי להשתמש בהטיה לפי מיקום.
    תרחישים נוספים שבהם מומלץ לחזור ל-Geocoding API כוללים:
    • משתמשים שמזינים כתובות של יחידות משנה, כמו כתובות של יחידות או דירות ספציפיות בתוך בניין. לדוגמה, הכתובת הצ'כית "Stroupežnického 3191/17, Praha" תניב חיזוי חלקי ב-השלמה אוטומטית למקומות (מדור קודם).
    • משתמשים שמזינים כתובות עם קידומות של קטע כביש כמו "23-30 29th St, Queens" בניו יורק או "47-380 Kamehameha Hwy, Kaneohe" באי קוואי בהוואי.

הטיה של מיקום

כדי להטות את התוצאות לאזור מסוים, מעבירים פרמטר location ופרמטר radius. ההוראה הזו גורמת ל-השלמה אוטומטית למקומות (מדור קודם) להעדיף להציג תוצאות באזור המוגדר. יכול להיות שיוצגו תוצאות מחוץ לאזור שהוגדר. אפשר להשתמש בפרמטר includedRegionCodes כדי לסנן את התוצאות ולהציג רק מקומות במדינה שצוינה.

הגבלת מיקום

כדי להגביל את התוצאות לאזור מסוים, מעבירים פרמטר locationRestriction.

אפשר גם להגביל את התוצאות לאזור שהוגדר על ידי location והפרמטר radius, על ידי הוספת הפרמטר strictbounds. ההוראה הזו גורמת להשלמה אוטומטית למקומות (מדור קודם) להחזיר רק תוצאות באזור הזה.