כדי לחשב מסלול, צריך לציין לפחות את מיקום נקודת המוצא ומיקום היעד של המסלול. אתם מגדירים את המיקומים האלה כנקודות ציון במסלול.
בנוסף לנקודת המוצא וליעד, אפשר לציין סוגים שונים של נקודות ציון ואיך לטפל בנקודות ציון במסלול. למידע נוסף ולדוגמאות, אפשר לעיין בנושאים הבאים:
- הגדרת כיוון הנסיעה של הרכב והצד של הכביש
- הוספת נקודות ציון דרך
- הוספת עצירה במהלך המסלול
- הגדרת נקודה למעבר במסלול
- אופטימיזציה של סדר העצירות במסלול
ציון מיקומים למסלול
כדי לייצג מיקום, יוצרים אובייקט Waypoint (REST) או Waypoint (gRPC). בהגדרת נקודת הציון אפשר לציין מיקום באחת מהדרכים הבאות:
- מזהה מקום (מומלץ)
- קואורדינטות של קו רוחב/אורך
- מחרוזת כתובת ("Chicago, IL" או "Darwin, NT, Australia")
- Plus Code
אפשר לציין מיקומים לכל נקודות הדרך בבקשה באותה הדרך, או לשלב בין הדרכים. לדוגמה, אפשר להשתמש בקואורדינטות של קו אורך וקו רוחב לנקודת המוצא, ובמזהה מקום לנקודת היעד.
כדי לשפר את היעילות והדיוק, מומלץ להשתמש במזהי מקומות במקום בקואורדינטות של קו רוחב וקו אורך או במחרוזות של כתובות. מזהי מקומות הם ייחודיים וספציפיים, והם מספקים יתרונות בגיאו-קידוד לניתוב, כמו נקודות גישה ומשתני תנועה. הם עוזרים להימנע מהמצבים הבאים שיכולים לנבוע מדרכים אחרות לציון מיקום:
- שימוש בקואורדינטות של קווי אורך ורוחב עלול לגרום למיקום להיות צמוד לכביש הקרוב ביותר לקואורדינטות האלה – יכול להיות שזה לא יהיה שער הכניסה לנכס, או אפילו כביש שמוביל ליעד במהירות או בבטחה.
- לפני ש-Routes API יכול לחשב מסלול, הוא צריך לבצע גיאו-קידוד של מחרוזות כתובות כדי להמיר אותן לקואורדינטות של קווי אורך ורוחב. ההמרה הזו יכולה להשפיע על הביצועים.
ציון מיקום באמצעות מזהה מקום
אפשר להשתמש במזהה מקום כדי לציין את המיקום של נקודת ציון. מכיוון שקואורדינטות של קווי רוחב ואורך מוצמדות לכבישים, יכול להיות שמזהה מקום יניב תוצאות טובות יותר בנסיבות מסוימות.
אפשר לאחזר מזהי מקומות מ-Geocoding API ומ-Places API (כולל Place 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 מבצע גיאו-קידוד של המחרוזת באופן פנימי כדי להמיר אותה לקואורדינטות של קו רוחב וקו אורך.
לדוגמה, כדי לחשב מסלול, מציינים נקודת ציון למסלול origin
ו-destination
באמצעות מחרוזות של כתובות:
{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "450 Serra Mall, Stanford, CA 94305, USA" }, ... }
בדוגמה הזו, ה-API של מסלולים מבצע קידוד גיאוגרפי של שתי הכתובות כדי להמיר אותן לקואורדינטות של קו רוחב וקו אורך.
אם ערך הכתובת לא ברור, יכול להיות ש-Routes API יפעיל חיפוש כדי להבחין בין כתובות דומות. לדוגמה, 'רחוב 1' יכול להיות ערך מלא או ערך חלקי של 'רחוב 1 צפון מזרח' או 'רחוב 1 דרום מזרח'. התוצאה הזו עשויה להיות שונה מהתוצאה שמוחזרת על ידי Geocoding API. כדי להימנע מפרשנויות שגויות, אפשר להשתמש במזהי מקומות.
הגדרת האזור של הכתובת
אם מעבירים מחרוזת כתובת לא מלאה כמיקום של נקודת ציון, יכול להיות שה-API ישתמש בקואורדינטות שגויות של קו רוחב וקו אורך שגובשו באמצעות קידוד גיאוגרפי. לדוגמה, אם שולחים בקשה שבה מצוין 'טולדו' כנקודת המוצא ו'מדריד' כיעד של מסלול נסיעה:
{ "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", ... } ] }
בחירת מיקום באמצעות Plus Code
להרבה אנשים אין כתובת מדויקת, ולכן יכול להיות שיהיה להם קשה לקבל משלוחים. לחלופין, אנשים עם כתובת עשויים להעדיף לקבל משלוחים במיקומים ספציפיים יותר, כמו כניסה אחורית או רציף טעינה.
קודי OLC הם כמו כתובות של רחובות, והם מיועדים לאנשים או למקומות שאין להם כתובת אמיתית. במקום כתובות עם שמות ומספרים של רחובות, קודי OLC מבוססים על קואורדינטות של קווי רוחב ואורך, ומוצגים כמספרים ואותיות.
Google פיתחה את Plus Codes כדי שכולם יוכלו ליהנות מהיתרונות של כתובות. קוד פלוס הוא הפניה למיקום מקודד, שנגזר מקואורדינטות של קו אורך וקו רוחב, שמייצגות אזור: 1/8000 של מעלה על 1/8000 של מעלה (בערך 14 מ' על 14 מ' בקו המשווה) או קטן יותר. אפשר להשתמש ב-Plus Codes במקום בכתובות של רחובות במקומות שבהם אין כתובות כאלה, או במקומות שבהם הבניינים לא ממוספרים או שהרחובות לא נקראים בשם.
הפורמט של Plus Codes חייב להיות קוד גלובלי או קוד מורכב:
- קוד גלובלי מורכב מקוד אזור בן 4 תווים ומקוד מקומי בן 6 תווים או יותר.
לדוגמה, לכתובת "1600 Amphitheatre Parkway, Mountain View, CA", הקוד הגלובלי הוא "849V" והקוד המקומי הוא "CWC8+R9". לאחר מכן משתמשים ב-OLC המלא בן 10 התווים כדי לציין את ערך המיקום כ-849VCWC8+R9.
- קוד מורכב מורכב מקוד מקומי באורך 6 תווים או יותר, בשילוב עם מיקום ספציפי.
לדוגמה, הכתובת "450 Serra Mall, Stanford, CA 94305, USA" כוללת קוד מקומי של "CRHJ+C3". אם הכתובת מורכבת, משלבים את הקוד המקומי עם העיר, המדינה, המיקוד והמדינה בחלק של הכתובת, בצורה 'CRHJ+C3 סטנפורד, קליפורניה 94305, ארה"ב'.
לדוגמה, כדי לחשב מסלול באמצעות ציון נקודת ביניים במסלול
origin
ו-destination
באמצעות Plus Codes:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
קודי פלוס נתמכים בממשקי Google Maps Platform API, כולל השלמה אוטומטית של מקומות, פרטי מקום, Directions API (גרסה קודמת) ו-Geocoding API. לדוגמה, אפשר להשתמש ב-Geocoding API כדי לבצע קידוד גאוגרפי הפוך של מיקום שצוין באמצעות קואורדינטות של קו רוחב וקו אורך, כדי לקבוע את ה-Plus Code של המיקום.