import { Color, Vector3, Object3D } from "three"; import { LineMaterial } from '../jsm/lines/LineMaterial'; import type { IStandardLine } from '../Line/types'; export interface IAnimateOption { size?: number; length?: number; color?: Color; speed?: number; } export interface IHighlightFillOption { fill: Object3D; highlightColor?: Color; } export interface IOuterOutlineOption extends IOutlineOption { geojson: GeoJsonType; showLine?: boolean; animate?: boolean; animateOption?: IAnimateOption; } export interface IOutlineOption extends IStandardLine { lineColor?: Color; material?: LineMaterial; offset?: Vector3; } export interface IGeojsonConstructorOption { geojson: GeoJsonType; scale?: number; center?: [number, number]; } export interface IExtrudeOptions { depth?: number; color1?: Color; color2?: Color; sweepColor?: Color; sweepSpeed?: number; sweepLength?: number; sweepInterval?: number; } export interface GeoJsonType { type: "FeatureCollection"; features: GeoJsonFeature[]; } export interface GeoJsonFeature { type: string; properties: { adcode: number; name: string; center: [number, number]; centroid: [number, number]; centerT: [number, number]; centroidT: [number, number]; childrenNum: number; level: Geolevel; parent: { adcode: number; }; subFeatureIndex: number; acroutes: number[]; }; geometry: { type: GeometryType; coordinates: GeometryCoordinates; }; vector3: any[][]; } export declare type Geolevel = "province" | "city" | "district"; export declare type GeometryType = "Point" | "LineString" | "Polygon" | "MultiPoint" | "MultiLineString" | "MultiPolygon" | "GeometryCollection"; export declare type GeometryCoordinates = T extends "Point" ? [number, number] : T extends "LineString" ? [number, number][] : T extends "Polygon" ? [number, number][][] : T extends "MultiPoint" ? [number, number][] : T extends "MultiLineString" ? [number, number][][] : T extends "MultiPolygon" ? [number, number][][][] : T extends "GeometryCollection" ? any : never;