ציון מיקומים למסלול

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

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

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

ציון מיקומים למסלול

כדי לייצג מיקום, יוצרים אובייקט Waypoint (REST) או Waypoint (gRPC). בהגדרת נקודת הציון, אפשר לציין מיקום באחת מהדרכים הבאות:

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

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

  • שימוש בקואורדינטות של קו רוחב/קו אורך יכול לגרום לכך שהמיקום יוצמד לכביש הקרוב ביותר לקואורדינטות האלה – וייתכן שהכביש הזה לא יהיה נקודת גישה לנכס, או אפילו כביש שמוביל במהירות או בבטחה ליעד.
  • קודם צריך לבצע גיאו-קידוד של מחרוזות כתובות באמצעות Routes API כדי להמיר אותן לקואורדינטות של קווי אורך ורוחב, ורק אחר כך אפשר לחשב מסלול. ההמרה הזו יכולה להשפיע על הביצועים.

ציון מיקום כמזהה מקום

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

אפשר לאחזר מזהי מקומות מ-Geocoding API ומ-Places API (חדש) (כולל Autocomplete (חדש)). מידע נוסף על מזהי מקומות זמין במאמר סקירה כללית על מזהי מקומות.

בדוגמה הבאה, המאפיין placeId משמש להעברת מזהה מקום גם ל-origin וגם ל-destination:

{
  "origin":{
    "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o"
  },
  "destination":{
    "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU"
  },
  ...
}

ציון מיקום באמצעות קואורדינטות של קו רוחב וקו אורך

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

לדוגמה, אפשר לציין נקודת עצירה במסלול origin ו-destination באמצעות קואורדינטות latitude ו-longitude:

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
...
}

ציון מיקום כמחרוזת כתובת

מחרוזות כתובת הן כתובות מילוליות שמיוצגות על ידי מחרוזת (למשל '1600 Amphitheatre Parkway, Mountain View, CA'). גיאו-קידוד הוא תהליך של המרת מחרוזת כתובת לקואורדינטות של קווי רוחב ואורך (למשל, קו רוחב 37.423021 וקו אורך ‎-122.083739).

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

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

{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "450 Serra Mall, Stanford, CA 94305, USA"
  },
  ...
}

בדוגמה הזו, ה-Routes API ממיר את שתי הכתובות לקואורדינטות של קו רוחב וקו אורך.

אם ערך הכתובת לא ברור, יכול להיות ש-Routes API יפעיל חיפוש כדי להבהיר את הכתובת מבין כתובות דומות. לדוגמה, הערך 'רחוב 1' יכול להיות ערך מלא או חלקי של 'רחוב 1 צפון מזרח' או 'רחוב 1 דרום מזרח'. התוצאה הזו עשויה להיות שונה מהתוצאה שמוחזרת על ידי Geocoding API. כדי להימנע מפרשנויות שגויות, אפשר להשתמש במזהי מקומות.

הגדרת האזור של הכתובת

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

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE"
}

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

{
  []
}

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

בקשה לקבלת הוראות הגעה מ-Toledo למדריד שכוללת את הפרמטר regionCode מחזירה תוצאות מתאימות כי המערכת מפרשת את Toledo כעיר בספרד:

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE",
  "regionCode": "es"
}

התשובה מכילה עכשיו את המסלול שחושב מטולדו, ספרד למדריד, ספרד:

{
  "routes": [
    {
      "distanceMeters": 75330,
      "duration": "4137s",
      ...
    }
  ]
}

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

אפשר לקבל אסימון של נקודת ניווט על ידי קריאה ל-method Destinations של Geocoding API.

כדי לציין אסימון של נקודת ניווט:

  1. מקבלים navigationPointToken מה-method ‏SearchDestinations של Geocoding API. מידע נוסף זמין במאמרי העזרה של Geocoding API.
  2. כדי ליצור נקודת ציון, מעבירים את navigationPointToken.

בדוגמה הבאה, המאפיין navigation_point_token משמש להעברת טוקן של נקודת ניווט גם ל-origin וגם ל-destination:

{
  "origin":{
    "navigation_point_token": "ENCODED_NAVIGATION_POINT_TOKEN_FOR_ORIGIN"
  },
  "destination":{
    "navigation_point_token": "ENCODED_NAVIGATION_POINT_TOKEN_FOR_DESTINATION"
  },
  ...
}

ציון מיקום באמצעות Plus Code

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

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

‫Google פיתחה את Plus Codes כדי שכולם יוכלו ליהנות מהיתרונות של כתובות. ‫Plus Code הוא הפניה מקודדת למיקום, שנגזרת מקואורדינטות של קו רוחב/קו אורך ומייצגת אזור: 1/8,000 של מעלה על 1/8,000 של מעלה (בערך 14 מ' על 14 מ' בקו המשווה) או פחות. אפשר להשתמש בקודי פלוס במקום בכתובות רחוב במקומות שבהם אין כתובות רחוב, או במקומות שבהם הבניינים לא ממוספרים או הרחובות לא נקראים בשם.

הפורמט של Plus Codes צריך להיות קוד גלובלי או קוד משולב:

  • קוד גלובלי מורכב מקוד אזור בן 4 תווים ומקוד מקומי בן 6 תווים או יותר.

    לדוגמה, עבור הכתובת "1600 Amphitheatre Parkway, Mountain View, CA", הקוד הגלובלי הוא "849V" והקוד המקומי הוא "CWC8+R9". לאחר מכן, משתמשים ב-Plus Code המלא בן 10 התווים כדי לציין את ערך המיקום בתור "849VCWC8+R9".

  • קוד מורכב מורכב מקוד מקומי באורך 6 תווים או יותר, בשילוב עם מיקום מפורש.

    לדוגמה, לכתובת "450 Serra Mall, Stanford, CA 94305, USA" יש קוד מקומי של "CRHJ+C3". אם הכתובת מורכבת, צריך לשלב את הקוד המקומי עם העיר, המדינה, המיקוד והמדינה שמופיעים בכתובת, בפורמט 'CRHJ+C3 Stanford, CA 94305, USA'.

    לדוגמה, כדי לחשב מסלול על ידי ציון ציון דרך למסלול origin וdestination באמצעות Plus Codes:

    {
      "origin":{
        "address": "849VCWC8+R9"
      },
      "destination":{
        "address": "CRHJ+C3 Stanford, CA 94305, USA"
      },
      "travelMode": "DRIVE"
    }

קודי פלוס נתמכים בממשקי API של Google Maps Platform, כולל השלמה אוטומטית (חדש), Place Details (חדש) ו-Geocoding API. לדוגמה, אפשר להשתמש ב-Geocoding API כדי לבצע המרת קואורדינטות לכתובות (reverse geocoding) למיקום שמוגדר באמצעות קואורדינטות של קו רוחב וקו אורך, כדי לקבוע את ה-Plus Code של המיקום.