Individuelle Anleitung erstellen

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

Dieser Vorgang unterscheidet sich vom Vorgang, der unter Routen planen beschrieben wird, wie folgt:

  • Sie richten zuerst unabhängig eine Navigationssitzung ein und rufen eine Navigator-Instanz über die Sitzung ab, anstatt den Viewcontroller aufzurufen.
  • Sie richten einen Event-Listener ein, um auf Navigationsereignisse zu reagieren und sie zu verwalten.
  1. Navigationssitzung erstellen mit GMSNavigationService.createNavigationSession und Navigation mit einem setDestination-Aufruf starten. Während bei der Google-Navigation der Navigator über die Navigationskartenansicht aufgerufen wird, steuert GMSNavigationServices eine Navigationssitzung unabhängig von einer UI-Instanz und empfängt einen Stream von Ereignissen aus dieser Sitzung. Das bedeutet, dass sie entweder ohne Benutzeroberfläche ausgeführt oder an eine beliebige UI-basierte Funktion übergeben werden kann. Bei diesem Ansatz wird die Navigationssitzung in Ihrer App fortgesetzt, bis die letzte Referenz daraus entfernt wird.
  2. An Straßen ausgerichteten Standortanbieter einrichten Verwenden Sie den Standortanbieter, wenn Ihre App eine kontinuierliche Standortüberwachung benötigt, z. B. wenn eine Navigationsansicht mit einem blauen Punkt entlang der Route angezeigt wird.
  3. Richten Sie einen Listener für detaillierte Abbiegehinweise ein, indem Sie das GMSNavigatorListener-Protokoll implementieren. Wandeln Sie diese Informationen dann in das um, was für Ihre benutzerdefinierte Navigation erforderlich ist. Beispiel:
    1. Implementieren Sie reine Textfelder für das einfache Spiegeln von Wegbeschreibungen.
    2. Felder für Ihre eigene Benutzeroberfläche entwerfen und ausfüllen
  4. Navigationssimulator einrichten Dies ist für die Entwicklung und das Testen erforderlich.

Unabhängige Navigationssitzung erstellen

Das folgende Code-Snippet aus der Demo zeigt, wie die Navigation unabhängig vom View-Controller eingerichtet wird. Anschließend wird eine Übersichtskarte hinzugefügt, die so konfiguriert ist, dass der aktuelle Standort auf der Straße 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 Google übergeben

In diesem Code-Snippet wird veranschaulicht, wie Ihre App es dem Nutzer ermöglichen kann, von einer benutzerdefinierten Navigationsfunktion zur Google-Navigation zu wechseln. In diesem Code-Snippet sehen Sie auch, wie Ihre App diesen Übergang beim Teilen der Karte durchführt.

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

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

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];