세부 경로 안내 데이터 피드는 지도 기반 탐색 안내를 위해 설계되었습니다. 그것은 향후 작전을 제공하고 다음과 같습니다.
- 아이콘 (왼쪽, 오른쪽, U자형)
- 로터리에서 번호 바꾸기
- 도로 이름
- 다음 이동 단계 또는 최종 지점까지의 예상 거리 및 시간 목적지
세부 경로 안내 피드를 사용하면 전체 정보가 Navigation SDK UI는 적합하지 않습니다(예: 소형 화면 디스플레이). 대상 예를 들어, 오토바이를 이용하는 경우 사용자가 목표에 더 빨리 도달할 수 있도록 도와주는 프로젝트 탐색 전용 가이드 방해 요소를 최소화하여 더 자신 있게 연습하세요.
필수 탐색 디스플레이 요소
각 탐색 단계의 기본 필드는 전체 도로명입니다. 스텝의 이동 거리 및 이동 거리를 확인할 수 있으며, GMSNavigationStepInfo.
전체 여정에 대해 남은 시간과 목적지까지의 거리이며, 이 모든 것은 GMSNavigationNavInfo를 사용하여 설계할 수 있습니다. 오른쪽 이미지는 이러한 필수 탐색 요소의 예를 보여줍니다.
이벤트 리스너 설정
탐색 전용 데이터를 사용하려면
didChangeNavInfo
이벤트를 사용합니다. 이벤트 리스너 내에서 trip 및
단계별 내비게이션을 제공할 수 있습니다.
이벤트 핸들러를 구현하려면 지도의 뷰 컨트롤러가
GMSNavigatorListener
드림
사용할 수 있습니다 iOS용 Navigation SDK의 이벤트 처리에 대한 자세한 내용은
탐색 이벤트 수신 대기를 참고하세요.
didChangeNavInfo
이벤트 처리
세부 경로 안내 지원을 추가할 didChangeNavInfo
이벤트 리스너를 만듭니다.
있습니다. 이벤트 리스너에서 다음 클래스와 enum을 사용하여
세부 경로 안내 내비게이션:
GMSNavigationNavInfo
드림 — 탐색 상태에 관한 정보를 정의하는 클래스입니다.GMSNavigationStepInfo
드림 — 탐색 경로를 따라 하나의 단계에 대한 정보를 정의하는 클래스입니다.GMSNavigationNavState
드림 — 탐색의 현재 상태를 정의하는 열거형(예: enroute, 중지될 수 있습니다GMSNavigationDrivingSide
드림 — 이 단계가 오른쪽 드라이브 경로에 있는지 아니면 왼쪽 드라이브 경로에 있는지 정의하는 열거형입니다.GMSNavigationManeuver
드림 — 좌회전 또는 우회전 등 실행할 탐색 작업을 정의하는 열거형입니다.
다음은 didChangeNavInfo
이벤트에 대한 이벤트 리스너의 예입니다.
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
탐색 상태
GMSNavigationNavInfo
의 navState
속성 사용
다음 중 하나인 현재 탐색 상태를 가져옵니다.
경로 중 -
GMSNavigationNavStateEnroute
상태는 가이드 내비게이션이 진행 중임을 의미합니다. 현재 활성 상태이고 사용자가 제공된 경로에 있는 것입니다. 다음에 관한 정보 현재 예정된 조작 단계를 사용할 수 있습니다.경로 변경 -
GMSNavigationNavStateRerouting
는 탐색이 진행 중이지만 네비게이터가 새로운 경로를 찾고 있습니다. 다음 작전 단계는 사용할 수 있습니다. 아직 새로운 경로가 없기 때문입니다.중지됨:
GMSNavigationNavStateStopped
는 탐색이 종료되었음을 의미합니다. 예를 들어 사용자가 앱에서 내비게이션을 종료하면 내비게이션이 중지됩니다. 샘플 앱에서는GMSNavigationNavStateStopped
상태는 탐색 정보 디스플레이를 지웁니다. 자세한 단계별 안내가 표시되지 않도록 하세요.
차선 안내
Navigation SDK는 내비게이션 세부 경로 카드의 차선을 다음과 같이 나타냅니다.
GMSNavigationLane
및 GMSNavigationLaneDirection
데이터 객체 가
GMSNavigationLane
객체는 내비게이션 중 특정 차선을 나타내며
각 회전 구간을 설명하는 GMSNavigationLaneDirection
객체의 목록
이 차선에서 출발할 수 있습니다.
운전자가 차선에서 이용해야 하는 권장 방향은
recommended
필드
차선 안내의 예
다음 스니펫은 표시된 차선의 데이터 표현을 보여줍니다. 확인할 수 있습니다
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
차선 안내 이미지
Navigation SDK는 각 내비게이션 단계의 차선 이미지 생성을 지원합니다.
GMSNavigationStepInfo
에 의해 전달됩니다. 이 아이콘은 CarPlay의 이미지 크기 조정에 적합합니다.
안내를 참고하세요.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
조작 아이콘 만들기
GMSNavigationManeuver
enum은 탐색 중에 발생할 수 있는 각 가능한 조작을 정의합니다.
은 지정된 단계의 maneuver
속성에서
GMSNavigationStepInfo
입니다.
조작 아이콘을 생성하고 이를 연결된 동작과 페어링해야 합니다.
일부 작업의 경우 아이콘에 일대일 매핑을 설정할 수 있습니다(예:
GMSNavigationManeuverDestinationLeft
및
GMSNavigationManeuverDestinationRight
입니다. 그러나 일부 조작은
운용하는 방법에 따라 두 개 이상의 지도를 만들 수 있습니다.
단일 아이콘으로 변경할 수 있습니다. 예를 들면 GMSNavigationManeuverTurnLeft
및
GMSNavigationManeuverOnRampLeft
은(는) 모두 왼쪽 회전 아이콘에 매핑될 수 있습니다.
일부 조작에는 추가적인 '시계 방향' 또는 "시계 반대 방향" 라벨, 국가별 운전 방향에 따라 SDK가 결정합니다. 예를 들어 운전이 도로 왼쪽에 있는 나라에서는 회전 교차로는 시계 방향으로 회전합니다 시계 반대 방향으로 이동합니다 Navigation SDK는 왼쪽 또는 오른쪽 트래픽과 출력 결과에서 도움이 됩니다. 따라서 조작 아이콘이 어떻게 다른지 살펴보겠습니다.
펼쳐서 다양한 조작 방법에 대한 예시 아이콘을 확인하세요.
샘플 아이콘 | 세부 경로 안내 |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_RAMP_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
|
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
|
ROUNDABOUT_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_CLOCKWISE
|
|
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_EXIT_CLOCKWISE
|
|
MERGE_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT
|
|
MERGE_UNSPECIFIED
|
|
DESTINATION
|
|
DESTINATION_RIGHT
|
|
DESTINATION_LEFT
|
|
FERRY_BOAT
|
|
FERRY_TRAIN
|
생성된 아이콘 사용
Navigation SDK는 지정된 UI의 조작 아이콘 생성을 지원합니다.
GMSNavigationStepInfo
이 아이콘은 CarPlay 이미지 크기 조정에 적합합니다.
안내를 참고하세요.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];