@visactor/vchart
Version:
charts lib based @visactor/VGrammar
56 lines (45 loc) • 1.79 kB
JavaScript
import { DataSet, DataView, geoJSONParser, simplify, topoJSONParser } from "@visactor/vdataset";
import { warn } from "../../util/debug";
import { registerDataSetInstanceParser, registerDataSetInstanceTransform } from "../../data/register";
import { isObject, merge } from "@visactor/vutils";
export const geoSourceMap = new Map;
let mapDataSet;
function initMapDataSet() {
mapDataSet || (mapDataSet = new DataSet, registerDataSetInstanceParser(mapDataSet, "geojson", geoJSONParser),
registerDataSetInstanceParser(mapDataSet, "topojson", topoJSONParser), registerDataSetInstanceTransform(mapDataSet, "simplify", simplify));
}
export function registerMapSource(key, source, option = {
type: "geojson",
centroid: !0
}) {
geoSourceMap.has(key) && warn(`map type of '${key}' already exists, will be overwritten.`),
initMapDataSet();
const dataView = new DataView(mapDataSet), options = merge({}, {
centroid: !0,
simplify: !1
}, option);
"topojson" === option.type ? dataView.parse(source, {
type: "topojson",
options: options
}) : dataView.parse(source, {
type: "geojson",
options: options
});
const {simplify: simplify} = option;
!0 === simplify ? dataView.transform({
type: "simplify"
}) : isObject(simplify) && dataView.transform({
type: "simplify",
options: simplify
}), geoSourceMap.set(key, dataView);
}
export function unregisterMapSource(key) {
geoSourceMap.has(key) ? geoSourceMap.delete(key) : warn(`map type of '${key}' does not exists.`);
}
export function getMapSource(type) {
return geoSourceMap.get(type);
}
export function clearMapSource() {
geoSourceMap.clear(), mapDataSet = null;
}
//# sourceMappingURL=geo-source.js.map