UNPKG

@jcmap-sdk-web/navegador

Version:

甲虫室内定位导航引擎

146 lines (136 loc) 3.14 kB
import type { Point, LineString } from "@turf/turf"; import type { StrictFeature, StrictFeatureCollection, } from "@jcmap-sdk-web/jcmap"; import type { NavigationPosition } from "@jcmap-sdk-web/locator"; /** * 导航模式 */ export type NavigationMode = 0 | 1; export const NavigationModes: { [key: string]: NavigationMode } = { Walking: 0, Driving: 1, }; /** * 导航状态 */ export interface NavigationStatus { nextDirection: Direction; nextCartogramId: string; distanceToCorner: number; distanceToEnd: number; cornerNum: number; text?: string; } export type NavigationDisplayMode = "视角" | "正北" | "线路"; export const NavigationDisplayModes: { [key: string]: NavigationDisplayMode; } = { ARROW_UP: "视角", // 导航箭头固定指向上方,地图整体随设备旋转 FACE_NORTH: "正北", // 地图固定为正北方向,设备旋转时导航箭头随之旋转 LINE_UP: "线路", // 导航路线固定指向上方,在拐弯时旋转地图保持路线指向上方,导航箭头随设备旋转 }; /** * 映射到道路上的地图位置 */ export interface NavigationPositionOnRoad extends StrictFeature< Point, NavigationPosition["properties"] & { road_index: number; } > {} /** * 映射到导航链上的地图位置 */ export interface NavigationPositionOnChain extends StrictFeature< Point, NavigationPositionOnRoad["properties"] & { segment_index: number; } > {} /** * 导航方向 */ export type Direction = | 0 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36; export const Directions: { [key: string]: Direction } = { Keep: 0, Left: 11, Right: 12, Straight: 13, Arrive: 14, LeftArrive: 15, RightArrive: 16, LeftForward: 17, RightForward: 18, LeftLeft: 21, LeftRight: 22, RightRight: 23, RightLeft: 24, LeftChangeFloor: 25, RightChangeFloor: 26, LeftChangeFloorLeft: 27, LeftChangeFloorRight: 28, LeftChangeFloorStraight: 29, RightChangeFloorLeft: 30, RightChangeFloorRight: 31, RightChangeFloorStraight: 32, StraightChangeFloorLeft: 33, StraightChangeFloorRight: 34, ChangeFloor: 35, StraightChangeFloorStraight: 36, }; interface NavigationSegmentProperties { segment_index: number; "starting:cartogram:id": string; "starting:cartogram:floor_number": number; "starting:cartogram:floor_label": string; "starting:building:id": string; "starting:building:name": string; "starting:road_index": number; "finishing:cartogram:id": string; "finishing:cartogram:floor_number": number; "finishing:cartogram:floor_label": string; "finishing:building:id": string; "finishing:building:name": string; "finishing:road_index": number; distance: number; next_direction: Direction; } /** * 导航段 */ export interface NavigationSegment extends StrictFeature<LineString, NavigationSegmentProperties> {} /** * 导航链 */ export interface NavigationChain extends StrictFeatureCollection<LineString, NavigationSegmentProperties> {}