//
//  AMapNaviCommonObj.h
//  AMapNaviKit
//
//  Created by AutoNavi on 14-7-1.
//  Copyright (c) 2014年 Amap. All rights reserved.
//

#import <UIKit/UIKit.h>
@class AMapNaviRoute;

///AMapNavi的错误Domain
extern NSString * const AMapNaviErrorDomain;

///AMapNavi的错误信息
typedef NS_ENUM(NSInteger, AMapNaviError)
{
    AMapNaviUnknowError = -1,                       ///< 未知错误
    AMapNaviErrorNoGPSPermission = -2,              ///< 没有定位权限
    AMapNaviErrorNoFullGPSAccuracyPermission = -3,  ///< 没有定位的精确位置权限
};

///导航模式
typedef NS_ENUM(NSInteger, AMapNaviMode)
{
    AMapNaviModeNone = 0,                       ///< 没有开始导航
    AMapNaviModeGPS,                            ///< 实时导航
    AMapNaviModeEmulator,                       ///< 模拟导航
};

///导航界面跟随模式
typedef NS_ENUM(NSInteger, AMapNaviViewTrackingMode)
{
    AMapNaviViewTrackingModeMapNorth = 0,      ///< 0 正北朝上
    AMapNaviViewTrackingModeCarNorth,          ///< 1 车头朝上
};

///驾车导航界面显示模式
typedef NS_ENUM(NSInteger, AMapNaviDriveViewShowMode)
{
    AMapNaviDriveViewShowModeCarPositionLocked = 1, ///< 锁车状态
    AMapNaviDriveViewShowModeOverview = 2,          ///< 全览状态
    AMapNaviDriveViewShowModeNormal = 3,            ///< 普通状态
};

///骑步行算路策略. since 7.5.0
typedef NS_ENUM(NSInteger, AMapNaviTravelStrategy)
{
    AMapNaviTravelStrategySingleDefault = 1000,     ///< 算路支持一条
    AMapNaviTravelStrategyMultipleDefault = 1001,   ///< 算路支持多条
};

///驾车、货车路径规划策略.
typedef NS_ENUM(NSInteger, AMapNaviDrivingStrategy)
{
    AMapNaviDrivingStrategySingleInvalid = -1,                              ///< -1 非法
    AMapNaviDrivingStrategySingleDefault = 0,                               ///< 0 单路径: 默认,速度优先(常规最快)
    AMapNaviDrivingStrategySingleAvoidCost = 1,                             ///< 1 单路径: 避免收费
    AMapNaviDrivingStrategySinglePrioritiseDistance = 2,                    ///< 2 单路径: 距离优先
    AMapNaviDrivingStrategySingleAvoidExpressway = 3,                       ///< 3 单路径: 不走快速路
    AMapNaviDrivingStrategySingleAvoidCongestion = 4,                       ///< 4 单路径: 躲避拥堵
    AMapNaviDrivingStrategySinglePrioritiseSpeedCostDistance = 5,           ///< 5 单路径: 速度优先 & 费用优先 & 距离优先
    AMapNaviDrivingStrategySingleAvoidHighway = 6,                          ///< 6 单路径: 不走高速
    AMapNaviDrivingStrategySingleAvoidHighwayAndCost = 7,                   ///< 7 单路径: 不走高速 & 避免收费
    AMapNaviDrivingStrategySingleAvoidCostAndCongestion = 8,                ///< 8 单路径: 避免收费 & 躲避拥堵
    AMapNaviDrivingStrategySingleAvoidHighwayAndCostAndCongestion = 9,      ///< 9 单路径: 不走高速 & 避免收费 & 躲避拥堵
    
    AMapNaviDrivingStrategyMultipleDefault = 10,                            ///< 10  多路径: 默认,速度优先(避让拥堵+速度优先+避免收费)
    AMapNaviDrivingStrategyMultipleShortestTimeDistance = 11,               ///< 11  多路径: 时间最短 & 距离最短
    AMapNaviDrivingStrategyMultipleAvoidCongestion = 12,                    ///< 12  多路径: 躲避拥堵
    AMapNaviDrivingStrategyMultipleAvoidHighway = 13,                       ///< 13  多路径: 不走高速
    AMapNaviDrivingStrategyMultipleAvoidCost = 14,                          ///< 14  多路径: 避免收费
    AMapNaviDrivingStrategyMultipleAvoidHighwayAndCongestion = 15,          ///< 15  多路径: 不走高速 & 躲避拥堵
    AMapNaviDrivingStrategyMultipleAvoidHighwayAndCost = 16,                ///< 16  多路径: 不走高速 & 避免收费
    AMapNaviDrivingStrategyMultipleAvoidCostAndCongestion = 17,             ///< 17  多路径: 避免收费 & 躲避拥堵
    AMapNaviDrivingStrategyMultipleAvoidHighwayAndCostAndCongestion = 18,   ///< 18  多路径: 不走高速 & 避免收费 & 躲避拥堵
    AMapNaviDrivingStrategyMultiplePrioritiseHighway = 19,                  ///< 19  多路径: 高速优先
    AMapNaviDrivingStrategyMultiplePrioritiseHighwayAvoidCongestion = 20,   ///< 20  多路径: 高速优先 & 躲避拥堵
    
    AMapNaviMotorStrategyMultipleDefault = 2001,                     ///< 2001 针对摩托车多路径: 默认  since 8.0.0
    AMapNaviMotorStrategyMultipleAvoidHighway = 2002,                ///< 2002 针对摩托车多路径: 不走高速   since 8.0.0
    AMapNaviMotorStrategyMultiplePrioritiseHighway = 2003,           ///< 2003 针对摩托车多路径: 高速优先   since 8.0.0
    AMapNaviMotorStrategyMultipleAvoidCost = 2004,                   ///< 2004 针对摩托车多路径: 避免收费   since 8.0.0
};

///路径计算状态
typedef NS_ENUM(NSInteger, AMapNaviCalcRouteState)
{
    AMapNaviCalcRouteStateEnvFailed = 0,                        ///< 0 环境初始化错误
    AMapNaviCalcRouteStateSucceed = 1,                          ///< 1 路径计算成功
    AMapNaviCalcRouteStateNetworkError = 2,                     ///< 2 网络失败
    AMapNaviCalcRouteStateStartPointError = 3,                  ///< 3 起点错误
    AMapNaviCalcRouteStateProtocolError = 4,                    ///< 4 协议解析错误
    AMapNaviCalcRouteStateCallCenterError = 5,                  ///< 5 呼叫中心错误
    AMapNaviCalcRouteStateEndPointError = 6,                    ///< 6 终点错误
    AMapNaviCalcRouteStateEncodeFalse = 7,                      ///< 7 服务端编码错误
    AMapNaviCalcRouteStateLackPreview = 8,                      ///< 8 数据缺乏预览数据
    AMapNaviCalcRouteStateDataBufError = 9,                     ///< 9 数据格式错误
    AMapNaviCalcRouteStateStartRouteError = 10,                 ///< 10 没有找到通向起点的道路
    AMapNaviCalcRouteStateEndRouteError = 11,                   ///< 11 没有找到通向终点的道路
    AMapNaviCalcRouteStatePassRouteError = 12,                  ///< 12 没有找到通向途经点的道路
    AMapNaviCalcRouteStateRouteFail = 13,                       ///< 13 算路失败（未知错误）
    AMapNaviCalcRouteStateDistanceTooLong = 19,                 ///< 19 起点/终点/途经点的距离太长
    AMapNaviCalcRouteStatePassPointError = 21,                  ///< 21 途经点错误
    AMapNaviCalcRouteStateHaveNewCalcTaskWorking = 2999,        ///< 2999 有新的算路任务进行中导致本次算路失败
    AMapNaviCalcRouteStateCLAuthorizationStatusDenied = 3000,   ///< 3000 无定位权限
    AMapNaviCalcRouteStateCLAuthorizationReducedAccuracy = 3001,///< 3001 无定位的精确位置权限
};

