UNPKG

@tuoyuan/map-container

Version:

地图容器组件

70 lines (69 loc) 2.46 kB
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>; }