יצירת הדרכה מותאמת אישית

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

התהליך הזה שונה מהתהליך שמתואר בקטע ניווט במסלול באופן הבא:

  • תחילה יוצרים סשן ניווט באופן עצמאי ומקבלים מופע של 'ניווט' במהלך הסשן במקום להפעיל את בקר התצוגה.
  • אתם מגדירים האזנה לאירועים שמגיבים לאירועי ניווט ומנהלים אותם.
  1. יוצרים סשן ניווט באמצעות GMSNavigationService.createNavigationSession ומתחילים לנווט באמצעות קריאת setDestination. כאשר חוויית הניווט של Google מפעילה את הניווט דרך תצוגת מפת הניווט, GMSNavigationServices שולטת ומקבלת רצף של אירועים מסשן ניווט בנפרד ממופע של ממשק משתמש. כלומר, הוא יכול לפעול בלי ממשק משתמש, או להעביר אותו לכל גרסה שמבוססת על ממשק המשתמש. בגישה הזו, סשן הניווט ממשיך לרוץ באפליקציה עד שההפניה האחרונה תוסר.
  2. ליצור ספק מיקום שנתפס על ידי כביש. אפשר להשתמש בספק המיקום אם רוצים שלאפליקציה יהיה ניטור רציף של המיקום, למשל כשמציגים תצוגת ניווט עם נקודה כחולה לאורך המסלול.
  3. מגדירים האזנה להדרכה מפורטת עם מסלול מפורט על ידי הטמעת הפרוטוקול GMSNavigatorListener. לאחר מכן תוכלו להפוך את המידע הזה לכל מה שנחוץ לכם מחוויית הניווט המותאמת אישית. לדוגמה:
    1. הטמעת שדות טקסט בלבד להפעלת Cast פשוטה של מסלולים במסך.
    2. עיצוב ואכלוס שדות לממשק המשתמש.
  4. מגדירים סימולטור ניווט. זה הכרחי לפיתוח ובדיקה.

יצירת סשן ניווט עצמאי

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

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

איך מעבירים את הניווט מחוויית משתמש מותאמת אישית לממשק של Google

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

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];