@jcmap-sdk-web/navegador
Version:
甲虫室内定位导航引擎
146 lines (136 loc) • 3.14 kB
text/typescript
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> {}