השלמה אוטומטית (חדשה)

בחירת פלטפורמה: Android iOS JavaScript Web Service
מפתחים באזור הכלכלי האירופי (EEA)

מבוא

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

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

התשובה של ההשלמה האוטומטית (חדשה) יכולה להכיל שני סוגים של תחזיות:

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

לדוגמה, אתם קוראים ל-Autocomplete (New) באמצעות מחרוזת קלט שמכילה קלט חלקי של משתמש, 'Sicilian piz', ואזור החיפוש מוגבל לסן פרנסיסקו, קליפורניה. התשובה מכילה רשימה של תחזיות לגבי מקומות שתואמות למחרוזת החיפוש ולאזור החיפוש, כמו המסעדה Sicilian Pizza Kitchen, וגם פרטים על המקום.

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

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

‫APIs Explorer מאפשר לכם לשלוח בקשות בזמן אמת כדי להכיר את ה-API ואת האפשרויות שלו:

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

בקשת השלמה אוטומטית (חדשה) היא בקשת POST HTTP לכתובת URL בפורמט הבא:

https://places.googleapis.com/v1/places:autocomplete

מעבירים את כל הפרמטרים בגוף בקשת ה-JSON או בכותרות כחלק מבקשת ה-POST. לדוגמה:

curl -X POST -d '{
  "input": "pizza",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

פרמטרים נתמכים

פרמטר

תיאור

input*

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

FieldMask (כותרת HTTP)

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

includedPrimaryTypes

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

includePureServiceAreaBusinesses

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

includeQueryPredictions

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

includedRegionCodes

מערך של עד 15 קודי מדינה בני שני תווים להגבלת התוצאות.

inputOffset

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

languageCode

השפה המועדפת (קוד IETF BCP-47) לתוצאות. ברירת המחדל היא כותרת Accept-Language או 'en'.

locationBias

מציין אזור (עיגול או מלבן) שתוצאות החיפוש יוטו אליו, ומאפשר תוצאות מחוץ לאזור. אי אפשר להשתמש בו עם locationRestriction.

locationRestriction

מציין אזור (עיגול או מלבן) להגבלת תוצאות החיפוש. התוצאות מחוץ לאזור הזה לא נכללות. אי אפשר להשתמש בפרמטר הזה עם locationBias.

origin

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

regionCode

קוד האזור שמשמש לעיצוב התשובה ולהטיית ההצעות (לדוגמה, uk,‏ fr).

sessionToken

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

‫* מציין שדה חובה.

מידע על התשובה

ההשלמה האוטומטית (חדשה) מחזירה אובייקט JSON כתגובה. בתשובה:

  • המערך suggestions מכיל את כל המקומות והשאילתות החזויים לפי הסדר על סמך מידת הרלוונטיות שלהם. כל מקום מיוצג על ידי השדה placePrediction וכל שאילתה מיוצגת על ידי השדה queryPrediction.
  • שדה placePrediction מכיל מידע מפורט על חיזוי של מקום יחיד, כולל מזהה המקום ותיאור הטקסט.
    • כדי להתאים בצורה מדויקת יותר לקלט של המשתמשים כפי שסופק בפרמטר input, תיאור הטקסט של חיזוי המקום עשוי לכלול שמות חלופיים של מקומות, רחובות ורכיבי כתובת אחרים. יכול להיות שהשמות החלופיים האלה יהיו שונים מהשמות שמוחזרים בשדות displayName והכתובת בתוצאות של פרטי מקום עבור אותו מזהה מקום.
    • בהקשר הזה, שמות חלופיים של מקומות מסוימים עשויים להיות בשפה שונה מהצפוי על סמך הפרמטר languageCode, בהתאם לשמות שתואמים יותר לקלט של המשתמש.
  • שדה queryPrediction מכיל מידע מפורט על חיזוי שאילתה יחיד.

אובייקט ה-JSON המלא הוא מהצורה:

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }]
        },
      ...
    },
    {
      "queryPrediction": {
        "text": {
          "text": "Amoeba Music",
          "matches": [
            {
              "endOffset": 6
            }]
        },
        ...
    }
  ...]
}

