Folgen Sie dieser Anleitung, um in Ihrer App eine Route zu einem einzelnen Ziel zu planen, mithilfe des Navigation SDK für iOS.
Übersicht
- Integrieren Sie das Navigation SDK wie beschrieben in Ihre App. im Bereich Projekt einrichten.
- Konfigurieren Sie eine
GMSMapView
. - Nutzer auffordern, die Nutzungsbedingungen zu akzeptieren und den Standort zu autorisieren und Hintergrundbenachrichtigungen.
- Erstellen Sie ein Array, das ein oder mehrere Ziele enthält.
Definieren Sie einen
GMSNavigator
. um die detaillierte Routenführung zu steuern.- Fügen Sie Ziele mit
setDestinations
hinzu. - Festlegen
isGuidanceActive
nachtrue
, um die Navigation zu starten. simulateLocationsAlongExistingRoute
verwenden um den Fortschritt des Fahrzeugs auf der Route zu simulieren. Fehlerbehebung und Demonstration Ihrer App.
- Fügen Sie Ziele mit
Code
Nutzer um die erforderlichen Autorisierungen bitten
Vor der Verwendung des Navigation SDK muss der Nutzer den und die Nutzung von Standortdiensten, die die für die Navigation erforderlich sind. Wenn Ihre App im Hintergrund läuft, muss sie auch Nutzer auffordern, Benachrichtigungen zu Routenführungswarnungen zu autorisieren. Dieser Abschnitt enthält wie die erforderlichen Autorisierungsaufforderungen angezeigt werden.
Standortdienste autorisieren
Das Navigation SDK verwendet Standortdienste, für die Folgendes erforderlich ist: Nutzerautorisierung. Um Standortdienste zu aktivieren und die Autorisierung anzuzeigen führen Sie diese Schritte aus:
- Fügen Sie
Info.plist
den SchlüsselNSLocationAlwaysUsageDescription
hinzu. Erläutern Sie als Wert kurz, warum Ihre App einen Standort benötigt. Dienstleistungen. Beispiel: „Diese App benötigt die Berechtigung, Standortdienste zu verwenden für detaillierte Routenführung.“
Rufen Sie
requestAlwaysAuthorization()
oder die Standortmanagerinstanz.
Swift
self.locationManager.requestAlwaysAuthorization()
Objective-C
[_locationManager requestAlwaysAuthorization];
Benachrichtigungen zu Hintergrundinformationen autorisieren
Das Navigation SDK benötigt eine Nutzerberechtigung, um Warnmeldungen ausgeben zu können Benachrichtigungen erhalten, wenn die App im Hintergrund ausgeführt wird. Fügen Sie folgenden Code hinzu: um den Nutzer um die Berechtigung zum Anzeigen dieser Benachrichtigungen aufzufordern:
Swift
UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
granted, error in
// Handle denied authorization to display notifications.
if !granted || error != nil {
print("User rejected request to display notifications.")
}
}
Objective-C
// Request authorization for alert notifications.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = UNAuthorizationOptionAlert;
[center requestAuthorizationWithOptions:options
completionHandler:
^(
BOOL granted,
NSError *_Nullable error) {
if (!error && granted) {
NSLog(@"iOS Notification Permission: newly Granted");
} else {
NSLog(@"iOS Notification Permission: Failed or Denied");
}
}];
Nutzungsbedingungen akzeptieren
Verwenden Sie den folgenden Code, um das Dialogfeld mit den Nutzungsbedingungen aufzurufen, und aktivieren Sie wenn der Nutzer die Bedingungen akzeptiert. Beachten Sie, dass dieses Beispiel Code für Benachrichtigungen zu Standortdiensten und Routenführungswarnungen (siehe Abbildung .
Swift
let companyName = "Ride Sharing Co."
GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
withCompanyName: companyName) { termsAccepted in
if termsAccepted {
// Enable navigation if the user accepts the terms.
self.mapView.isNavigationEnabled = true
self.mapView.settings.compassButton = true
// Request authorization to use location services.
self.locationManager.requestAlwaysAuthorization()
// Request authorization for alert notifications which deliver guidance instructions
// in the background.
UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
granted, error in
// Handle rejection of notification authorization.
if !granted || error != nil {
print("Authorization to deliver notifications was rejected.")
}
}
} else {
// Handle rejection of terms and conditions.
}
}
Objective-C
NSString *companyName = @"Ride Sharing Co.";
[GMSNavigationServices
showTermsAndConditionsDialogIfNeededWithCompanyName:companyName
callback:^(BOOL termsAccepted) {
if (termsAccepted) {
// Enable navigation if the user accepts the terms.
_mapView.navigationEnabled = YES;
_mapView.settings.compassButton = YES;
// Request authorization to use the current device location.
[_locationManager requestAlwaysAuthorization];
// Request authorization for alert notifications which deliver guidance instructions
// in the background.
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = UNAuthorizationOptionAlert;
[center requestAuthorizationWithOptions:options
completionHandler:
^(
BOOL granted,
NSError *_Nullable error) {
if (!error && granted) {
NSLog(@"iOS Notification Permission: newly Granted");
} else {
NSLog(@"iOS Notification Permission: Failed or Denied");
}
}];
} else {
// Handle rejection of the terms and conditions.
}
}];
Route erstellen und Navigation starten
Wenn Sie eine Route zeichnen möchten, rufen Sie die setDestinations()
-Methode des Navigators mit einem Array auf
mit mindestens einem Reiseziel (GMSNavigationWaypoint
) Erfolgreich
wird die Route auf der Karte angezeigt. Um die Routenführung zu starten,
beginnend mit dem ersten Ziel, setzen Sie isGuidanceActive
auf true
in der
Callback des Nutzers an.
Im folgenden Beispiel wird gezeigt:
- Erstellen einer neuen Route mit zwei Zielorten
- Anleitung wird gestartet.
- Benachrichtigungen zur Hintergrundführung werden aktiviert.
- Fahrt entlang der Route simulieren (optional).
- Kameramodus auf „Folgen“ einstellen (optional)
Swift
func startNav() {
var destinations = [GMSNavigationWaypoint]()
destinations.append(GMSNavigationWaypoint.init(placeID: "ChIJnUYTpNASkFQR_gSty5kyoUk",
title: "PCC Natural Market")!)
destinations.append(GMSNavigationWaypoint.init(placeID:"ChIJJ326ROcSkFQRBfUzOL2DSbo",
title:"Marina Park")!)
mapView.navigator?.setDestinations(destinations) { routeStatus in
self.mapView.navigator?.isGuidanceActive = true
self.mapView.locationSimulator?.simulateLocationsAlongExistingRoute()
self.mapView.cameraMode = .following
}
}
Objective-C
- (void)startNav {
NSArray<GMSNavigationWaypoint *> *destinations =
@[[[GMSNavigationWaypoint alloc] initWithPlaceID:@"ChIJnUYTpNASkFQR_gSty5kyoUk"
title:@"PCC Natural Market"],
[[GMSNavigationWaypoint alloc] initWithPlaceID:@"ChIJJ326ROcSkFQRBfUzOL2DSbo"
title:@"Marina Park"]];
[_mapView.navigator setDestinations:destinations
callback:^(GMSRouteStatus routeStatus){
[_mapView.locationSimulator simulateLocationsAlongExistingRoute];
_mapView.navigator.guidanceActive = YES;
_mapView.cameraMode = GMSNavigationCameraModeFollowing;
}];
}
Weitere Informationen zu Orts-IDs finden Sie unter Orts-IDs.
Mobilitätsform?
Mit der Mobilitätsform wird bestimmt, welche Art von Route abgerufen wird Kurs der Nutzenden bestimmt wird. Sie können eine von vier Mobilitätsformen für eine Route: Auto, Fahrrad, zu Fuß oder mit dem Taxi. Im Fahr- und Taximodus ist der Kurs der Nutzenden je nach Fahrtrichtung ist der Platz für Radfahrer und Fußgänger die durch die Richtung dargestellt wird, in die das Gerät zeigt.
Legen Sie die travelMode
fest.
der Kartenansicht wie im folgenden Beispiel dargestellt:
Swift
self.mapView.travelMode = .cycling
Objective-C
_mapView.travelMode = GMSNavigationTravelModeCycling;
Zu vermeidende Straßen festlegen
Verwende die BOOL
-Attribute avoidsHighways
und avoidsTolls
, um
Autobahnen und/oder Mautstraßen entlang einer Route.
Swift
self.mapView.navigator?.avoidsTolls = true
Objective-C
_mapView.navigator.avoidsTolls = YES;
Orts-ID-Finder
Sie können den PlaceID Finder
, um Orts-IDs für Routenziele zu finden. Fügen Sie mit GMSNavigationWaypoint
ein Ziel aus einer placeID
hinzu.
Unverankerter Text
Sie können überall in Ihrer App unverankerten Text hinzufügen, solange das Google wird die Attribution nicht berücksichtigt. Das Navigation SDK unterstützt keine Verankerung des einem Breiten- und Längengrad auf der Karte oder einem Label hinzufügen. Weitere Informationen Siehe Infofenster.