Individuelle Anleitung erstellen

Auf dieser Seite werden die allgemeinen Schritte beschrieben, die Sie ausführen müssen, um benutzerdefinierte Anleitungen als Teil einer benutzerdefinierten Navigation zu erstellen.

Dieser Vorgang unterscheidet sich vom Vorgang, der unter Eine Route befahren beschrieben wird, folgendermaßen:

  • Sie stellen zuerst unabhängig eine Navigationssitzung her und erhalten eine Navigations-Instanz über die Sitzung, anstatt den View Controller aufzurufen.
  • Sie richten einen Ereignis-Listener ein, um auf Navigationsereignisse zu reagieren und sie zu verwalten.
  1. Erstelle eine Navigationssitzung mit GMSNavigationService.createNavigationSession und starte die Navigation mit einem setDestination-Aufruf. Wenn die Google-Navigation den Navigator über die Navigationskartenansicht aufruft, steuert und empfängt GMSNavigationServices einen Ereignisstream aus einer Navigationssitzung unabhängig von einer UI-Instanz. Das bedeutet, dass es entweder ohne Benutzeroberfläche ausgeführt oder an beliebige UI-basierte Umgebungen übergeben werden kann. Bei diesem Ansatz wird die Navigationssitzung in Ihrer App so lange ausgeführt, bis die letzte Referenz daraus entfernt wurde.
  2. Einen Anbieter für an Straßen ausgerichtete Standorte festlegen Verwenden Sie den Standortanbieter, wenn Ihre App kontinuierlich die Standortermittlung nutzen soll, z. B. wenn eine Navigationsansicht mit einem blauen Punkt entlang der Route angezeigt wird.
  3. Richten Sie einen Listener für detaillierte Schritt-für-Schritt-Anweisungen ein, indem Sie das GMSNavigatorListener-Protokoll implementieren. Transformieren Sie diese Informationen dann in alles, was für Ihre benutzerdefinierte Navigation erforderlich ist. Beispiel:
    1. Implementieren Sie reine Textfelder für die einfache Übertragung von Wegbeschreibungen auf den Bildschirm.
    2. Felder für Ihre eigene Benutzeroberfläche entwerfen und befüllen
  4. Richten Sie einen Navigationssimulator ein. Dies ist für die Entwicklung und Tests erforderlich.

Unabhängige Navigationssitzung erstellen

Das folgende Code-Snippet aus der Demo zeigt die Navigation, die unabhängig vom View Controller eingerichtet wurde. Im Code wird dann eine Übersichtskarte hinzugefügt, die so konfiguriert ist, dass der aktuelle an Straßen ausgerichtete Standort angezeigt wird.

// 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;

Navigation von einer benutzerdefinierten Umgebung an die Google-Umgebung übergeben

In diesem Code-Snippet wird veranschaulicht, wie Nutzer in Ihrer App über eine benutzerdefinierte Navigationsoberfläche zur Google-Navigation gelangen können. Dieses Code-Snippet zeigt auch, wie Ihre App diesen Übergang beim Freigeben der Karte vornimmt.

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

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

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];