פרמטרים נדרשים

  • קלט

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

פרמטרים אופציונליים

  • FieldMask

    מציינים את רשימת השדות שיוחזרו בתגובה על ידי יצירת מסכת שדה תגובה. מעבירים את מסכת השדות של התשובה ל-method באמצעות כותרת ה-HTTP‏ X-Goog-FieldMask.

    צריך לציין רשימה מופרדת בפסיקים של שדות ההצעות שרוצים להחזיר. לדוגמה, כדי לאחזר את suggestions.placePrediction.text.text ו-suggestions.queryPrediction.text.text של ההצעה.

      X-Goog-FieldMask: suggestions.placePrediction.text.text,suggestions.queryPrediction.text.text

    כדי לאחזר את כל השדות, משתמשים ב-*.

      X-Goog-FieldMask: *
  • includeFutureOpeningBusinesses

    אם true, הפונקציה מחזירה עסקים שצפויים להיפתח בעתיד. ברירת המחדל היא false.

  • includedPrimaryTypes

    למקום יכול להיות רק סוג ראשי אחד מתוך הסוגים שמפורטים ב טבלה א' או ב טבלה ב'. לדוגמה, הסוג הראשי יכול להיות "mexican_restaurant" או "steak_house".

    כברירת מחדל, ה-API מחזיר את כל המקומות על סמך הפרמטר input, ללא קשר לערך הסוג הראשי שמשויך למקום. כדי להגביל את התוצאות לסוג ראשי מסוים או לסוגים ראשיים מסוימים, צריך להעביר את הפרמטר includedPrimaryTypes.

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

    הפרמטר הזה יכול לכלול גם את (regions) או את (cities). המסננים של (regions) type collection הם אזורים או חלוקות, כמו שכונות ומיקודים. המסנן (cities) type collection מסנן מקומות ש-Google מזהה כערים.

    הבקשה תידחה ותוצג השגיאה INVALID_REQUEST אם:

    • צוינו יותר מחמישה סוגים.
    • כל סוג שצוין בנוסף ל-(cities) או ל-(regions).
    • מצוינים סוגים לא מזוהים.
  • includePureServiceAreaBusinesses

    אם הערך הוא true, התשובה כוללת עסקים שמגיעים אל הלקוחות או מספקים להם משלוחים באופן ישיר, אבל אין להם מיקום פיזי. אם הערך מוגדר ל-false, ה-API מחזיר רק עסקים עם מיקום פיזי.

  • includeQueryPredictions

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

  • includedRegionCodes

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

        "includedRegionCodes": ["de", "fr"]

    אם מציינים גם locationRestriction וגם includedRegionCodes, התוצאות ממוקמות באזור החיתוך של שתי ההגדרות.

  • inputOffset

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

  • languageCode

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

    • כדי לציין את השפה המועדפת, צריך להשתמש בקודי שפה בתקן IETF BCP-47.
    • אם לא מציינים את languageCode, ה-API משתמש בערך שצוין בכותרת Accept-Language. אם לא צוין אף אחד מהם, ברירת המחדל היא en. אם מציינים קוד שפה לא תקין, ה-API מחזיר שגיאה INVALID_ARGUMENT.
    • לשפה המועדפת יש השפעה קטנה על קבוצת התוצאות שה-API בוחר להחזיר, ועל הסדר שבו הן מוחזרות. השינוי הזה משפיע גם על היכולת של ה-API לתקן שגיאות איות.
    • הפורמט של חיזוי המקומות משתנה בהתאם לקלט של המשתמש בכל בקשה.
      • המונחים התואמים בפרמטר input נבחרים קודם, באמצעות שמות שתואמים להעדפת השפה שצוינה בפרמטר languageCode כשהם זמינים, אחרת באמצעות שמות שתואמים בצורה הטובה ביותר לקלט של המשתמש.
      • יכול להיות ששמות המקומות יעוצבו באמצעות שמות חלופיים כדי להתאים למונחים בפרמטר input, כולל שמות בשפות אחרות מלבד השפה שמצוינת בפרמטר languageCode.
      • כתובות רחוב מעוצבות בשפה המקומית, בסקריפט שניתן לקריאה על ידי המשתמש כאשר הדבר אפשרי, רק לאחר שנבחרו מונחים תואמים להתאמה למונחים בפרמטר input.
      • כל הכתובות האחרות מוחזרות בשפה המועדפת, אחרי שנבחרו מונחים תואמים שתואמים למונחים בפרמטר input. אם השם לא זמין בשפה המועדפת, ה-API משתמש בהתאמה הכי קרובה.
  • ‫locationBias או locationRestriction

    אפשר לציין locationBias או locationRestriction, אבל לא את שניהם, כדי להגדיר את אזור החיפוש. אפשר לחשוב על locationRestriction כציון של האזור שבו התוצאות צריכות להיות, ועל locationBias כציון של האזור שבו התוצאות צריכות להיות קרובות, אבל הן יכולות להיות מחוץ לאזור.

    • locationBias

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

    • locationRestriction

      מציין אזור לחיפוש. לא יוחזרו תוצאות מחוץ לאזור שצוין.

    מציינים את אזור locationBias או locationRestriction בתור Viewport מלבני או בתור עיגול.

    • מעגל מוגדר על ידי נקודת מרכז ורדיוס במטרים. הרדיוס חייב להיות בין 0.0 ל-50,000.0, כולל. ערך ברירת המחדל הוא 0.0. במקרה של locationRestriction, צריך להגדיר את הרדיוס לערך שגדול מ-0.0. אחרת, הבקשה לא מחזירה תוצאות.

      לדוגמה:

      "locationBias": {
        "circle": {
          "center": {
            "latitude": 37.7937,
            "longitude": -122.3965
          },
          "radius": 500.0
        }
      }
    • מלבן הוא אזור תצוגה של קווי רוחב ואורך, שמיוצג על ידי שתי נקודות low ונקודות גבוהות שממוקמות באלכסון זו מול זו. אזור תצוגה נחשב לאזור סגור, כלומר הוא כולל את הגבולות שלו. הגבולות של קו הרוחב צריכים להיות בין ‎-90 ל-90 מעלות, כולל, והגבולות של קו האורך צריכים להיות בין ‎-180 ל-180 מעלות, כולל:

      • אם low = high, אזור התצוגה מורכב מהנקודה היחידה הזו.
      • אם low.longitude > high.longitude, טווח קווי האורך הפוך (אזור התצוגה חוצה את קו האורך 180 מעלות).
      • אם low.longitude = ‎-180 מעלות ו-high.longitude = 180 מעלות, אז אזור התצוגה כולל את כל קווי האורך.
      • אם low.longitude = 180 מעלות ו-high.longitude = ‎-180 מעלות, טווח קווי האורך ריק.

      צריך למלא את שני השדות low ו-high, והתיבה המיוצגת לא יכולה להיות ריקה. אם אזור התצוגה ריק, תופיע שגיאה.

      לדוגמה, אזור התצוגה הזה כולל את כל העיר ניו יורק:

      "locationBias": {
        "rectangle": {
          "low": {
            "latitude": 40.477398,
            "longitude": -74.259087
          },
          "high": {
            "latitude": 40.91618,
            "longitude": -73.70018
          }
        }
      }
  • origin

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

    "origin": {
        "latitude": 40.477398,
        "longitude": -74.259087
    }
  • regionCode

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

    ההצעות מוטות גם על סמך קודי אזור. ‫Google ממליצה להגדיר את התג regionCode בהתאם להעדפות פורמט ומידות של המשתמש.

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

  • sessionToken

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