///导航段转向图标类型
typedef NS_ENUM(NSInteger, AMapNaviIconType)
{
    AMapNaviIconTypeNone = 0,                       ///< 0 无定义
    AMapNaviIconTypeDefault,                        ///< 1 车图标
    AMapNaviIconTypeLeft,                           ///< 2 左转图标
    AMapNaviIconTypeRight,                          ///< 3 右转图标
    AMapNaviIconTypeLeftFront,                      ///< 4 左前方图标
    AMapNaviIconTypeRightFront,                     ///< 5 右前方图标
    AMapNaviIconTypeLeftBack,                       ///< 6 左后方图标
    AMapNaviIconTypeRightBack,                      ///< 7 右后方图标
    AMapNaviIconTypeLeftAndAround,                  ///< 8 左转掉头图标
    AMapNaviIconTypeStraight,                       ///< 9 直行图标
    AMapNaviIconTypeArrivedWayPoint,                ///< 10 到达途经点图标
    AMapNaviIconTypeEnterRoundabout,                ///< 11 进入环岛图标
    AMapNaviIconTypeOutRoundabout,                  ///< 12 驶出环岛图标
    AMapNaviIconTypeArrivedServiceArea,             ///< 13 到达服务区图标
    AMapNaviIconTypeArrivedTollGate,                ///< 14 到达收费站图标
    AMapNaviIconTypeArrivedDestination,             ///< 15 到达目的地图标
    AMapNaviIconTypeArrivedTunnel,                  ///< 16 进入隧道图标
    AMapNaviIconTypeEntryLeftRing,                  ///< 17 进入环岛图标，左侧通行地区的顺时针环岛
    AMapNaviIconTypeLeaveLeftRing,                  ///< 18 驶出环岛图标，左侧通行地区的顺时针环岛
    AMapNaviIconTypeUTurnRight,                     ///< 19 右转掉头图标，左侧通行地区的掉头
    AMapNaviIconTypeSpecialContinue,                ///< 20 顺行图标(和直行有区别，顺行图标带有虚线)
    AMapNaviIconTypeEntryRingLeft,                  ///< 21 标准小环岛 绕环岛左转，右侧通行地区的逆时针环岛
    AMapNaviIconTypeEntryRingRight,                 ///< 22 标准小环岛 绕环岛右转，右侧通行地区的逆时针环岛
    AMapNaviIconTypeEntryRingContinue,              ///< 23 标准小环岛 绕环岛直行，右侧通行地区的逆时针环岛
    AMapNaviIconTypeEntryRingUTurn,                 ///< 24 标准小环岛 绕环岛调头，右侧通行地区的逆时针环岛
    AMapNaviIconTypeEntryLeftRingLeft,              ///< 25 标准小环岛 绕环岛左转，左侧通行地区的顺时针环岛
    AMapNaviIconTypeEntryLeftRingRight,             ///< 26 标准小环岛 绕环岛右转，左侧通行地区的顺时针环岛
    AMapNaviIconTypeEntryLeftRingContinue,          ///< 27 标准小环岛 绕环岛直行，左侧通行地区的顺时针环岛
    AMapNaviIconTypeEntryLeftRingUTurn,             ///< 28 标准小环岛 绕环岛调头，左侧通行地区的顺时针环岛
    AMapNaviIconTypeCrosswalk,                      ///< 29 通过人行横道图标
    AMapNaviIconTypeFlyover,                        ///< 30 通过过街天桥图标
    AMapNaviIconTypeUnderpass,                      ///< 31 通过地下通道图标
    AMapNaviIconTypeSquare,                         ///< 32 通过广场图标
    AMapNaviIconTypePark,                           ///< 33 通过公园图标
    AMapNaviIconTypeStaircase,                      ///< 34 通过扶梯图标
    AMapNaviIconTypeLift,                           ///< 35 通过直梯图标
    AMapNaviIconTypeCableway,                       ///< 36 通过索道图标
    AMapNaviIconTypeOverheadPassage,                ///< 37 通过空中通道图标
    AMapNaviIconTypePassage,                        ///< 38 通过建筑物穿越通道图标
    AMapNaviIconTypeWalks,                          ///< 39 通过行人道路图标
    AMapNaviIconTypeCruises,                        ///< 40 通过游船路线图标
    AMapNaviIconTypeSightseeingbus,                 ///< 41 通过观光车路线图标
    AMapNaviIconTypeSlip,                           ///< 42 通过滑道图标
    AMapNaviIconTypeStair,                          ///< 43 通过阶梯图标
    AMapNaviIconTypeSlope,                          ///< 44 通过斜坡图标
    AMapNaviIconTypeBridge,                         ///< 45 通过桥图标
    AMapNaviIconTypeFerryboat,                      ///< 46 通过渡轮图标
    AMapNaviIconTypeSubway,                         ///< 47 通过地铁图标
    AMapNaviIconTypeEnterBuilding,                  ///< 48 进入建筑物图标
    AMapNaviIconTypeLeaveBuilding,                  ///< 49 离开建筑物图标
    AMapNaviIconTypeByElevator,                     ///< 50 电梯换层图标
    AMapNaviIconTypeByStair,                        ///< 51 楼梯换层图标
    AMapNaviIconTypeEscalator,                      ///< 52 扶梯换层图标
    AMapNaviIconTypeLowTrafficCross,                ///< 53 非导航段通过红绿灯路口图标
    AMapNaviIconTypeLowCross,                       ///< 54 非导航段通过普通路口图标
    AMapNaviIconTypeMergeLeft = 65,                 ///< 65 靠左图标 since 9.0.0
    AMapNaviIconTypeMergeRight = 66,                ///< 66 靠右图标 since 9.0.0
};

///导航播报类型.
typedef NS_ENUM(NSInteger, AMapNaviSoundType)
{
    AMapNaviSoundTypeDefault = 0,                       ///< 默认播报
    AMapNaviSoundTypeNavigationStart = 3016,            ///< 开始导航 since 7.8.0
    AMapNaviSoundTypeNavigationEnd = 3017,              ///< 到达目的地 since 7.8.0
    AMapNaviSoundTypeYaw = 3004,                        ///< 偏航播报 since 7.9.0
    AMapNaviSoundTypeInterrupt = 99999,                 ///< 打断类型（播报内容为空），表示下一句播报很重要，可能会打断前句 since 7.8.0
};

///非导航状态电子眼播报类型
typedef NS_ENUM(NSInteger, AMapNaviDetectedMode)
{
    AMapNaviDetectedModeNone = 0,                   ///< 0 关闭所有
    AMapNaviDetectedModeCamera,                     ///< 1 仅电子眼
    AMapNaviDetectedModeSpecialRoad,                ///< 2 仅特殊道路设施
    AMapNaviDetectedModeCameraAndSpecialRoad,       ///< 3 电子眼和特殊道路设施
};

