Routenführung

Folgen Sie dieser Anleitung, um in Ihrer App eine Route zu einem einzelnen Ziel zu planen, mithilfe des Navigation SDK für iOS.

Übersicht

  1. Integrieren Sie das Navigation SDK wie beschrieben in Ihre App. im Bereich Projekt einrichten.
  2. Konfigurieren Sie eine GMSMapView.
  3. Nutzer auffordern, die Nutzungsbedingungen zu akzeptieren und den Standort zu autorisieren und Hintergrundbenachrichtigungen.
  4. Erstellen Sie ein Array, das ein oder mehrere Ziele enthält.
  5. Definieren Sie einen GMSNavigator. um die detaillierte Routenführung zu steuern.

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:

  1. Fügen Sie Info.plist den Schlüssel NSLocationAlwaysUsageDescription hinzu.
  2. 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.“

  3. 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.