חישוב סיכום ניתוב

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

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

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

שימוש בחיפוש טקסט (חדש)

בבקשה הבאה, מחשבים את משך הנסיעה ואת המרחק לכל מקום בתשובה של Text Search (New):

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

התגובה כוללת שני מערכי JSON: המערך places מכיל את המקומות התואמים, והמערך routingSummaries מכיל את משך הנסיעה ואת המרחק לכל מקום:

{
  "places": [
    {
      object (Place)
    }
  ]
  "routingSummaries": [
    {
      object (RoutingSummary)
    }
}

כל רכיב במערך routingSummaries נמצא במיקום המערך התואם למיקום שלו במערך places. כלומר, הרכיב ב-routingSummaries[0] תואם למקום ב-places[0].

אורך המערך של routingSummaries זהה לאורך המערך של places. אם הערך של routingSummary לא זמין למקום מסוים, הערך של המערך יהיה ריק.

מכיוון שבדוגמה הזו מחושבים משך הזמן והמרחק ממקור הניתוב לכל מקום, השדה routingSummaries.legs בתגובה מכיל אובייקט Leg יחיד שמכיל את הערכים duration ו-distanceMeters ממקור הניתוב ועד למקום.

{
  "places": [
    {
      "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Gözleme King Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    
  ]
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "597s",
          "distanceMeters": 2607
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0"
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0"
    },
   
  ]
}

בדוגמה הזו אפשר לראות שהמשך והמרחק ממקור הניתוב למקום הראשון בתוצאות הם 597 שניות ו-2, 607 מטרים.

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

  curl -X POST -d '{
    "includedTypes": ["restaurant"],
    "maxResultCount": 10,
    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": -33.8688,
          "longitude": 151.1957362},
        "radius": 500.0
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": -33.8688,
        "longitude": 151.1957362
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \
  -H "X-Goog-FieldMask: places.displayName,routingSummaries" \
  https://places.googleapis.com/v1/places:searchNearby

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

ציון אפשרויות הנסיעה

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

  • משתמשים בפרמטר routingParameters.travelMode כדי להגדיר את אופן התחבורה ל-DRIVE, BICYCLE, WALK או TWO_WHEELER. למידע נוסף על האפשרויות האלה, ראו סוגי כלי רכב זמינים למסלולים.

  • משתמשים במאפיין routingParameters.routingPreference כדי להגדיר את אפשרות העדפת הניתוב ל-TRAFFIC_UNAWARE (ברירת המחדל), ל-TRAFFIC_AWARE או ל-TRAFFIC_AWARE_OPTIMAL. לכל אפשרות יש רמות שונות של איכות נתונים וזמן אחזור. מידע נוסף זמין במאמר הגדרת האופן שבו נתוני התנועה ייכללו, ואם ייכללו.

    המאפיין routingParameters.routingPreference משפיע על המסלולים שמופיעים בשדה directionsUri בתצוגה המקדימה (לפני השקה גורסת), כי מפות Google מציגות אפשרויות תנועה כשהקישור נפתח.

  • משתמשים במאפיין routingParameters.routeModifiers כדי לציין את הערכים avoidTolls,‏ avoidHighways,‏ avoidFerries ו-avoidIndoor. מידע נוסף על האפשרויות האלה זמין במאמר ציון תכונות של מסלולים שרוצים להימנע מהן.

בדוגמה הבאה, מציינים את מצב הנסיעה בתור DRIVE ומבקשים להימנע מכבישים מהירים:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    },
    "travelMode":"DRIVE",
    "routeModifiers": {
      "avoidHighways": true
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'