///AMapNaviLink的道路类型
typedef NS_ENUM(NSInteger, AMapNaviRoadClass)
{
    AMapNaviRoadClassHighWay = 0,                   ///< 0 高速公路
    AMapNaviRoadClassNationalRoad,                  ///< 1 国道
    AMapNaviRoadClassProvincialRoad,                ///< 2 省道
    AMapNaviRoadClassCountyRoad,                    ///< 3 县道
    AMapNaviRoadClassVillageRoad,                   ///< 4 乡公路
    AMapNaviRoadClassCountyInternalRoad,            ///< 5 县乡村内部道路
    AMapNaviRoadClassMainStreet,                    ///< 6 主要大街、城市快速道
    AMapNaviRoadClassMainRoad,                      ///< 7 主要道路
    AMapNaviRoadClassMinorRoad,                     ///< 8 次要道路
    AMapNaviRoadClassNormalRoad,                    ///< 9 普通道路
    AMapNaviRoadClassNotNaviRoad,                   ///< 10 非导航道路
};

///AMapNaviLink的主辅路信息
typedef NS_ENUM(NSInteger, AMapNaviFormWay)
{
    AMapNaviFormWayNone = -1,                       ///< -1 无效
    AMapNaviFormWayMainRoad = 1,                    ///<  1 主路
    AMapNaviFormWayInternalRoad,                    ///<  2 路口内部道路
    AMapNaviFormWayJCT,                             ///<  3 JCT道路
    AMapNaviFormWayRoundabout,                      ///<  4 环岛
    AMapNaviFormWayRestArea,                        ///<  5 服务区
    AMapNaviFormWayRamp,                            ///<  6 匝道
    AMapNaviFormWaySideRoad,                        ///<  7 辅路
    AMapNaviFormWayRampAndJCT,                      ///<  8 匝道与JCT
    AMapNaviFormWayExit,                            ///<  9 出口
    AMapNaviFormWayEntrance,                        ///< 10 入口
    AMapNaviFormWayTurnRightRoadA,                  ///< 11 A类右转专用道
    AMapNaviFormWayTurnRightRoadB,                  ///< 12 B类右转专用道
    AMapNaviFormWayTurnLeftRoadA,                   ///< 13 A类左转专用道
    AMapNaviFormWayTurnLeftRoadB,                   ///< 14 B类左转专用道
    AMapNaviFormWayNormalRoad,                      ///< 15 普通道路
    AMapNaviFormWayTurnLeftAndRightRoad,            ///< 16 左右转专用道
    AMapNaviFormWayRestAreaAndJCT = 53,             ///< 53 服务区与JCT
    AMapNaviFormWayRestAreaAndRamp = 56,            ///< 56 服务区与匝道
    AMapNaviFormWayRestAreaRampJCT = 58,            ///< 58 服务区与匝道以及JCT
};

///电子眼类型
typedef NS_ENUM(NSInteger, AMapNaviCameraType)
{
    AMapNaviCameraTypeSpeed = 0,                        //!< 0 测速摄像
    AMapNaviCameraTypeSurveillance = 1,                 //!< 1 监控摄像
    AMapNaviCameraTypeTrafficLight = 2,                 //!< 2 闯红灯拍照
    AMapNaviCameraTypeBreakRule = 3,                    //!< 3 违章拍照
    AMapNaviCameraTypeBusway = 4,                       //!< 4 公交专用道摄像头
    AMapNaviCameraTypeEmergencyLane = 5,                //!< 5 应急车道摄像头
    AMapNaviCameraTypeBicycleLane = 6,                  //!< 6 非机动车道摄像头
    AMapNaviCameraTypeIntervalVelocityStart = 8,        //!< 8 区间测速起始
    AMapNaviCameraTypeIntervalVelocityEnd = 9,          //!< 9 区间测速终止
    AMapNaviCameraTypeFlowSpeed = 10,                   //!< 10 流动测速电子眼
    AMapNaviCameraTypeETC  = 11,                        //!< 11 ETC计费拍照 since 9.0.0 新增
};

///播报模式
typedef NS_ENUM(NSInteger, AMapNaviBroadcastMode)
{
    AMapNaviBroadcastModeConcise = 1,               ///< 1 经典简洁播报(建议老司机使用)
    AMapNaviBroadcastModeDetailed,                  ///< 2 新手详细播报
};

///道路状态
typedef NS_ENUM(NSInteger, AMapNaviRouteStatus)
{
    AMapNaviRouteStatusUnknow = 0,                  ///< 0 未知状态
    AMapNaviRouteStatusSmooth,                      ///< 1 通畅
    AMapNaviRouteStatusSlow,                        ///< 2 缓行
    AMapNaviRouteStatusJam,                         ///< 3 阻塞
    AMapNaviRouteStatusSeriousJam,                  ///< 4 严重阻塞
};

///路径规划时POI点的起终点类型
typedef NS_ENUM(NSInteger, AMapNaviRoutePlanPOIType)
{
    AMapNaviRoutePlanPOITypeStart = 0,              ///< 0 起点
    AMapNaviRoutePlanPOITypeEnd,                    ///< 1 终点
    AMapNaviRoutePlanPOITypeWay,                    ///< 2 途径点
};

///可切换到的主辅路类型 since 5.3.0
typedef NS_ENUM(NSInteger, AMapNaviParallelRoadStatusFlag)
{
    AMapNaviParallelRoadStatusFlagNone = 0,         ///< 0 无主辅路可切换
    AMapNaviParallelRoadStatusFlagAssist = 1,       ///< 1 可切换到辅路
    AMapNaviParallelRoadStatusFlagMain = 2,         ///< 2 可切换到主路
};

///可切换到的高架上下类型 since 6.6.0
typedef NS_ENUM(NSInteger, AMapNaviElevatedRoadStatusFlag)
{
    AMapNaviElevatedRoadStatusFlagNone = 0,         ///< 0 无高架可切换
    AMapNaviElevatedRoadStatusFlagUnder = 1,        ///< 1 可切换到高架下
    AMapNaviElevatedRoadStatusFlagUp = 2,           ///< 2 可切换到高架上
};

///导航组件主题皮肤类型 since 5.4.0
typedef NS_ENUM(NSInteger, AMapNaviCompositeThemeType)
{
    AMapNaviCompositeThemeTypeDefault = 0,          ///< 0 蓝色系
    AMapNaviCompositeThemeTypeLight = 1,            ///< 1 浅色系
    AMapNaviCompositeThemeTypeDark = 2,             ///< 2 暗色系
};

///导航过程中提示音的类型 since 5.4.0
typedef NS_ENUM(NSInteger, AMapNaviRingType)
{
    AMapNaviRingTypeNULL = 0,                       ///< 0 无
    AMapNaviRingTypeReroute = 1,                    ///< 1 偏航重算的提示音
    AMapNaviRingTypeDing = 100,                     ///< 100 即将到达转向路口时的提示音
    AMapNaviRingTypeDong = 101,                     ///< 101 导航状态下通过测速电子眼的提示音
    AMapNaviRingTypeElecDing = 102,                 ///< 102 巡航状态下通过电子眼（所有类型）的提示音
    AMapNaviRingTypeElecOverSpeedDing = 103,        ///< 103 巡航状态下电子眼播报点超速时的提示音
};