בחירת פרמטרים להטיית התוצאות

פרמטרים של השלמה אוטומטית (חדש) יכולים להשפיע על תוצאות החיפוש בצורה שונה. בטבלה הבאה מפורטות המלצות לשימוש בפרמטרים על סמך התוצאה הרצויה.
פרמטר המלצה לשימוש
regionCode ההגדרה נקבעת לפי העדפות הפורמט והמידות של המשתמש.
includedRegionCodes הגדרת הגבלה של התוצאות לרשימה של אזורים ספציפיים.
locationBias השימוש באפשרות הזו מומלץ כשרוצים לקבל תוצאות באזור מסוים או בסביבתו. אם רלוונטי, הגדר את האזור כחלק הגלוי של המפה שהמשתמש מסתכל עליו.
locationRestriction השתמשו בפרמטר הזה רק כשלא רוצים לקבל תוצאות מחוץ לאזור.
origin משתמשים בשיטה הזו כשרוצים לחשב את המרחק בקו ישר לכל תחזית.

דוגמאות להשלמה אוטומטית (חדשה)

הגבלת החיפוש לאזור מסוים באמצעות locationRestriction

השדה locationRestriction מציין את האזור לחיפוש. לא מוחזרות תוצאות מחוץ לאזור שצוין. בדוגמה הבאה, משתמשים ב-locationRestriction כדי להגביל את הבקשה לעיגול ברדיוס של 5,000 מטרים שמרכזו בסן פרנסיסקו:

