import { SVGParserResultNamedItem } from 'zrender/lib/tool/parseSVG.js';
|
import Group from 'zrender/lib/graphic/Group.js';
|
import { HashMap } from 'zrender/lib/core/util.js';
|
import BoundingRect from 'zrender/lib/core/BoundingRect.js';
|
import { GeoResource, GeoSVGSourceInput } from './geoTypes.js';
|
import { GeoSVGRegion } from './Region.js';
|
export interface GeoSVGGraphicRecord {
|
root: Group;
|
boundingRect: BoundingRect;
|
named: SVGParserResultNamedItem[];
|
}
|
export declare class GeoSVGResource implements GeoResource {
|
readonly type = "geoSVG";
|
private _mapName;
|
private _parsedXML;
|
private _firstGraphic;
|
private _boundingRect;
|
private _regions;
|
private _regionsMap;
|
private _usedGraphicMap;
|
private _freedGraphics;
|
constructor(mapName: string, svg: GeoSVGSourceInput);
|
load(): {
|
boundingRect: BoundingRect;
|
regions: GeoSVGRegion[];
|
regionsMap: HashMap<GeoSVGRegion, string | number>;
|
};
|
private _buildGraphic;
|
/**
|
* Consider:
|
* (1) One graphic element can not be shared by different `geoView` running simultaneously.
|
* Notice, also need to consider multiple echarts instances share a `mapRecord`.
|
* (2) Converting SVG to graphic elements is time consuming.
|
* (3) In the current architecture, `load` should be called frequently to get boundingRect,
|
* and it is called without view info.
|
* So we maintain graphic elements in this module, and enables `view` to use/return these
|
* graphics from/to the pool with it's uid.
|
*/
|
useGraphic(hostKey: string): GeoSVGGraphicRecord;
|
freeGraphic(hostKey: string): void;
|
}
|