맞춤 가이드 만들기

이 페이지에서는 맞춤 탐색 환경의 일부로 맞춤 가이드를 만들기 위해 따르는 대략적인 단계를 설명합니다.

이 프로세스는 다음과 같은 경로 탐색에서 설명하는 프로세스와 다릅니다.

  • 뷰 컨트롤러를 호출하는 대신 먼저 탐색 세션을 독립적으로 설정하고 세션을 통해 탐색기 인스턴스를 가져옵니다.
  • 탐색 이벤트에 응답하고 이를 관리하도록 이벤트 리스너를 설정합니다.
  1. GMSNavigationService.createNavigationSession를 사용하여 탐색 세션을 만들고 setDestination 호출로 탐색을 시작합니다. Google 내비게이션 환경이 내비게이션 지도뷰를 통해 탐색기를 호출하는 경우 GMSNavigationServices는 UI 인스턴스와 독립적으로 내비게이션 세션의 이벤트 스트림을 제어하고 수신합니다. 즉, UI 없이 실행하거나 모든 UI 기반 환경으로 전달될 수 있습니다. 이 방법을 사용하면 마지막 참조가 삭제될 때까지 앱에서 탐색 세션이 계속 실행됩니다.
  2. 도로에 맞춰진 위치 제공업체를 설정합니다. 경로를 따라 파란색 점으로 내비게이션 뷰를 표시하는 경우와 같이 앱에서 지속적으로 위치를 모니터링하려면 위치 정보 제공자를 사용하세요.
  3. GMSNavigatorListener 프로토콜을 구현하여 자세한 세부 경로 안내를 위한 리스너를 설정하세요. 그런 다음 이 정보를 맞춤 탐색 환경에 필요한 정보로 변환합니다. 예를 들면 다음과 같습니다.
    1. 간단한 경로 화면 전송을 위해 텍스트 전용 필드를 구현합니다.
    2. 자체 UI를 위한 필드를 디자인하고 채우기
  4. 탐색 시뮬레이터를 설정합니다. 이는 개발 및 테스트에 필요합니다.

독립적인 내비게이션 세션 만들기

데모의 다음 코드 스니펫은 뷰 컨트롤러와 독립적으로 설정된 탐색을 보여줍니다. 그러면 코드는 현재 도로 맞춤 위치를 표시하도록 구성된 개요 지도를 추가합니다.

// 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;

맞춤 환경에서 Google 환경으로 탐색 전달

이 코드 스니펫은 앱에서 사용자가 맞춤 탐색 환경에서 Google 탐색 환경으로 전환할 수 있도록 허용하는 방법을 보여줍니다. 또한 이 코드 스니펫은 앱이 지도를 공유하는 동안 이러한 전환을 수행하는 방법을 보여줍니다.

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];