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

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

רקע

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

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

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

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

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

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

  1. מקבלים navigationPointToken מהתגובה של ה-method ‏SearchDestinations של 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, להשתמש בו בבקשת API ל-Routes API כדי לקבל טוקן של מסלול, ואז להעביר רק את הטוקן של המסלול ל-Navigation SDK. האסימון של המסלול שומר על הדיוק של האסימון של נקודת הניווט. האפשרות הזו שימושית בתרחישים כמו נסיעה שיתופית או משלוח, שבהם אתם משתמשים ב-Routes API כדי לחשב את מחיר הנסיעה ואתם רוצים את הדיוק של אסימון נקודת הניווט.

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

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

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

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

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

החל מגרסה 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
שילוב של קואורדינטות מיקום ומזהה מקום הוגדר הוגדר לא נוכח מסלולים למקטע הכביש הקרוב ביותר לקואורדינטות שהוגדרו ממזהה המקום, אבל לא מוצג אם מזהה המקום רחוק מדי מהקואורדינטות של קו הרוחב/קו האורך