///卫星定位信号强度类型 since 7.8.0 卫星定位信号强度类型只在导航中才有效
typedef NS_ENUM(NSInteger, AMapNaviGPSSignalStrength)
{
    AMapNaviGPSSignalStrengthUnknow = 0,    //0 信号强度未知
    AMapNaviGPSSignalStrengthStrong = 1,    //1 信号强
    AMapNaviGPSSignalStrengthWeak = 2,      //2 信号弱
    AMapNaviGPSSignalStrengthSmartPos = 3,  //3 智能定位 since 7.8.0
};

///导航组件页面回退的动作类型 since 5.5.0
typedef NS_ENUM(NSInteger, AMapNaviCompositeVCBackwardActionType)
{
    AMapNaviCompositeVCBackwardActionTypeDismiss = 0,    //0 退出了整个导航组件
    AMapNaviCompositeVCBackwardActionTypeNaviPop = 1,    //1 退出了导航组件中的导航界面
};

///路径规划类型 since 5.5.0
typedef NS_ENUM(NSInteger, AMapNaviRoutePlanType)
{
    AMapNaviRoutePlanTypeCommon = 1,                ///< 1 直接算路
    AMapNaviRoutePlanTypeYaw = 2,                   ///< 2 偏航重算
    AMapNaviRoutePlanTypeChangeStratege = 3,        ///< 3 切换算路策略
    AMapNaviRoutePlanTypeParallelRoad = 4,          ///< 4 平行路切换
    AMapNaviRoutePlanTypeTMC = 5,                   ///< 5 躲避拥堵
    AMapNaviRoutePlanTypeLimitLine = 6,             ///< 6 限行算路(车牌限行)
    AMapNaviRoutePlanTypeDamagedRoad = 7,           ///< 7 道路关闭
    AMapNaviRoutePlanTypeChangeJnyPnt = 9,          ///< 9 停车场模式/沿途搜索设置行程点
    AMapNaviRoutePlanTypeUpdateCityData = 10,       ///< 10 更新城市数据引起的重算
    AMapNaviRoutePlanTypeLimitForbid = 11,          ///< 11 限时禁行引起的重算(在线)
    AMapNaviRoutePlanTypeManualRefresh = 12,        ///< 12 手动刷新
    AMapNaviRoutePlanTypeMutiRouteRequest = 14,     ///< 14 导航中请求备选路线
    AMapNaviRoutePlanTypeDispatch = 16,             ///< 16 交警调度请求路线
    AMapNaviRoutePlanTypePushRouteData = 200,       ///< 200 PushRouteData进行导航
};

///自车位置和区间测速电子眼路段的位置关系 since 6.0.0
typedef NS_ENUM(NSInteger, AMapNaviIntervalCameraPositionState)
{
    AMapNaviIntervalCameraPositionStateNULL = 0,         ///< 0 无
    AMapNaviIntervalCameraPositionStateReady = 1,        ///< 1 即将进入区间测速路段(还未进入)
    AMapNaviIntervalCameraPositionStateIn = 2,           ///< 2 在区间测速路段内
    AMapNaviIntervalCameraPositionStateOut = 3,          ///< 3 已离开区间测速路段（包括：已经过了测速路段终点 和 中途从区间中离开了）
};

///道路设施信息类型 since 6.0.0
typedef NS_ENUM(NSInteger, AMapNaviRoadFacilityType)
{
    AMapNaviRoadFacilityTypeNULL                = 0,        ///< 0 无
    AMapNaviRoadFacilityTypeLeftInterflow       = 1,        ///< 左侧合流
    AMapNaviRoadFacilityTypeRightInterflow      = 2,        ///< 右侧合流
    AMapNaviRoadFacilityTypeSharpTurn           = 3,        ///< 急转弯
    AMapNaviRoadFacilityTypeReverseTurn         = 4,        ///< 反向转弯
    AMapNaviRoadFacilityTypeLinkingTurn         = 5,        ///< 连续转弯
    AMapNaviRoadFacilityTypeAccidentArea        = 6,        ///< 事故多发地
    AMapNaviRoadFacilityTypeFallingRocks        = 7,        ///< 注意落石
    AMapNaviRoadFacilityTypeFailwayCross        = 8,        ///< 铁路道口
    AMapNaviRoadFacilityTypeSlippery            = 9,        ///< 易滑
    AMapNaviRoadFacilityTypeMaxSpeedLimit       = 10,       ///< 最大限速标志
    AMapNaviRoadFacilityTypeMinSpeedLimit       = 11,       ///< 最小限速标志
    AMapNaviRoadFacilityTypeVillage             = 12,       ///< 村庄
    AMapNaviRoadFacilityTypeLeftNarrow          = 13,       ///< 左侧变窄
    AMapNaviRoadFacilityTypeRightNarrow         = 14,       ///< 右侧变窄
    AMapNaviRoadFacilityTypeDoubleNarrow        = 15,       ///< 两侧变窄
    AMapNaviRoadFacilityTypeCrosswindArea       = 16,       ///< 横风区
    AMapNaviRoadFacilityTypeTruckHeightLimit    = 81,       ///< 货车限高
    AMapNaviRoadFacilityTypeTruckWidthLimit     = 82,       ///< 货车限宽
    AMapNaviRoadFacilityTypeTruckWeightLimit    = 83,       ///< 货车限重
    AMapNaviRoadFacilityTypeCheckPoint          = 91,       ///< 货车检查站
};

///导航过程中关于路线的‘通知信息’的类型 since 6.2.0
typedef NS_ENUM(NSInteger, AMapNaviRouteNotifyDataType)
{
    AMapNaviRouteNotifyDataTypeNULL = 0,                    ///< 0 无效
    AMapNaviRouteNotifyDataTypeRestrictArea = 1,            ///< 1 限行区域通知
    AMapNaviRouteNotifyDataTypeForbidArea = 2,              ///< 2 禁行区域通知
    AMapNaviRouteNotifyDataTypeRoadClosedArea = 3,          ///< 3 道路关闭通知
    AMapNaviRouteNotifyDataTypeJamArea = 4,                 ///< 4 拥堵区域通知
    AMapNaviRouteNotifyDataTypeDispatch = 5,                ///< 5 交警路线调度通知
    AMapNaviRouteNotifyDataTypeChangeMainRoute = 20,        ///< 20 备选路线切换为主路线的结果通知
    AMapNaviRouteNotifyDataTypeGPSSignalWeak = 21,          ///< 21 手机卫星定位信号弱的通知
};

///AMapNaviLink的LinkType类型 since 6.3.0
typedef NS_ENUM(NSInteger, AMapNaviLinkType)
{
    AMapNaviLinkTypeNull = -1,              ///< 无效
    AMapNaviLinkTypeNormalRoad = 0,         ///< 普通道路
    AMapNaviLinkTypeFairway = 1,            ///< 航道
    AMapNaviLinkTypeUnderPass = 2,          ///< 隧道
    AMapNaviLinkTypeBridge = 3,             ///< 桥梁
    AMapNaviLinkTypeElevatedRd = 4,         ///< 地下交通通道
};

