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

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

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

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

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

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

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

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

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

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

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

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

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

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

כדי להגדיר מיקום בנקודת ציון, מציינים את Location (REST) או את Location(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 מקודד באופן פנימי את המחרוזת כדי להמיר אותה לקואורדינטות של קו רוחב וקו אורך.

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

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

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

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

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

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

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

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

{
  []
}

אפשר להגדיר את ה-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",
      ...
    }
  ]
}

ציון מיקום כ-Plus Code

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

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

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

ניתן להשתמש ב-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 תומכים ב-Plus Codes, כולל השלמה אוטומטית של מקום, פרטי מקום, Directions API ו-Geocoding API. לדוגמה, אפשר להשתמש ב-Geocoding API כדי להפוך את הקידוד הגיאוגרפי של מיקום שצוין באמצעות קואורדינטות של קו רוחב או קו אורך, וכך לזהות את ה-Plus Code של המיקום.