Rotayı izleme

Uygulamanızda bulunan ve tek bir hedefe giden bir rota belirlemek için bu kılavuzu inceleyin. kullanarak iOS için Navigasyon SDK'sını kullanabilirsiniz.

Genel Bakış

  1. Gezinme SDK'sını uygulamanıza entegre edin. Projenizi oluşturma bölümünde görebilirsiniz.
  2. Bir GMSMapView yapılandırın.
  3. Kullanıcıdan şartlar ve koşulları kabul etmesini ve konumu yetkilendirmesini isteyin arka plan bildirimleri alabilirsiniz.
  4. Bir veya daha fazla hedef içeren bir dizi oluşturun.
  5. Bir GMSNavigator tanımlayın yol tarifini verir.

Kodu göster

Kullanıcıdan gerekli yetkilendirmeleri isteyin

Gezinme SDK'sını kullanmadan önce kullanıcının şunu kabul etmesi gerekir: ve kullanıcı izni bulunan konum hizmetlerinin kullanımına izin vermek gereklidir. Uygulamanız arka planda çalışacaksa kullanıcıdan yönlendirme uyarısı bildirimlerini yetkilendirmesini isteme. Bu bölümde şunlar gösterilir: Gerekli yetkilendirme istemlerinin nasıl görüntüleneceğini öğrenin.

Konum hizmetlerini yetkilendirme

Gezinme SDK'sı konum hizmetlerini kullanır. Bunun için kullanıcı yetkilendirmesi. Konum hizmetlerini etkinleştirmek ve yetkilendirmeyi görüntülemek için iletişim kutusunda şu adımları uygulayın:

  1. NSLocationAlwaysUsageDescription anahtarını Info.plist öğesine ekleyin.
  2. Değer için, uygulamanızın neden konum gerektirdiğine dair kısa bir açıklama ekleyin kullanıma sunuyoruz. Örneğin: "Bu uygulama, konum hizmetlerini şu amaçlarla kullanmak için izne ihtiyaç duyuyor: adım adım navigasyon."

  3. Yetkilendirme iletişim kutusunu görüntülemek için şunu çağırın: requestAlwaysAuthorization() of konum yöneticisi örneğine bakalım.

Swift

self.locationManager.requestAlwaysAuthorization()

Objective-C

[_locationManager requestAlwaysAuthorization];

Arka planda yardım almak için uyarı bildirimlerini yetkilendirin

Gezinme SDK'sının uyarı sağlamak için kullanıcı iznine ihtiyacı var uygulama arka planda çalışırken bildirim gönderir. Aşağıdaki kodu ekleyin kullanarak kullanıcıdan bu bildirimleri görüntüleme izni ister:

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");
     }
   }];

Hükümler ve koşulları kabul edin

Aşağıdaki kodu kullanarak şartlar ve koşullar iletişim kutusunu görüntüleyin ve kullanıcı şartları kabul ettiğinde gezinme. Bu örneğin konum hizmetleri ve yol gösterici uyarı bildirimlerinin kodu (gösterilen ).

Swift

  let termsAndConditionsOptions = GMSNavigationTermsAndConditionsOptions(companyName: "Ride Sharing Co.")

  GMSNavigationServices.showTermsAndConditionsDialogIfNeeded(
    with: termsAndConditionsOptions) { 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

GMSNavigationTermsAndConditionsOptions *termsAndConditionsOptions = [[GMSNavigationTermsAndConditionsOptions alloc] initWithCompanyName:@"Ride Sharing Co."];

[GMSNavigationServices
  showTermsAndConditionsDialogIfNeededWithOptions:termsAndConditionsOptions
  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.
   }
 }];

Rota oluşturma ve yönlendirmeyi başlatma

Rota çizmek için bir dizi kullanarak Navigator'ın setDestinations() yöntemini çağırın ziyaret edilecek bir veya daha fazla hedef (GMSNavigationWaypoint) içeren Başarıyla hesaplandığında rota haritada gösterilir. Rota boyunca rehberlik etmeye başlamak için ilk hedefle başlıyor, isGuidanceActive öğesini şurada true olarak ayarlayın: geri arama.

Aşağıdaki örnekte şunlar gösterilmektedir:

  • İki hedef içeren yeni bir rota oluşturma.
  • Başlangıç kılavuzu.
  • Arka planda rehberlik bildirimleri etkinleştiriliyor.
  • Rota boyunca seyahat simülasyonu (isteğe bağlı).
  • Kamera modunu "takip et" olarak ayarlama (isteğe bağlı).

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;
                             }];
}

Yer kimlikleri hakkında bilgi edinmek için lütfen Yer Kimlikleri konusuna bakın.

Ulaşım şeklini ayarla

Ulaşım modu, hangi rota türünün getirileceğini ve bu rotanın kullanıcının izlediği yol belirlenir. Bir araba için dört ulaşım modundan birini Rota: araba, bisiklet, yürüyüş ve taksi. Sürüş ve taksi modunda kullanıcının kursu seyahat yönüne göre bisiklet ve yürüyüş modunda. Kursun cihazın baktığı yöne göre gösterilir.

travelMode ayarını yapın. özelliğini kullanmanızı öneririz:

Swift

self.mapView.travelMode = .cycling

Objective-C

_mapView.travelMode = GMSNavigationTravelModeCycling;

Kaçınılacak yolları belirleyin

Kaçınmak için avoidsHighways ve avoidsTolls BOOL özelliklerini kullanın. otoyollar ve/veya ücretli yollara yer verin.

Swift

self.mapView.navigator?.avoidsTolls = true

Objective-C

_mapView.navigator.avoidsTolls = YES;

PlaceID bulucu

PlaceID Finder'ı kullanabilirsiniz kullanarak rota hedeflerinde kullanılacak yer kimliklerini bulun. GMSNavigationWaypoint kullanarak placeID içinden hedef ekleyin.

Kayan metin

Uygulamanızın herhangi bir yerine kayan metin ekleyebilirsiniz. Bunun için Google dahil değildir. Gezinme SDK'sı bir enlem/boylam veya etiket için metin girilmelidir. Daha fazla bilgi için Bilgi pencereleri bölümüne bakın.