import ComponentModel from '../../model/Component.js'; import Model from '../../model/Model.js'; import Geo from './Geo.js'; import { ComponentOption, BoxLayoutOptionMixin, ItemStyleOption, ZRColor, LabelOption, DisplayState, RoamOptionMixin, AnimationOptionMixin, StatesOptionMixin, Dictionary, CommonTooltipOption, StatesMixinBase } from '../../util/types.js'; import { GeoProjection, NameMap } from './geoTypes.js'; import GlobalModel from '../../model/Global.js'; export interface GeoItemStyleOption extends ItemStyleOption { areaColor?: ZRColor; } interface GeoLabelOption extends LabelOption { formatter?: string | ((params: GeoLabelFormatterDataParams) => string); } export interface GeoStateOption { itemStyle?: GeoItemStyleOption; label?: GeoLabelOption; } interface GeoLabelFormatterDataParams { name: string; status: DisplayState; } export interface RegoinOption extends GeoStateOption, StatesOptionMixin { name?: string; selected?: boolean; tooltip?: CommonTooltipOption; } export interface GeoTooltipFormatterParams { componentType: 'geo'; geoIndex: number; name: string; $vars: ['name']; } export interface GeoCommonOptionMixin extends RoamOptionMixin { map: string; aspectScale?: number; layoutCenter?: (number | string)[]; layoutSize?: number | string; boundingCoords?: number[][]; nameMap?: NameMap; nameProperty?: string; /** * Use raw projection by default * Only available for GeoJSON source. * * NOTE: `center` needs to be the projected coord if projection is used. */ projection?: GeoProjection; } export interface GeoOption extends ComponentOption, BoxLayoutOptionMixin, AnimationOptionMixin, GeoCommonOptionMixin, StatesOptionMixin, GeoStateOption { mainType?: 'geo'; show?: boolean; silent?: boolean; regions?: RegoinOption[]; stateAnimation?: AnimationOptionMixin; selectedMode?: 'single' | 'multiple' | boolean; selectedMap?: Dictionary; tooltip?: CommonTooltipOption; } declare class GeoModel extends ComponentModel { static type: string; readonly type: string; coordinateSystem: Geo; static layoutMode: "box"; private _optionModelMap; static defaultOption: GeoOption; init(option: GeoOption, parentModel: Model, ecModel: GlobalModel): void; optionUpdated(): void; /** * Get model of region. */ getRegionModel(name: string): Model; /** * Format label * @param name Region name */ getFormattedLabel(name: string, status?: DisplayState): string; setZoom(zoom: number): void; setCenter(center: number[]): void; select(name?: string): void; unSelect(name?: string): void; toggleSelected(name?: string): void; isSelected(name?: string): boolean; } export default GeoModel;