///路径的扎点信息类型 since 6.3.0
typedef NS_ENUM(NSInteger, AMapNaviRouteIconPointType)
{
    AMapNaviRouteIconPointTypeNULL = -1,                 ///< 无效类型
    AMapNaviRouteIconPointTypeFoot = 0,                  ///< 步行扎点
    AMapNaviRouteIconPointTypeVehicleFerry = 1,          ///< 汽车轮渡
    AMapNaviRouteIconPointTypeMannedFerry = 2,           ///< 载人轮渡
};

///驾车导航网约车模式 since 6.4.0
typedef NS_ENUM(NSInteger, AMapNaviOnlineCarHailingType)
{
    AMapNaviOnlineCarHailingTypeInvalid = -1,            ///< 无效类型
    AMapNaviOnlineCarHailingTypeNone = 0,                ///< 非网约车模式, 即正常的默认模式
    AMapNaviOnlineCarHailingTypePickUp = 1,              ///< 网约车接驾模式
    AMapNaviOnlineCarHailingTypeTransport = 2,           ///< 网约车送驾模式
};

///导航界面中的地图样式类型 since 6.7.0
typedef NS_ENUM(NSInteger, AMapNaviViewMapModeType)
{
    AMapNaviViewMapModeTypeDay = 0,                ///< 白天模式
    AMapNaviViewMapModeTypeNight = 1,              ///< 黑夜模式
    AMapNaviViewMapModeTypeDayNightAuto = 2,       ///< 根据日出日落时间自动切换白天黑夜
    AMapNaviViewMapModeTypeCustom = 3,             ///< 自定义地图样式 (还需传入 MAMapCustomStyleOptions )
};

///导航组件中的语音播报类型 since 7.1.0
typedef NS_OPTIONS(NSUInteger, AMapNaviCompositeBroadcastType) {
    AMapNaviCompositeBroadcastDetailed = 0,         ///< 详细播报
    AMapNaviCompositeBroadcastConcise  = 1,         ///< 简洁播报
    AMapNaviCompositeBroadcastMute     = 2,         ///< 静音
};

///驾驶三急事件枚举类型 since 9.3.5
typedef NS_ENUM(NSUInteger, AMapNaviDriveEventType) {
    AMapNaviDriveEventNone = 0,             ///< 详细播报
    AMapNaviDriveEventLeftTurn = 1,         ///< 急转弯-左转
    AMapNaviDriveEventRightTurn = 2,        ///< 急转弯-右转
    AMapNaviDriveEventLeftLaneChange = 3,   ///< 急超车-左转
    AMapNaviDriveEventRightLaneChange = 4,  ///< 急超车-右转
    AMapNaviDriveEventAccelerate = 5,       ///< 急加速
    AMapNaviDriveEventBreak = 6             ///<急减速
};

typedef NS_ENUM(NSInteger, AMapNaviOwnershipType)
{
    AMapNaviOwnershipPublicRoad = 0,            ///< 公共道路
    AMapNaviOwnershipInternalRoad = 1,          ///< 内部道路
    AMapNaviOwnershipPrivateRoad = 2,           ///< 私有道路
    AMapNaviOwnershipUndergroundParkRoad = 3,   ///< 地下停车场道路
    AMapNaviOwnership3DParkRoad = 4             ///< 立体停车场道路
};

#pragma mark - LaneInfo Image

/**
 * @brief 创建车道信息图片
 * @param laneBackInfo 车道背景信息
 * @param laneSelectInfo 车道选择信息
 * @return 车道信息图片
 */
FOUNDATION_EXTERN UIImage *CreateLaneInfoImageWithLaneInfo(NSString *laneBackInfo, NSString *laneSelectInfo);

/**
 * @brief 将驾车路线规划的偏好设置转换为驾车路径规划策略.注意：当prioritiseHighway为YES时，将忽略avoidHighway和avoidCost的设置
 * @param multipleRoute 是否多路径规划
 * @param avoidCongestion 是否躲避拥堵
 * @param avoidHighway 是否不走高速
 * @param avoidCost 是否避免收费
 * @param prioritiseHighway 是否高速优先
 * @return AMapNaviDrivingStrategy路径规划策略
 */
FOUNDATION_EXTERN AMapNaviDrivingStrategy ConvertDrivingPreferenceToDrivingStrategy(BOOL multipleRoute,
                                                                                    BOOL avoidCongestion,
                                                                                    BOOL avoidHighway,
                                                                                    BOOL avoidCost,
                                                                                    BOOL prioritiseHighway);

#pragma mark - AMapNaviPoint

@interface AMapNaviPoint : NSObject<NSCopying,NSCoding>

///纬度
@property (nonatomic, assign) CGFloat latitude;

///经度
@property (nonatomic, assign) CGFloat longitude;

/**
 * @brief AMapNaviPoint类对象的初始化函数
 * @param lat 纬度
 * @param lon 经度
 * @return AMapNaviPoint类对象id
 */
+ (AMapNaviPoint *)locationWithLatitude:(CGFloat)lat longitude:(CGFloat)lon;

/**
 * @brief 判断点是否与当前点相同
 * @param aPoint 需要判断的点
 * @return 两个点是否相同
 */
- (BOOL)isEqualToNaviPoint:(AMapNaviPoint *)aPoint;

@end

#pragma mark - AMapNaviPointBounds

@interface AMapNaviPointBounds : NSObject<NSCopying,NSCoding>

///东北角坐标
@property (nonatomic, strong) AMapNaviPoint *northEast;

///西南角坐标
@property (nonatomic, strong) AMapNaviPoint *southWest;

/**
 * @brief AMapNaviPointBounds类对象的初始化函数
 * @param northEast 东北角经纬度
 * @param southWest 西南角经纬度
 * @return AMapNaviPointBounds类对象id
 */
+ (AMapNaviPointBounds *)pointBoundsWithNorthEast:(AMapNaviPoint *)northEast southWest:(AMapNaviPoint *)southWest;

@end

#pragma mark - AMapNaviGuide

///导航段信息类
@interface AMapNaviGuide : NSObject<NSCopying,NSCoding>

///导航段名称
@property (nonatomic, strong) NSString *name;

///导航段长度
@property (nonatomic, assign) NSInteger length;

///导航段时间
@property (nonatomic, assign) NSInteger time;

///导航段转向类型
@property (nonatomic, assign) AMapNaviIconType iconType;

///导航段路口点的坐标
@property (nonatomic, strong) AMapNaviPoint *coordinate;

@end

#pragma mark - AMapNaviGroupSegment

///聚合段信息类 since 5.1.0
@interface AMapNaviGroupSegment : NSObject<NSCopying>

///聚合段名称
@property (nonatomic, strong) NSString *groupName;

///聚合段长度,单位:米
@property (nonatomic, assign) NSInteger distance;

///聚合段收费金额,单位:元
@property (nonatomic, assign) NSInteger toll;

///聚合段包含的起始导航段下标
@property (nonatomic, assign) NSInteger startSegmentID;

///聚合段包含导航段个数
@property (nonatomic, assign) NSInteger segmentCount;

///聚合段是否到达途径点
@property (nonatomic, assign) BOOL isArriveWayPoint;

@end

#pragma mark - AMapNaviTrafficStatus

///前方交通路况信息类
@interface AMapNaviTrafficStatus : NSObject<NSCopying>

///道路状态
@property (nonatomic, assign) AMapNaviRouteStatus status;