curl -X POST -d '{
  "input": "Art museum",
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

כל התוצאות מהאזורים שצוינו נכללות במערך suggestions:

  {
    "suggestions": [
      {
        "placePrediction": {
          "place": "places/ChIJkQQVTZqAhYARHxPt2iJkm1Q",
          "placeId": "ChIJkQQVTZqAhYARHxPt2iJkm1Q",
          "text": {
            "text": "Asian Art Museum, Larkin Street, San Francisco, CA, USA",
            "matches": [
              {
                "startOffset": 6,
                "endOffset": 16
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "Asian Art Museum",
              "matches": [
                {
                  "startOffset": 6,
                  "endOffset": 16
                }
              ]
            },
            "secondaryText": {
              "text": "Larkin Street, San Francisco, CA, USA"
            }
          },
          "types": [
            "establishment",
            "museum",
            "point_of_interest"
          ]
        }
      },
      {
        "placePrediction": {
          "place": "places/ChIJI7NivpmAhYARSuRPlbbn_2w",
          "placeId": "ChIJI7NivpmAhYARSuRPlbbn_2w",
          "text": {
            "text": "de Young Museum, Hagiwara Tea Garden Drive, San Francisco, CA, USA",
            "matches": [
              {
                "endOffset": 15
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "de Young Museum",
              "matches": [
                {
                  "endOffset": 15
                }
              ]
            },
            "secondaryText": {
              "text": "Hagiwara Tea Garden Drive, San Francisco, CA, USA"
            }
          },
          "types": [
            "establishment",
            "point_of_interest",
            "tourist_attraction",
            "museum"
          ]
        }
      },
      /.../
    ]
  }

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

  curl -X POST -d '{
    "input": "Art museum",
    "locationRestriction": {
      "rectangle": {
        "low": {
          "latitude": 37.7751,
          "longitude": -122.4219
        },
        "high": {
          "latitude": 37.7955,
          "longitude": -122.3937
        }
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
  https://places.googleapis.com/v1/places:autocomplete

התוצאות מופיעות במערך suggestions:

  {
    "suggestions": [
      {
        "placePrediction": {
          "place": "places/ChIJkQQVTZqAhYARHxPt2iJkm1Q",
          "placeId": "ChIJkQQVTZqAhYARHxPt2iJkm1Q",
          "text": {
            "text": "Asian Art Museum, Larkin Street, San Francisco, CA, USA",
            "matches": [
              {
                "startOffset": 6,
                "endOffset": 16
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "Asian Art Museum",
              "matches": [
                {
                  "startOffset": 6,
                  "endOffset": 16
                }
              ]
            },
            "secondaryText": {
              "text": "Larkin Street, San Francisco, CA, USA"
            }
          },
          "types": [
            "point_of_interest",
            "museum",
            "establishment"
          ]
        }
      },
      {
        "placePrediction": {
          "place": "places/ChIJyQNK-4SAhYARO2DZaJleWRc",
          "placeId": "ChIJyQNK-4SAhYARO2DZaJleWRc",
          "text": {
            "text": "International Art Museum of America, Market Street, San Francisco, CA, USA",
            "matches": [
              {
                "startOffset": 14,
                "endOffset": 24
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "International Art Museum of America",
              "matches": [
                {
                  "startOffset": 14,
                  "endOffset": 24
                }
              ]
            },
            "secondaryText": {
              "text": "Market Street, San Francisco, CA, USA"
            }
          },
          "types": [
            "museum",
            "point_of_interest",
            "tourist_attraction",
            "art_gallery",
            "establishment"
          ]
        }
      }
    ]
  }

הטיית החיפוש לאזור מסוים באמצעות locationBias

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

curl -X POST -d '{
  "input": "Amoeba",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

התוצאות כוללות עכשיו הרבה יותר פריטים, כולל תוצאות מחוץ לרדיוס של 5,000 מטר:

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Haight Street, San Francisco, CA, USA"
          }
        },
        "types": [
          "electronics_store",
          "point_of_interest",
          "store",
          "establishment",
          "home_goods_store"
        ]
      }
    },
    {
      "placePrediction": {
        "place": "places/ChIJr7uwwy58hYARBY-e7-QVwqw",
        "placeId": "ChIJr7uwwy58hYARBY-e7-QVwqw",
        "text": {
          "text": "Amoeba Music, Telegraph Avenue, Berkeley, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Telegraph Avenue, Berkeley, CA, USA"
          }
        },
        "types": [
          "electronics_store",
          "point_of_interest",
          "establishment",
          "home_goods_store",
          "store"
        ]
      }
    },
    ...
  ]
}

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

  curl -X POST -d '{
    "input": "Amoeba",
    "locationBias": {
      "rectangle": {
        "low": {
          "latitude": 37.7751,
          "longitude": -122.4219
        },
        "high": {
          "latitude": 37.7955,
          "longitude": -122.3937
        }
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
  https://places.googleapis.com/v1/places:autocomplete

למרות שתוצאות החיפוש בתוך אזור התצוגה המלבני מופיעות בתשובה, חלק מהתוצאות נמצאות מחוץ לגבולות המוגדרים, בגלל הטיה. התוצאות מופיעות גם במערך suggestions:

  {
    "suggestions": [
      {
        "placePrediction": {
          "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
          "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
          "text": {
            "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "Amoeba Music",
              "matches": [
                {
                  "endOffset": 6
                }
              ]
            },
            "secondaryText": {
              "text": "Haight Street, San Francisco, CA, USA"
            }
          },
          "types": [
            "point_of_interest",
            "store",
            "establishment"
          ]
        }
      },
      {
        "placePrediction": {
          "place": "places/ChIJr7uwwy58hYARBY-e7-QVwqw",
          "placeId": "ChIJr7uwwy58hYARBY-e7-QVwqw",
          "text": {
            "text": "Amoeba Music, Telegraph Avenue, Berkeley, CA, USA",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "Amoeba Music",
              "matches": [
                {
                  "endOffset": 6
                }
              ]
            },
            "secondaryText": {
              "text": "Telegraph Avenue, Berkeley, CA, USA"
            }
          },
          "types": [
            "point_of_interest",
            "store",
            "establishment"
          ]
        }
      },
      {
        "placePrediction": {
          "place": "places/ChIJRdmfADq_woARYaVhnfQSUTI",
          "placeId": "ChIJRdmfADq_woARYaVhnfQSUTI",
          "text": {
            "text": "Amoeba Music, Hollywood Boulevard, Los Angeles, CA, USA",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "structuredFormat": {
            "mainText": {
              "text": "Amoeba Music",
              "matches": [
                {
                  "endOffset": 6
                }
              ]
            },
            "secondaryText": {
              "text": "Hollywood Boulevard, Los Angeles, CA, USA"
            }
          },
          "types": [
            "point_of_interest",
            "store",
            "establishment"
          ]
        }
      },
    /.../
    ]
  }

שימוש ב-includedPrimaryTypes

משתמשים בפרמטר includedPrimaryTypes כדי לציין עד חמישה ערכי סוג מתוך טבלה א', טבלה ב', או רק (regions), או רק (cities). כדי שמקום ייכלל בתשובה, הוא צריך להתאים לאחד מהערכים שצוינו לסוג הראשי.

בדוגמה הבאה, מציינים input מחרוזת של 'כדורגל' ומשתמשים בפרמטר includedPrimaryTypes כדי להגביל את התוצאות למקומות מסוג "sporting_goods_store":

curl -X POST -d '{
  "input": "Soccer",
  "includedPrimaryTypes": ["sporting_goods_store"],
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

אם לא מציינים את הפרמטר includedPrimaryTypes, התוצאות יכולות לכלול עסקים מסוג שלא רוצים, כמו "athletic_field".

חיזוי שאילתות של בקשות

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

curl -X POST -d '{
  "input": "Amoeba",
  "includeQueryPredictions": true,
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

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

שימוש במקור

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

curl -X POST -d '{
  "input": "Amoeba",
  "origin": {
    "latitude": 37.7749,
    "longitude": -122.4194
  },
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 37.7749,
        "longitude": -122.4194
      },
      "radius": 5000.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

