@tuoyuan/map-container
Version:
地图容器组件
70 lines (69 loc) • 2.46 kB
TypeScript
import { AbstractMarker, AbstractPolygon, AbstractPolyline, IMarker, IPolygon, IPolyline } from '@tuoyuan/map-adapter-lib';
/** 几何ID */
export type GeometryId = string | number;
/** 几何类型 */
export type GeometryType = 'marker' | 'polygon' | 'polyline';
/** 几何图形基础配置 */
export interface IBaseGeometryOptions {
/** ID */
id: GeometryId;
/** 类型 */
type: GeometryType;
/** 名称 */
name: string;
/** 业务数据 */
data?: Record<string, any>;
/** 是否可见 */
visible?: boolean;
}
/** Marker配置 */
export type MarkerOptions = IBaseGeometryOptions & Pick<IMarker, 'position' | 'style' | 'label'> & {
type: 'marker';
};
/** Polyline配置 */
export type PolylineOptions = IBaseGeometryOptions & Pick<IPolyline, 'path' | 'style' | 'label'> & {
type: 'polyline';
};
/** Polygon配置 */
export type PolygonOptions = IBaseGeometryOptions & Pick<IPolygon, 'path' | 'style' | 'label' | 'holes'> & {
type: 'polygon';
};
/** 地图几何图形配置 */
export type MapGeometryOptions = MarkerOptions | PolylineOptions | PolygonOptions;
export type AbstractMapGeometry = AbstractMarker | AbstractPolyline | AbstractPolygon;
export interface IMapGeometry {
/** 几何ID */
id: GeometryId;
/** 几何类型 */
type: GeometryType;
/** 名称 */
name: string;
/** 几何图形 */
geometry: AbstractMapGeometry;
/** 业务数据 */
data?: Record<string, any>;
/** 是否可见 */
visible?: boolean;
}
export interface IBaseGeometry<T extends Record<string, any> = {}> {
type: string;
properties?: T;
bbox?: [number, number, number, number];
}
export interface IPointGeometry<T extends Record<string, any> = {}> extends IBaseGeometry<T> {
type: 'Point';
coordinates: [number, number];
}
export interface ILineStringGeometry<T extends Record<string, any> = {}> extends IBaseGeometry<T> {
type: 'LineString';
coordinates: [number, number][];
}
export interface IPolygonGeometry<T extends Record<string, any> = {}> extends IBaseGeometry<T> {
type: 'Polygon';
coordinates: [number, number][][];
}
export type GeometryData<K extends Record<string, any> = {}> = IPointGeometry<K> | ILineStringGeometry<K> | IPolygonGeometry<K>;
export interface IFeatureGeometry<T extends Record<string, any> = {}, K extends Record<string, any> = {}> extends IBaseGeometry<T> {
type: 'Feature';
geometry: GeometryData<K>;
}