/*
 带有深绿路况新的表达方式的交通状态
 畅通状态: 100--200;  而不在 [110，140)深绿、 [160，190）绿内，则路况状态默认为 “畅通”（绿色）
 缓行状态: 200--300;  而不在 [210，290）内， 则路况状态默认为 “缓行”（黄色）
 拥堵状态: 300--400;  而不在 [310，340）拥堵、 [360，390）极度拥堵内，则路况状态默认为“拥堵”（红色）
 无交通流: 900--999;  路况全部为“无交通流”
 在以上区间之外的，包括0 以及所有其他无效值，均按照“未知”处理。
 特别注意：当前接口为收费接口，您如果申请试用或者正式应用都请通过工单系统提交商务合作类工单进行沟通 https://lbs.amap.com/ since 9.6.0
 */
@property (nonatomic, assign) NSInteger trafficFineStatus;

///该交通状态的路段长度
@property (nonatomic, assign) NSInteger length;

@end

#pragma mark - AMapNaviIntervalCameraDynamicInfo

///区间测速电子眼的动态信息 since 6.0.0
@interface AMapNaviIntervalCameraDynamicInfo : NSObject <NSCopying>

///区间测速路段的总长度
@property (nonatomic, assign) NSInteger length;

///进入区间测速路段后实时的区间路段剩余长度
@property (nonatomic, assign) NSInteger remainDistance;

///进入区间测速路段后的实时平均车速
@property (nonatomic, assign) NSInteger averageSpeed;

///进入区间测速路段后的剩余路段的合理车速
@property (nonatomic, assign) NSInteger reasonableSpeedInRemainDist;

@end

#pragma mark - AMapNaviCameraInfo

///电子眼信息类
@interface AMapNaviCameraInfo : NSObject <NSCopying>

///电子眼类型
@property (nonatomic, assign) AMapNaviCameraType cameraType;

///电子眼限速，0表示没有限速, 实际速度表示道路的限速值，单位km/h. 注意:-2表示没有采集到限速数据，-1表示该车道禁行 且只有在cameraType 为AMapNaviCameraTypeIntervalVelocityStart 和AMapNaviCameraTypeIntervalVelocityEnd 的时候生效.
@property (nonatomic, assign) NSInteger cameraSpeed;

///电子眼经纬度
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///到电子眼的距离，-1表示没有剩余距离信息。
@property (nonatomic, assign) NSInteger distance;

///区间测速电子眼的动态信息. 注意：只有在导航的过程中且 cameraType 为 AMapNaviCameraTypeIntervalVelocityEnd 的时候才有. since 6.0.0
@property (nonatomic, strong) AMapNaviIntervalCameraDynamicInfo *intervalCameraDynamicInfo;

@end

#pragma mark - AMapNaviServiceAreaInfo


///服务区域信息 since 5.0.0
@interface AMapNaviServiceAreaInfo : NSObject <NSCopying>

///到服务区域的距离
@property (nonatomic, assign) NSInteger remainDistance;

///服务区域类型(0服务区,1收费站,2检查站)
@property (nonatomic, assign) NSInteger type;

///服务区域名称
@property (nonatomic, strong) NSString *name;

///服务区域经纬度
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///服务区详细信息：按位标识（0-没有，1-有），第0~5位分别表示加油站,餐饮,卫生间,汽修,购物,住宿. since 8.0.0
@property (nonatomic, assign) NSUInteger sapaDetail;

@end

#pragma mark - AMapNaviCruiseInfo

///巡航模式信息类
@interface AMapNaviCruiseInfo : NSObject

///连续启用时间(单位:秒)
@property (nonatomic, assign) NSInteger cruisingDriveTime;

///连续行驶距离(单位:米)
@property (nonatomic, assign) NSInteger cruisingDriveDistance;

@end

#pragma mark - AMapNaviTrafficFacilityInfo

/**
 * 道路设施类型
 * 0：未知道路设施
 * 4：测速拍照
 * 5：违章拍照
 * 12：铁路道口
 * 13：左侧落石
 * 14：事故易发地段
 * 15：路段易滑
 * 16：村庄
 * 18：学校
 * 19：有人看管的铁路道口
 * 20：无人看管的铁路道口
 * 21：道路两侧变窄
 * 22：向左急弯路
 * 23：向右急弯路
 * 24：反向弯路
 * 25：连续弯路
 * 26：左侧车辆交汇处
 * 27：右侧车辆交汇处
 * 28：监控摄像
 * 29：公交专用道拍照
 * 31：禁止超车
 * 36：右侧变窄
 * 37：左侧变窄
 * 38：窄桥
 * 39：左右绕行
 * 40：左侧绕行
 * 41：右侧绕行
 * 42：右侧落石
 * 43：左侧靠山险路
 * 44：右侧靠山险路
 * 47：上陡坡
 * 48：下陡坡
 * 49：过水路面
 * 50：路面不平
 * 52：慢行
 * 53：事故多发,注意危险
 * 54：横风区
 * 58：隧道
 * 59：渡口
 * 92:闯红灯拍照
 * 93:应急车道拍照
 * 94:非机动车道拍照
 * 100：违章高发地
 */

///道路交通设施类
@interface AMapNaviTrafficFacilityInfo : NSObject

///经纬度
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///类型，请参考 “道路设施类型” 的注释
@property (nonatomic, assign) NSInteger boardcastType;

///距离设施的剩余距离(单位:米)
@property (nonatomic, assign) NSInteger distance;

///限速值(单位:公里/小时)
@property (nonatomic, assign) NSInteger limitSpeed;

@end

#pragma mark - AMapNaviCruiseLinkStatus

///巡航拥堵状态下Link的形状点信息 since 6.7.0
@interface AMapNaviCruiseLinkStatus : NSObject

///拥堵形状点
@property (nonatomic, strong) NSArray <AMapNaviPoint *>*shapePoints;

///拥堵状态
@property (nonatomic, assign) AMapNaviRouteStatus status;

@end

#pragma mark - AMapNaviCruiseCongestionInfo

///巡航中拥堵区域信息  since 6.7.0
@interface AMapNaviCruiseCongestionInfo : NSObject

///拥堵区域道路名
@property (nonatomic, copy) NSString *roadName;

///整体拥堵状态
@property (nonatomic, assign) AMapNaviRouteStatus congestionStatus;

///预估到达时间 (单位:秒)
@property (nonatomic, assign) NSInteger etaTime;

///拥堵长度(单位:米)
@property (nonatomic, assign) NSInteger length;

///拥堵区域的状态描述对象
@property (nonatomic, strong) AMapNaviCruiseLinkStatus *pLinkData;

///link数组个数
@property (nonatomic, assign) NSInteger linkCnt;

///事件类型，已废弃，since 7.0.0  .
@property (nonatomic, assign) NSInteger eventType __attribute__((deprecated("该字段已废弃，since 7.0.0")));

///事件经纬度，已废弃，since 7.0.0 .
@property (nonatomic, strong) AMapNaviPoint *eventPos __attribute__((deprecated("该字段已废弃，since 7.0.0")));

@end

#pragma mark - AMapNaviRouteLabel

///道路标签信息 since 5.0.0
@interface AMapNaviRouteLabel : NSObject <NSCopying>

///标签类型
@property (nonatomic, assign) NSInteger type;

///标签内容
@property (nonatomic, strong) NSString *content;

@end

#pragma mark - AMapNaviRestrictionInfo

///路径限行信息 since 5.0.0
@interface AMapNaviRestrictionInfo : NSObject <NSCopying>

