맞춤 탐색 환경은 백그라운드 프로세스로만 탐색을 사용하여 회전 안내를 완전히 제거하는 앱부터 탐색기를 실행하는 기기와 별도의 화면에 고도로 맞춤설정된 안내를 투영하는 앱에 이르기까지 모든 것을 의미할 수 있습니다.
맞춤 탐색 환경이란 무엇인가요?
내비게이션 시작 - 내비게이션 세션을 만듭니다. Google 탐색 환경과 마찬가지로 맞춤 탐색 환경에도 여전히 탐색 인스턴스를 만들고 대상을 설정해야 합니다. 그러나 맞춤설정된 탐색 환경을 사용하면 먼저
GMSNavigationServices
를 사용하여 탐색 세션을 설정하여 이렇게 할 수 있습니다. 탐색 세션은 뷰 컨트롤러 또는 뷰 컨트롤러 없이 작동할 수 있는, 상태 보유 비 UI 객체입니다.데모 보기: Navigation SDK의 다운로드에는 표준 탐색을 통한 세부 경로 안내 간에 도로 다중선을 따라 이동하는 기기 위치만 표시하는 내비게이션 환경으로 전환하는 내비게이션 환경의 예를 확인할 수 있는 데모가 포함되어 있습니다.
사용자가 제공하는 활성 내비게이션. Google에서 제공하는 탐색 환경과 맞춤 탐색 환경의 또 다른 주요 차이점은 다음과 같습니다. Navigation SDK의 기본 제공 이벤트 관리자에게 안내를 전달하는 대신 세부 경로 안내 피드를 사용 설정하고
GMSNavigatorListener
를 통해 이벤트 핸들러를 구현합니다. 이렇게 하면 환경이 내비게이션 이벤트 수신 대기에 설명된 이벤트에 응답할 수 있습니다.내비게이션 종료: 사용자가 제공. Google 탐색 환경과 마찬가지로 맞춤 탐색을 사용하려면 앱 환경에 가장 적합한 방식으로 탐색을 종료해야 합니다.
다음 표에서는 몇 가지 맞춤 탐색 시나리오를 설명합니다.
예시 시나리오 |
대략적인 단계 |
---|---|
이륜차와 같은 소형 기기의 경우 텍스트 전용 운전자 안내를 제공해야 합니다. |
탐색기를 만들고 세부 경로 안내를 소형 화면 기기의 데이터 피드로 설정합니다. 이때 탐색기가 운전자의 직접 시야 외부에서 운전자의 휴대전화에서 실행됩니다. 세부 경로 안내 데이터 피드 사용을 참조하세요. |
앱을 사용하는 운전자가 대부분의 여정에 대한 개요 지도를 보고 도시의 도로에 대한 최소한의 세부 경로 안내만 보기를 원합니다. |
앱은 운전자가 목적지 및 이동 모드에 대한 탐색기의 설정을 번갈아 하지 않고도 필요에 따라 운전자가 Google 내비게이션 환경을 시작하고 종료할 수 있도록 해야 합니다. |
모빌리티 서비스 고객의 경우: 운전자는 이미 익숙한 경로를 따라 이동하는 경우가 많으며 아무런 안내도 필요하지 않지만, 차량 관리 시스템에서 배송 또는 이동을 관리할 수 있는 방법이 필요합니다. |
탐색기를 설정합니다. 목적지를 설정하고 위치 업데이트를 받으세요. 앱에 Driver SDK를 통합합니다. 자세한 내용은 주문형 차량 공유 및 배송용 Driver SDK 시작하기 또는 Last Mile Fleet 솔루션을 참조하세요. |
맞춤 안내 만들기
이 섹션에서는 맞춤설정된 안내를 만들기 위해 따르는 대략적인 단계를 설명합니다.
이 프로세스는 다음과 같이 경로 탐색에 설명된 프로세스와 다릅니다.
- 먼저 탐색 세션을 독립적으로 설정하고 뷰 컨트롤러를 호출하는 대신 세션을 통해 탐색기 인스턴스를 가져옵니다.
- 탐색 이벤트에 응답하고 탐색 이벤트에 응답하도록 이벤트 리스너를 설정합니다.
GMSNavigationService.createNavigationSession
를 사용하여 내비게이션 세션을 만들고setDestination
호출로 내비게이션을 시작합니다. Google 내비게이션 환경에서 내비게이션 지도뷰를 통해 탐색기를 호출하는 경우GMSNavigationServices
는 UI 인스턴스로부터 독립적으로 탐색 세션의 이벤트 스트림을 제어하고 수신합니다. 즉, UI 없이 실행하거나 모든 UI 기반 환경으로 전달될 수 있습니다. 이 방법을 사용하면 탐색 세션은 마지막 참조가 삭제될 때까지 앱에서 계속 실행됩니다.- 도로에 맞춘 위치 정보 제공자를 설정합니다. 경로를 따라 파란색 점이 있는 탐색 뷰를 표시하는 등 앱에서 지속적으로 위치를 모니터링하도록 하려면 위치 정보 제공자를 사용하세요.
GMSNavigatorListener
프로토콜을 구현하여 상세한 세부 경로 안내를 위한 리스너를 설정합니다. 그런 다음 이 정보를 맞춤 탐색 환경에 필요한 정보로 변환합니다. 예를 들면 다음과 같습니다.- 간단한 길찾기 화면 전송을 위한 텍스트 전용 필드를 구현합니다.
- 자체 UI용 필드를 디자인하고 채웁니다.
- 내비게이션 시뮬레이터를 설정합니다. 이는 개발 및 테스트에 필요합니다.
독립적인 탐색 세션 만들기
다음 데모 코드 스니펫은 뷰 컨트롤러와 독립적으로 설정된 탐색을 보여줍니다. 그런 다음 현재 도로에 맞춰진 위치를 표시하도록 구성된 개요 지도를 추가합니다.
// 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`];