/**
 * 点座标
 */
export interface Point {
    x: number;
    y: number;
}

/**
 * 地理座标
 */
export interface LatLng {
    /**
     * 纬度
     */
    latitude: number;

    /**
     * 经度
     */
    longitude: number;
}

export interface LatLngPoint extends LatLng {}

export interface NaviLatLng extends LatLng {}

interface Step {
    action: string;
    assistantAction: string;
    distance: number;
    duration: number;
    instruction: string;
    orientation: string;
    polyline: LatLng[];
    road: string;
}

export interface WalkStep extends Step {}

export interface RideStep extends Step {}

export interface WalkPathData {
    steps: WalkStep[];
}

export interface RidePathData {
    steps: RideStep[];
}

export interface NaviPoi {
    name: string;
    coordinate: LatLng;
    poiId: string;
    direction?: number;
}

export interface NaviLocation {
    accuracy: number;
    altitude: number;
    bearing: number;
    coord: NaviLatLng;
    curLinkIndex: number;
    curPointIndex: number;
    curStepIndex: number;
    locationType: number;
    isMatchNaviPath: boolean;
    speed: number;
    time: number;
}

export interface NaviCalculateRouteResult {
    errorCode: number;
    errorDetail: string;
    errorDescription: string;
    routeId: number[];
}
/**
 * 区域
 */
export interface Region extends LatLng {
    /**
     * 纬度范围
     */
    latitudeDelta: number;

    /**
     * 经度范围
     */
    longitudeDelta: number;
}

/**
 * 地图状态
 */
export interface MapStatus {
    /**
     * 中心坐标
     */
    center: LatLng;

    /**
     * 缩放级别
     */
    zoomLevel: number;

    /**
     * 朝向、旋转角度
     */
    rotation: number;

    /**
     * 倾斜角度
     */
    tilt: number;

    /**
     * 显示区域
     */
    region: Region;
}

/**
 * 定位
 */
export interface Location extends LatLng {
    /**
     * 精度
     */
    accuracy: number;

    /**
     * 朝向
     */
    heading: number;

    /**
     * 海拔
     */
    altitude: number;

    /**
     * 运动速度
     */
    speed: number;
}

/**
 * 地图类型
 */
export enum MapType {
    /**
     * 标准地图
     */
    Standard,

    /**
     * 卫星地图
     */
    Satellite,

    /**
     * 夜间地图
     */
    Night,

    /**
     * 导航地图
     */
    Navi,

    /**
     * 公交地图
     */
    Bus,
}

export enum WeatherType {
    /**
     * 无天气效果
     */
    None = -1,
    /**
     * 晴天效果
     */
    SUNNY = 0,
    /**
     * 下雨效果
     */
    RAIN = 1,
    /**
     * 下雪效果
     */
    SNOWY = 2,
    /**
     * 雾霾效果
     */
    HAZE = 3,
}
/**
 * 导航类型
 */
export enum NaviType {
    NONE = -1,
    GPS = 1,
    EMULATOR = 2,
    CRUISE = 3,
}

/**
 * 导航显示模式
 */
export enum NaviShowMode {
    /**
     * 锁车
     */
    Lock = 1,
    /**
     * 全览
     */
    Overview = 2,
    /**
     * 普通
     */
    Normal = 3,
}

export enum NaviTrackingMode {
    /**
     * 正北朝上
     */
    MapNorth = 0,
    /**
     * 车头朝上
     */
    CarNorth = 1,
}