///-1:无效值; 0:外地车限行,建议设置车牌; 1:外地车限行,建议开启限行; 2:已避开限行区域; 3:起点在限行区域内; 4:终点在限行区域内; 5:途经点在限行区域内; 6:途经限行区域; 7:已提前避开即将生效的限行区域; 8:路线上目前有限行, 但根据估算时间，行驶到该限行区域时，限行已失效. 
@property (nonatomic, assign) NSInteger titleType;

///标题
@property (nonatomic, strong) NSString *title;

///tips描述，titleType为0或1时才有描述
@property (nonatomic, strong) NSString *tips;

///城市代码
@property (nonatomic, assign) NSInteger cityCode;

///描述 该字段已废弃，since 6.0.0
@property (nonatomic, strong) NSString *desc __attribute__((deprecated("该字段已废弃，since 6.0.0")));

///该字段已废弃,请使用 titleType . since 6.0.0
@property (nonatomic, assign) NSInteger type __attribute__((deprecated("该字段已废弃,请使用 titleType . since 6.0.0"))) ;

@end

#pragma mark - AMapNaviParallelRoadStatus

///平行路状态信息 since 5.3.0
@interface AMapNaviParallelRoadStatus : NSObject

///主辅路标识(存在主辅路时,可切换到的主辅路类型)
@property (nonatomic, assign) AMapNaviParallelRoadStatusFlag flag;

///高架上下标识(存在高架时,可切换到的高架上下类型) since 6.6.0
@property (nonatomic, assign) AMapNaviElevatedRoadStatusFlag hwFlag;

///道路切换状态;
@property (nonatomic, assign) NSInteger status __attribute__((deprecated("该字段已废弃. since 7.0.0")));

@end

#pragma mark - AMapNaviVehicleInfo

///车辆信息 since 6.0.0
@interface AMapNaviVehicleInfo : NSObject <NSCopying,NSCoding>

///车牌号,如"京H1N11", since 8.0.0 支持摩托车车牌号.
@property (nonatomic, strong) NSString *vehicleId;

///是否开启ETA请求的躲避车辆限行, 默认为YES. 注意:只有设置为YES, 且设置了车牌号才能躲避车辆限行
@property (nonatomic, assign) BOOL isETARestriction;

///设置车辆类型, 0:燃油客车; 1:燃油货车; 2:纯电动客车; 3:纯电动货车; 4:插电式混动客车; 5:插电式混动货车; since 8.0.0 新增11:摩托车. 默认0(小车). 注意:只有设置了货车, 其他关于货车的属性设置才会生效
@property (nonatomic, assign) NSInteger type;

///算路时是否忽略货车重量, 默认为No, 即不忽略, 也就是算路时会考虑货车的重量. 如为YES,就会忽略货车重量. since 6.2.0
@property (nonatomic, assign) BOOL isLoadIgnore;

///设置货车的类型(大小), 1:微型货车; 2:轻型/小型货车; 3:中型货车; 4:重型货车, 默认为2
@property (nonatomic, assign) NSInteger size;

///设置货车的轴数(用来计算过路费及限重), 取值[0-255], type = 1时生效, 默认为2
@property (nonatomic, assign) NSInteger axisNums;

///设置货车的宽度, 范围:[0-25.5], 单位:米, type = 1时生效, 默认2.5米
@property (nonatomic, assign) CGFloat width;

///设置货车的高度, 范围:取值[0-25.5], 单位:米, type = 1时生效, 默认1.6米
@property (nonatomic, assign) CGFloat height;

///设置货车的最大长度, 取值[0-25], 单位:米, type = 1时生效, 默认6米
@property (nonatomic, assign) CGFloat length;

///设置货车的总重, 范围:取值[0-6553.5], 单位:吨, type = 1时生效, 注意:总重 = 车重 + 核定载重
@property (nonatomic, assign) CGFloat load;

///设置货车的核定载重, 范围:取值[0-6553.5], 单位:吨, type = 1时生效
@property (nonatomic, assign) CGFloat weight;

///摩托车排量, 单位: 毫升  since 8.0.0
@property (nonatomic, assign) NSInteger motorcycleCC;

@end

#pragma mark - AMapNaviNotAvoidFacilityAndForbiddenInfo

///导航过程中的没有避开的设施、禁行标志等信息 since 6.0.0
@interface AMapNaviNotAvoidFacilityAndForbiddenInfo : NSObject <NSCopying,NSCoding>

///类型,1:限高; 2:限宽; 3:限重; 4:禁行
@property (nonatomic, assign) NSInteger type;

///禁行类型,-1:无效; 0:禁止左转; 1:禁止右转; 2:禁止左掉头; 3:禁止右掉头; 4:禁止直行
@property (nonatomic, assign) NSInteger forbiddenType;

///自车到设施的距离，-1表示没有剩余距离信息。
@property (nonatomic, assign) NSInteger distance;

///设施的经纬度
@property (nonatomic, strong) AMapNaviPoint *coordinate;

@end

#pragma mark - AMapNaviRouteForbiddenInfo

/** 车型
 *  第1位：全部车型
 *  第2位：小车
 *  第3位：微型货车
 *  第4位：轻型货车
 *  第5位：中型货车
 *  第6位：重型货车
 *  第7位：拖挂
 *  第8位：保留
 */
///路线上的禁行标示信息 since 6.0.0
@interface AMapNaviRouteForbiddenInfo : NSObject <NSCopying>

///类型, 0:禁止左转; 1:禁止右转; 2:禁止左掉头; 3:禁止右掉头; 4:禁止直行
@property (nonatomic, assign) NSInteger type;

///车型, 用一个长度为8的字符串表示，每一位上的数字如果为1, 表示该车型禁行，如果为0, 表示该车型不禁行. 如 '00001110' 表示'中型货车、重型货车、拖挂'禁行
@property (nonatomic, strong) NSString *vehicleType;

///禁行标示所在的位置
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///禁行相关的时间信息
@property (nonatomic, strong) NSString *timeDescription;

///禁行标示所在的道路名
@property (nonatomic, strong) NSString *roadName;

@end

#pragma mark - AMapNaviRoadFacilityInfo

///道路设施信息 since 6.0.0
@interface AMapNaviRoadFacilityInfo : NSObject <NSCopying>

///设施类型
@property (nonatomic, assign) AMapNaviRoadFacilityType type;

///设施所在的位置
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///设施所在的道路名
@property (nonatomic, strong) NSString *roadName;

@end

#pragma mark - AMapNaviRouteNotifyData

///实时导航过程中关于路线的‘通知信息’ since 6.2.0
@interface AMapNaviRouteNotifyData : NSObject <NSCopying>

///信息的类型
@property (nonatomic, assign) AMapNaviRouteNotifyDataType type;

///是否成功避开了：限行区域、禁行区域、道路关闭区域、拥堵区域; 是否成功了切换了主备选路线
@property (nonatomic, assign) BOOL success;

///当前位置距信息发生位置的距离. 注意：-1代表距离无效; 0代表当前已处在信息发生的范围内
@property (nonatomic, assign) NSInteger distance;

///信息发生的位置坐标
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///信息发生所在道路的名字
@property (nonatomic, copy) NSString *roadName;

///信息发生的原因
@property (nonatomic, copy) NSString *reason;

///信息的补充说明
@property (nonatomic, copy) NSString *subTitle;