התשובה כוללת עכשיו את distanceMeters:

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "placeId": "ChIJ5YQQf1GHhYARPKG7WLIaOko",
        "text": {
          "text": "Amoeba Music, Haight Street, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 6
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Amoeba Music",
            "matches": [
              {
                "endOffset": 6
              }
            ]
          },
          "secondaryText": {
            "text": "Haight Street, San Francisco, CA, USA"
          }
        },
        "types": [
          "home_goods_store",
          "establishment",
          "point_of_interest",
          "store",
          "electronics_store"
        ],
        "distanceMeters": 3012
      }
    }
  ]
}

חיפוש עסקים שייפתחו בעתיד

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

curl -X POST \
-H "Content-Type: application/json" \
-H "X-Goog-Api-Key: API_KEY" \
-d '{
  "input": "Roberts Greenhouse and Tree Farm",
  "includeFutureOpeningBusinesses": true,
  "locationBias": {
    "circle": {
      "center": {"latitude": 44.9755100, "longitude": -116.2842180},
      "radius": 20
    }
  }
}' \
"https://places.googleapis.com/v1/places:autocomplete"

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

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJp1-VoKWJplQRMz8g-7Wa3Do",
        "placeId": "ChIJp1-VoKWJplQRMz8g-7Wa3Do",
        "text": {
          "text": "Roberts Greenhouse and Tree Farm, McLain Street, New Meadows, ID, USA",
          "matches": [
            {
              "endOffset": 32
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Roberts Greenhouse and Tree Farm",
            "matches": [
              {
                "endOffset": 32
              }
            ]
          },
          "secondaryText": {
            "text": "McLain Street, New Meadows, ID, USA"
          }
        },
        "types": [
          "garden_center",
          "establishment",
          "service",
          "store",
          "point_of_interest"
        ]
      }
    }
  ]
}

