경로 탐색

이 가이드에 따라 앱 내에서 단일 대상, Android용 Navigation SDK를 사용하는 것이 좋습니다.

개요

  1. 설명된 대로 Navigation SDK를 앱에 통합합니다. (프로젝트 설정 섹션)
  2. GMSMapView를 구성합니다.
  3. 사용자에게 이용약관에 동의하고 위치를 승인하라는 메시지 표시 서비스 및 백그라운드 알림을 사용할 수 있습니다
  4. 대상이 하나 이상 포함된 배열을 만듭니다.
  5. GMSNavigator 정의 세부 경로 안내 내비게이션을 제어할 수 있습니다.

를 통해 개인정보처리방침을 정의할 수 있습니다.

코드 보기

사용자에게 필요한 승인을 요청하는 메시지 표시

사용자는 Navigation SDK를 사용하기 전에 위치 서비스 사용을 승인합니다. 필요합니다. 앱이 백그라운드에서 실행될 경우 사용자에게 안내 알림 알림을 승인하라는 메시지를 표시합니다. 이 섹션에서는 필요한 승인 프롬프트 표시 방법

위치 서비스 승인

Navigation SDK는 위치 서비스를 사용하므로 사용자 인증입니다. 위치 서비스를 사용 설정하고 승인을 표시하기 위해 대화상자에서 다음 단계를 따르세요.

  1. NSLocationAlwaysUsageDescription 키를 Info.plist에 추가합니다.
  2. 값에는 앱에 위치 정보가 필요한 이유에 대한 간단한 설명을 추가합니다. 제공합니다 예: '이 앱에서 위치 서비스를 사용하려면 권한이 필요합니다. 세부 경로 안내 내비게이션을 이용할 수 있습니다."

  3. 승인 대화상자를 표시하려면 다음의 requestAlwaysAuthorization()를 호출합니다. 위치 관리자 인스턴스

Swift

self.locationManager.requestAlwaysAuthorization()

Objective-C

[_locationManager requestAlwaysAuthorization];

백그라운드 안내를 위한 알림 알림 승인

Navigation SDK에 알림을 제공하려면 사용자 권한이 필요합니다. 알림을 받도록 설정할 수 있습니다. 다음 코드를 추가합니다. 사용자에게 이러한 알림을 표시할 권한을 요청하는 메시지를 표시합니다.

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

이용약관에 동의

다음 코드를 사용하여 이용약관 대화상자를 표시하고 탐색 메뉴로 이동합니다. 이 예에는 위치 서비스 및 안내 알림 알림용 코드 (표시된 참고).

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

경로 생성 및 안내 시작

경로를 표시하려면 배열과 함께 탐색기의 setDestinations() 메서드를 호출합니다. 이동할 하나 이상의 목적지 (GMSNavigationWaypoint)를 포함합니다. 성공적으로 완료되면 경로가 지도에 표시됩니다. 경로를 따라 안내를 시작하려면 를 isGuidanceActivetrue 로 설정합니다. 있습니다.

다음 예시는 다음과 같은 기능을 보여줍니다.

  • 대상이 두 개 있는 새 경로를 만듭니다.
  • 가이드를 시작합니다.
  • 백그라운드 안내 알림 사용 설정
  • 경로에 따른 이동 시뮬레이션 (선택사항)
  • 카메라 모드를 '팔로우'로 설정 (선택사항)

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

장소 ID에 대한 자세한 내용은 장소 ID를 참고하세요.

이동수단 설정

이동수단은 가져올 경로 유형과 이동 방법을 결정합니다. 사용자의 경로가 결정됩니다. 목적지에 네 가지 이동수단 중 하나를 경로: 운전, 자전거, 도보, 택시 운전 및 택시 모드에서 사용자의 코스는 이동 방향에 따라 달라집니다. 사이클링 및 걷기 모드의 코스는 장치가 향하는 방향으로 표시됩니다.

travelMode 설정 속성을 설정해야 합니다.

Swift

self.mapView.travelMode = .cycling

Objective-C

_mapView.travelMode = GMSNavigationTravelModeCycling;

피해야 할 도로 설정

avoidsHighwaysavoidsTolls BOOL 속성 사용 경로에 있는 고속도로 및/또는 유료 도로.

Swift

self.mapView.navigator?.avoidsTolls = true

Objective-C

_mapView.navigator.avoidsTolls = YES;

PlaceID 찾기

PlaceID Finder를 사용하여 경로 목적지에 사용할 장소 ID를 찾습니다. GMSNavigationWaypoint를 사용하여 placeID에서 대상을 추가합니다.

플로팅 텍스트

Google 기여 분석이 적용되지 않습니다. Navigation SDK는 지도의 위도/경도나 라벨에 추가합니다. 자세한 내용은 정보 창을 참고하세요.