UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

56 lines (45 loc) 1.79 kB
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