Individuelle Anleitung erstellen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
- 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.
- 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.
- 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:
- Implementieren Sie reine Textfelder für das einfache Spiegeln von Wegbeschreibungen.
- Felder für Ihre eigene Benutzeroberfläche entwerfen und ausfüllen
- 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`];
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-09-04 (UTC).
[null,null,["Zuletzt aktualisiert: 2025-09-04 (UTC)."],[[["\u003cp\u003eCreate custom turn-by-turn navigation experiences on iOS by establishing an independent navigation session using \u003ccode\u003eGMSNavigationServices\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eImplement the \u003ccode\u003eGMSNavigatorListener\u003c/code\u003e protocol to receive and utilize detailed guidance information for your custom UI elements.\u003c/p\u003e\n"],["\u003cp\u003eUtilize a road-snapped location provider for continuous location updates and accurate positioning on the route.\u003c/p\u003e\n"],["\u003cp\u003eSet up a navigation simulator for development and testing purposes to ensure the functionality of your custom navigation experience.\u003c/p\u003e\n"],["\u003cp\u003eTransition seamlessly from a custom navigation experience to the full Google Maps navigation experience, optionally sharing the existing map instance.\u003c/p\u003e\n"]]],["The core process involves creating a navigation session independently using `GMSNavigationService.createNavigationSession`, distinct from route navigation. A road-snapped location provider is established for continuous monitoring. Implement `GMSNavigatorListener` to set up turn-by-turn guidance, translating the information into your app's custom navigation UI. Set up a navigation simulator for testing. The navigation session persists until the last reference is removed. A custom experience can also be transition to the default google navigation experience.\n"],null,["# Create customized guidance\n\nThis page covers the high-level steps you follow to create customized guidance\nas part of a [custom navigation\nexperience](/maps/documentation/navigation/ios-sdk/intro-custom-nav). \n**This process differs from the process described in\n[Navigate a\nroute](/maps/documentation/navigation/ios-sdk/route) as follows:**\n\n- You first establish a navigation session independently and obtain a navigator instance through the session rather than by calling the view controller.\n- You set up an event listener to respond to and manage navigation events.\n\n1. **Create a navigation session** using [`GMSNavigationService.createNavigationSession`](/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationServices#+createnavigationsession) and begin navigation with a `setDestination` call. Where the Google navigation experience invokes the navigator through the navigation map view, the `GMSNavigationServices` controls and receives a stream of events from a navigation session *independently* from a UI instance. This means it can either run without a UI, or get passed to *any* UI-based experience. With this approach, the navigation session continues to run in your app until the last reference is removed from it.\n2. **Establish a road-snapped location provider**. Use the location provider if you want your app to have continuous location monitoring, such as when displaying a navigation view with a blue dot along the route.\n3. **Set up a listener for detailed turn-by-turn guidance** by implementing the `GMSNavigatorListener` protocol. Then, transform that information into whatever is needed for your custom navigation experience. For example:\n 1. Implement text-only fields for simple screen casting of directions.\n 2. Design and populate fields for your own UI.\n4. **Set up a navigation simulator**. This is necessary for development and testing.\n\nCreate an independent navigation session\n----------------------------------------\n\nThe following code snippet from the demo shows navigation established\nindependently from the view controller. The code then adds an overview map\nconfigured to show the current road-snapped location. \n\n // Create the navigation session.\n\n _navigationSession = [GMSNavigationServices createNavigationSession];\n GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =\n _navigationSession.roadSnappedLocationProvider;\n [roadSnappedLocationProvider startUpdatingLocation];\n GMSNavigator *navigator = _navigationSession.navigator;\n [navigator addListener:self];\n navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;\n navigator.sendsBackgroundNotifications = NO;\n _navigationSession.started = YES;\n [navigator setDestinations:@[ destination ]\n callback:^(GMSRouteStatus routeStatus) {\n // ...handle changes in route status.\n }];\n\n // Add an overview map.\n _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];\n [self.mainStackView addArrangedSubview:_mapView];\n [self.mainStackView setNeedsLayout];\n _mapView.settings.compassButton = YES;\n _mapView.delegate = self;\n _mapView.myLocationEnabled = YES;\n _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;\n\nPassing navigation from a custom experience to the Google experience\n--------------------------------------------------------------------\n\nThis code snippet illustrates how your app can allow the user to enter the\nGoogle navigation experience from a custom navigation experience. This code\nsnippet also shows how your app makes this transition while sharing the map. \n\n `UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];\n\n [`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)\n forControlState:[_directionsButton addTarget:self`];\n\n `...`\n\n [`_mapView enableNavigationWithSession:_navigationSession`];"]]