@end

#pragma mark - AMapNaviCongestionInfo

///实时导航中的拥堵区域信息 since 6.3.0
@interface AMapNaviCongestionInfo : NSObject <NSCopying>

///离自车位置最近的拥堵区域的总长度（单位：米), 如果当前自车位置已在拥堵区域内，表示的就是剩余的拥堵距离
@property (nonatomic, assign) NSInteger remainDistance;

///预计通过该拥区域的时长（单位：秒), 如果当前自车位置已在拥堵区域内，表示的就是剩余拥堵段的通过时长
@property (nonatomic, assign) NSInteger remainTime;

///当前自车位置是否在拥堵区域内
@property (nonatomic, assign) BOOL inCongestionArea;

///拥堵程度, 只会是: AMapNaviRouteStatusSlow, AMapNaviRouteStatusJam, AMapNaviRouteStatusSeriousJam
@property (nonatomic, assign) AMapNaviRouteStatus status;

///该拥堵区域的起始Segment的索引
@property (nonatomic, assign) NSInteger beginSegmentIndex;

///该拥堵区域的起始Segment中起始link的索引
@property (nonatomic, assign) NSInteger beginLinkIndex;

///该拥堵区域的结束Segment的索引
@property (nonatomic, assign) NSInteger endSegmentIndex;

///该拥堵区域的结束Segment中结束link的索引
@property (nonatomic, assign) NSInteger endLinkIndex;

@end

#pragma mark - AMapNaviSuggestChangeMainNaviRouteInfo

///多路线导航模式下，建议将某备选路线切换为主导航路线 since 6.3.0
@interface AMapNaviSuggestChangeMainNaviRouteInfo : NSObject <NSCopying>

///建议切换为主导航路线的备选路线
@property (nonatomic, weak) AMapNaviRoute *backupRoute;

///该备选路线比目前主导航路线节省的时间, 单位：秒
@property (nonatomic, assign) NSInteger savingTime;

///该备选路线途径的主要道路名称
@property (nonatomic, copy) NSString *wayRoadName;

@end

#pragma mark - AMapNaviRouteIconPoint

///路径的扎点信息 since 6.3.0
@interface AMapNaviRouteIconPoint : NSObject <NSCopying>

///扎点类型
@property (nonatomic, assign) AMapNaviRouteIconPointType type;

///扎点坐标点
@property (nonatomic, strong) AMapNaviPoint *point;

@end

#pragma mark - AMapNaviTrafficIncidentInfo

///路径交通事件信息  since 6.4.0
@interface AMapNaviTrafficIncidentInfo : NSObject <NSCopying>

///标题
@property (nonatomic, strong) NSString *title;

///信息发生的位置坐标
@property (nonatomic, strong) AMapNaviPoint *coordinate;

///0:起点所在道路上有避不开的封路事件; 1:途径点所在道路上有避不开的封路事件; 2:终点所在道路上有避不开的封路事件; 3:非起点、非途径点、非终点所在道路上有避不开的封路事件; 4:可以避开的封路事件; 5:路径上的非封路事件; 6:排序干预; 7:终点干预
@property (nonatomic, assign) NSInteger titleType;

@end

#pragma mark - AMapNaviPOIInfo

///高德POI信息 since 6.4.0
@interface AMapNaviPOIInfo : NSObject <NSCopying>

///POI的id
@property (nonatomic, copy) NSString *mid;

///POI的坐标点
@property (nonatomic, strong) AMapNaviPoint *locPoint;

///车头方向角度, 默认为-1, 0为正北, 顺时针方向增加. 注意：mid == nil && locPoint != nil && startAngle >=0 才起作用. since 6.6.0
@property (nonatomic, assign) double startAngle;

@end

#pragma mark - AMapNaviParallelRoadInfo

///平行路切换信息 since 6.6.0
@interface AMapNaviParallelRoadInfo : NSObject

///切换类型, 1:主辅路切换; 2:高架桥上下切换
@property (nonatomic, assign) NSInteger type;

@end

#pragma mark - AMapNaviToWayPointInfo

///当前自车位置到途经点的信息 since 6.7.0
@interface AMapNaviToWayPointInfo : NSObject <NSCopying>

///途径点POI的id
@property (nonatomic, copy) NSString *mid;

///途径点的坐标
@property (nonatomic, strong) AMapNaviPoint *point;

///剩余的距离,单位:米
@property (nonatomic, assign) NSInteger remainDistance;

///剩余的时间,单位:秒
@property (nonatomic, assign) NSInteger remainTime;

/// 获取自车位置到前方第一个途径点的红绿灯数量 since 9.5.0
@property (nonatomic, assign) NSInteger trafficlightNum;

@end


#pragma mark - AMapNaviRouteWayPointInfo

///路线上的途径点信息 since 6.7.0
@interface AMapNaviRouteWayPointInfo : NSObject <NSCopying>

///途径点POI的id
@property (nonatomic, copy) NSString *mid;

///途径点的坐标
@property (nonatomic, strong) AMapNaviPoint *point;

///途径点所在的segment在AMapNaviRoute.routeSegments中的索引值
@property (nonatomic, assign) NSUInteger segmentIndexInRoute;

///途径点在AMapNaviRoute.routeCoordinates中的索引值
@property (nonatomic, assign) NSUInteger pointIndexInRoute;

@end


#pragma mark - AMapNaviExitBoardInfo

///高速或城市快速路的出口路牌信息 since 6.8.0
@interface AMapNaviExitBoardInfo : NSObject <NSCopying>

///出口编号名字
@property (nonatomic, strong) NSArray <NSString *> *exitNames;

///路牌方向名字
@property (nonatomic, strong) NSArray <NSString *> *directionInfos;

@end

#pragma mark - AMapNaviDriveComfort

///道路舒适度信息 since 9.3.5
@interface AMapNaviDriveComfort : NSObject<NSCopying>

///驾驶事件类型
@property (nonatomic, assign) double  statusComfortIndex;

///事件开始地点纬度
@property (nonatomic, assign) double  statusStartLatitude;

///事件开始地点经度
@property (nonatomic, assign) double  statusStartLongitude;

///事件结束地点纬度
@property (nonatomic, assign) double  statusEndLatitude;

///事件结束地点经度
@property (nonatomic, assign) double  statusEndLongitude;

///事件开始时间
@property (nonatomic, assign) NSInteger statusStartTime;

///事件结束时间
@property (nonatomic, assign) NSInteger statusEndTime;

@end

#pragma mark - AMapNaviDriveEvent

///驾驶三急（急加速/急减速/急转弯）事件信息 since 9.3.5
@interface AMapNaviDriveEvent : NSObject<NSCopying>

///驾驶事件类型
@property (nonatomic, assign) AMapNaviDriveEventType eventType;

///驾驶事件严重程度
@property (nonatomic, assign) double  eventLevel;

///事件地点纬度
@property (nonatomic, assign) double  eventLatitude;

///事件地点经度
@property (nonatomic, assign) double  eventLongitude;

///事件开始时间
@property (nonatomic, assign) NSInteger eventStartTime;

///事件结束时间
@property (nonatomic, assign) NSInteger eventEndTime;

///事件最大速度
@property (nonatomic, assign) double  eventMaxSpeed;

///事件最大加速度
@property (nonatomic, assign) double  eventMaxAcc;

@end