המרחק חסר בתשובה

במקרים מסוימים, הערך distanceMeters חסר בגוף התשובה, גם אם הערך origin נכלל בבקשה. זה יכול לקרות בתרחישים הבאים:

  • התכונה distanceMeters לא נכללת בתחזיות של route.
  • הערך distanceMeters לא נכלל כשהערך שלו הוא 0, כמו במקרה של תחזיות שמרחקן ממיקום origin שצוין הוא פחות ממטר אחד.

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

אופטימיזציה של השלמה אוטומטית (חדש)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

כן

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

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

לא

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

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

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

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

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

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

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


  1. למידע על העלויות, קראו את המחירונים של Google Maps Platform.

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

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

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

הטיית מיקום

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

הגבלת מיקום

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

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

רוצה לנסות?

‫APIs Explorer מאפשר לכם לשלוח בקשות לדוגמה כדי להכיר את ה-API ואת האפשרויות שלו.

  1. בצד שמאל של הדף, לוחצים על סמל ה-API‏ api.

  2. אפשר לערוך את הפרמטרים של הבקשה.

  3. לוחצים על הכפתור Execute. בתיבת הדו-שיח, בוחרים את החשבון שבו רוצים להשתמש כדי לשלוח את הבקשה.

  4. בחלונית APIs Explorer, לוחצים על סמל המסך המלא מסך מלא כדי להרחיב את החלון של APIs Explorer.