ניתוב לנקודות ניווט

‫Navigation SDK ל-iOS מציע דרכים משופרות לציין נקודות ציון או נקודות ניווט, וכך מספק מסלולים מדויקים יותר וחוויית הגעה טובה יותר, במיוחד ליעדים עם כמה כניסות או נקודות ניווט ספציפיות. אפשר לנווט למיקומים מדויקים באמצעות navigationPointToken, מחרוזת שמקודדת מיקום והקשר נוסף של המסלול. כדי להוסיף הקשר, אתם יכולים גם לשלב קואורדינטות של קווי רוחב ואורך עם מזהה מקום.

רקע

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

האפשרויות המשופרות של נקודות הדרך מאפשרות לכם לספק הקשר נוסף.

שימוש בטוקן של נקודת ניווט

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

כדי לקבל את הטוקן הזה, צריך להפעיל את ה-method‏ Destinations ב-Geocoding API. הוא מייצג נקודת ניווט ספציפית שניתן לנתב אליה, שמשויכת למקום.

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

  1. מקבלים navigationPointToken מהתגובה של ה-method ‏Destinations ב-Geocoding API.

  2. צריך לציין את navigationPointToken כשיוצרים GMSNavigationWaypoint.

Swift

// Create a waypoint using a navigation endpoint token
let waypointTwo = GMSNavigationWaypoint(
  navigationPointToken: "ChIJALijSXPhQkARHmIozCCbXsASEgkFVjYHGH6PgBFrbM7wl3..",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypointTwo]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

GMSNavigationWaypoint *waypointTwo =
    [[GMSNavigationWaypoint alloc] initWithNavigationPointToken:@"sampleNavigationPointToken"
                                                          title:@"Sydney Opera House"];

שימוש באסימונים של נקודות ניווט ובאסימונים של מסלולים

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

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

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

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

תרשים של תרחיש לדוגמה של נסיעה שיתופית או משלוח
תרשים של תרחיש לדוגמה של נסיעה שיתופית או משלוח

שילוב של מזהה המקום והמיקום

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

Swift

// Create a waypoint using both the latlng and placeID
let waypoint = GMSNavigationWaypoint(
  location: CLLocationCoordinate2DMake(-33.85657945261524, 151.21535034203333),  
  placeID: "ChIJ3S-JXmauEmsRUcIaWtf4MzE",
  title: "Sydney Opera House")

// Route to the waypoint
navigator.setDestinations([waypoint]) { [weak self] routeStatus in
   self?.handleRouteCallback(status: routeStatus)
}

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint = [[GMSNavigationWaypoint alloc] initWithLocation:placeID:coordinate title:@"waypoint from location and placeiD"];

שיקולים:

כשמציינים גם את placeID וגם את location:

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

סיכום של הגדרות תקינות של נקודות ציון

מפרט location placeID navigationPointToken התנהגות הניתוב הדגשת היעד
רק קואורדינטות של מיקום הוגדר לא קיים לא קיים מסלולים למקטע הכביש הקרוב ביותר לקואורדינטות שהוגדרו מוצג אם אפשר להסיק את היעד ברמת סבירות גבוהה
מזהה מקום בלבד לא קיים הוגדר לא קיים מסלולים לנקודת הניווט שמוגדרת כברירת מחדל למזהה המקום מזהה המקום של מיקום היציאה
רק אסימון של נקודת ניווט לא קיים לא קיים הוגדר מסלולים לנקודת הניווט המדויקת שמיוצגת על ידי הטוקן מנקודת המוצא שהוגדרה בבקשה המקורית של השיטה destinations ב-Geocoding API
שילוב של קואורדינטות מיקום ומזהה מקום se הוגדר לא קיים מסלולים למקטע הכביש הקרוב ביותר לקואורדינטות שהוגדרו ממזהה המקום, אבל לא מוצג אם מזהה המקום רחוק מדי מהקואורדינטות של קו הרוחב/האורך