blob: fcb39dcf867cae90331f5ce5f3a6709f9df63d8e [file] [log] [blame]
(function(_global){
var require, define;
(function () {
var mods = {};
define = function (id, deps, factory) {
mods[id] = {
id: id,
deps: deps,
factory: factory,
defined: 0,
exports: {},
require: createRequire(id)
};
};
require = createRequire('');
function normalize(id, baseId) {
if (!baseId) {
return id;
}
if (id.indexOf('.') === 0) {
var basePath = baseId.split('/');
var namePath = id.split('/');
var baseLen = basePath.length - 1;
var nameLen = namePath.length;
var cutBaseTerms = 0;
var cutNameTerms = 0;
pathLoop: for (var i = 0; i < nameLen; i++) {
switch (namePath[i]) {
case '..':
if (cutBaseTerms < baseLen) {
cutBaseTerms++;
cutNameTerms++;
}
else {
break pathLoop;
}
break;
case '.':
cutNameTerms++;
break;
default:
break pathLoop;
}
}
basePath.length = baseLen - cutBaseTerms;
namePath = namePath.slice(cutNameTerms);
return basePath.concat(namePath).join('/');
}
return id;
}
function createRequire(baseId) {
var cacheMods = {};
function localRequire(id, callback) {
if (typeof id === 'string') {
var exports = cacheMods[id];
if (!exports) {
exports = getModExports(normalize(id, baseId));
cacheMods[id] = exports;
}
return exports;
}
else if (id instanceof Array) {
callback = callback || function () {};
callback.apply(this, getModsExports(id, callback, baseId));
}
};
return localRequire;
}
function getModsExports(ids, factory, baseId) {
var es = [];
var mod = mods[baseId];
for (var i = 0, l = Math.min(ids.length, factory.length); i < l; i++) {
var id = normalize(ids[i], baseId);
var arg;
switch (id) {
case 'require':
arg = (mod && mod.require) || require;
break;
case 'exports':
arg = mod.exports;
break;
case 'module':
arg = mod;
break;
default:
arg = getModExports(id);
}
es.push(arg);
}
return es;
}
function getModExports(id) {
var mod = mods[id];
if (!mod) {
throw new Error('No ' + id);
}
if (!mod.defined) {
var factory = mod.factory;
var factoryReturn = factory.apply(
this,
getModsExports(mod.deps || [], factory, id)
);
if (typeof factoryReturn !== 'undefined') {
mod.exports = factoryReturn;
}
mod.defined = 1;
}
return mod.exports;
}
}());
define('echarts', ['echarts/echarts'], function (main) {return main;});
define('echarts/echarts', [
'require',
'./config',
'zrender/tool/util',
'zrender/tool/event',
'zrender/tool/env',
'zrender',
'zrender/config',
'./chart/island',
'./component/toolbox',
'./component',
'./component/title',
'./component/tooltip',
'./component/legend',
'./util/ecData',
'./chart',
'zrender/tool/color',
'./component/timeline',
'zrender/shape/Image',
'zrender/loadingEffect/Bar',
'zrender/loadingEffect/Bubble',
'zrender/loadingEffect/DynamicLine',
'zrender/loadingEffect/Ring',
'zrender/loadingEffect/Spin',
'zrender/loadingEffect/Whirling',
'./theme/default'
], function (require) {
var ecConfig = require('./config');
var zrUtil = require('zrender/tool/util');
var zrEvent = require('zrender/tool/event');
var self = {};
var _canvasSupported = require('zrender/tool/env').canvasSupported;
var _idBase = new Date() - 0;
var _instances = {};
var DOM_ATTRIBUTE_KEY = '_echarts_instance_';
self.version = '2.1.10';
self.dependencies = { zrender: '2.0.6' };
self.init = function (dom, theme) {
var zrender = require('zrender');
if ((zrender.version || '1.0.3').replace('.', '') - 0 < self.dependencies.zrender.replace('.', '') - 0) {
console.error('ZRender ' + (zrender.version || '1.0.3-') + ' is too old for ECharts ' + self.version + '. Current version need ZRender ' + self.dependencies.zrender + '+');
}
dom = dom instanceof Array ? dom[0] : dom;
var key = dom.getAttribute(DOM_ATTRIBUTE_KEY);
if (!key) {
key = _idBase++;
dom.setAttribute(DOM_ATTRIBUTE_KEY, key);
}
if (_instances[key]) {
_instances[key].dispose();
}
_instances[key] = new Echarts(dom);
_instances[key].id = key;
_instances[key].canvasSupported = _canvasSupported;
_instances[key].setTheme(theme);
return _instances[key];
};
self.getInstanceById = function (key) {
return _instances[key];
};
function MessageCenter() {
zrEvent.Dispatcher.call(this);
}
zrUtil.merge(MessageCenter.prototype, zrEvent.Dispatcher.prototype, true);
function Echarts(dom) {
this._themeConfig = zrUtil.clone(ecConfig);
this.dom = dom;
this._connected = false;
this._status = {
dragIn: false,
dragOut: false,
needRefresh: false
};
this._curEventType = false;
this._chartList = [];
this._messageCenter = new MessageCenter();
this._messageCenterOutSide = new MessageCenter();
this.resize = this.resize();
this._init();
}
var ZR_EVENT = require('zrender/config').EVENT;
var ZR_EVENT_LISTENS = [
'CLICK',
'DBLCLICK',
'MOUSEOVER',
'MOUSEOUT',
'DRAGSTART',
'DRAGEND',
'DRAGENTER',
'DRAGOVER',
'DRAGLEAVE',
'DROP'
];
function callChartListMethodReverse(ecInstance, methodName, arg0, arg1, arg2) {
var chartList = ecInstance._chartList;
var len = chartList.length;
while (len--) {
var chart = chartList[len];
if (typeof chart[methodName] === 'function') {
chart[methodName](arg0, arg1, arg2);
}
}
}
Echarts.prototype = {
_init: function () {
var self = this;
var _zr = require('zrender').init(this.dom);
this._zr = _zr;
this._messageCenter.dispatch = function (type, event, eventPackage, that) {
eventPackage = eventPackage || {};
eventPackage.type = type;
eventPackage.event = event;
self._messageCenter.dispatchWithContext(type, eventPackage, that);
if (type != 'HOVER' && type != 'MOUSEOUT') {
setTimeout(function () {
self._messageCenterOutSide.dispatchWithContext(type, eventPackage, that);
}, 50);
} else {
self._messageCenterOutSide.dispatchWithContext(type, eventPackage, that);
}
};
this._onevent = function (param) {
return self.__onevent(param);
};
for (var e in ecConfig.EVENT) {
if (e != 'CLICK' && e != 'DBLCLICK' && e != 'HOVER' && e != 'MOUSEOUT' && e != 'MAP_ROAM') {
this._messageCenter.bind(ecConfig.EVENT[e], this._onevent, this);
}
}
var eventBehaviors = {};
this._onzrevent = function (param) {
return self[eventBehaviors[param.type]](param);
};
for (var i = 0, len = ZR_EVENT_LISTENS.length; i < len; i++) {
var eventName = ZR_EVENT_LISTENS[i];
var eventValue = ZR_EVENT[eventName];
eventBehaviors[eventValue] = '_on' + eventName.toLowerCase();
_zr.on(eventValue, this._onzrevent);
}
this.chart = {};
this.component = {};
var Island = require('./chart/island');
this._island = new Island(this._themeConfig, this._messageCenter, _zr, {}, this);
this.chart.island = this._island;
var Toolbox = require('./component/toolbox');
this._toolbox = new Toolbox(this._themeConfig, this._messageCenter, _zr, {}, this);
this.component.toolbox = this._toolbox;
var componentLibrary = require('./component');
componentLibrary.define('title', require('./component/title'));
componentLibrary.define('tooltip', require('./component/tooltip'));
componentLibrary.define('legend', require('./component/legend'));
if (_zr.getWidth() === 0 || _zr.getHeight() === 0) {
console.error('Dom’s width & height should be ready before init.');
}
},
__onevent: function (param) {
param.__echartsId = param.__echartsId || this.id;
var fromMyself = param.__echartsId === this.id;
if (!this._curEventType) {
this._curEventType = param.type;
}
switch (param.type) {
case ecConfig.EVENT.LEGEND_SELECTED:
this._onlegendSelected(param);
break;
case ecConfig.EVENT.DATA_ZOOM:
if (!fromMyself) {
var dz = this.component.dataZoom;
if (dz) {
dz.silence(true);
dz.absoluteZoom(param.zoom);
dz.silence(false);
}
}
this._ondataZoom(param);
break;
case ecConfig.EVENT.DATA_RANGE:
fromMyself && this._ondataRange(param);
break;
case ecConfig.EVENT.MAGIC_TYPE_CHANGED:
if (!fromMyself) {
var tb = this.component.toolbox;
if (tb) {
tb.silence(true);
tb.setMagicType(param.magicType);
tb.silence(false);
}
}
this._onmagicTypeChanged(param);
break;
case ecConfig.EVENT.DATA_VIEW_CHANGED:
fromMyself && this._ondataViewChanged(param);
break;
case ecConfig.EVENT.TOOLTIP_HOVER:
fromMyself && this._tooltipHover(param);
break;
case ecConfig.EVENT.RESTORE:
this._onrestore();
break;
case ecConfig.EVENT.REFRESH:
fromMyself && this._onrefresh(param);
break;
case ecConfig.EVENT.TOOLTIP_IN_GRID:
case ecConfig.EVENT.TOOLTIP_OUT_GRID:
if (!fromMyself) {
var grid = this.component.grid;
if (grid) {
this._zr.trigger('mousemove', {
connectTrigger: true,
zrenderX: grid.getX() + param.x * grid.getWidth(),
zrenderY: grid.getY() + param.y * grid.getHeight()
});
}
} else if (this._connected) {
var grid = this.component.grid;
if (grid) {
param.x = (param.event.zrenderX - grid.getX()) / grid.getWidth();
param.y = (param.event.zrenderY - grid.getY()) / grid.getHeight();
}
}
break;
}
if (this._connected && fromMyself && this._curEventType === param.type) {
for (var c in this._connected) {
this._connected[c].connectedEventHandler(param);
}
this._curEventType = null;
}
if (!fromMyself || !this._connected && fromMyself) {
this._curEventType = null;
}
},
_onclick: function (param) {
callChartListMethodReverse(this, 'onclick', param);
if (param.target) {
var ecData = this._eventPackage(param.target);
if (ecData && ecData.seriesIndex != null) {
this._messageCenter.dispatch(ecConfig.EVENT.CLICK, param.event, ecData, this);
}
}
},
_ondblclick: function (param) {
callChartListMethodReverse(this, 'ondblclick', param);
if (param.target) {
var ecData = this._eventPackage(param.target);
if (ecData && ecData.seriesIndex != null) {
this._messageCenter.dispatch(ecConfig.EVENT.DBLCLICK, param.event, ecData, this);
}
}
},
_onmouseover: function (param) {
if (param.target) {
var ecData = this._eventPackage(param.target);
if (ecData && ecData.seriesIndex != null) {
this._messageCenter.dispatch(ecConfig.EVENT.HOVER, param.event, ecData, this);
}
}
},
_onmouseout: function (param) {
if (param.target) {
var ecData = this._eventPackage(param.target);
if (ecData && ecData.seriesIndex != null) {
this._messageCenter.dispatch(ecConfig.EVENT.MOUSEOUT, param.event, ecData, this);
}
}
},
_ondragstart: function (param) {
this._status = {
dragIn: false,
dragOut: false,
needRefresh: false
};
callChartListMethodReverse(this, 'ondragstart', param);
},
_ondragenter: function (param) {
callChartListMethodReverse(this, 'ondragenter', param);
},
_ondragover: function (param) {
callChartListMethodReverse(this, 'ondragover', param);
},
_ondragleave: function (param) {
callChartListMethodReverse(this, 'ondragleave', param);
},
_ondrop: function (param) {
callChartListMethodReverse(this, 'ondrop', param, this._status);
this._island.ondrop(param, this._status);
},
_ondragend: function (param) {
callChartListMethodReverse(this, 'ondragend', param, this._status);
this._timeline && this._timeline.ondragend(param, this._status);
this._island.ondragend(param, this._status);
if (this._status.needRefresh) {
this._syncBackupData(this._option);
var messageCenter = this._messageCenter;
messageCenter.dispatch(ecConfig.EVENT.DATA_CHANGED, param.event, this._eventPackage(param.target), this);
messageCenter.dispatch(ecConfig.EVENT.REFRESH, null, null, this);
}
},
_onlegendSelected: function (param) {
this._status.needRefresh = false;
callChartListMethodReverse(this, 'onlegendSelected', param, this._status);
if (this._status.needRefresh) {
this._messageCenter.dispatch(ecConfig.EVENT.REFRESH, null, null, this);
}
},
_ondataZoom: function (param) {
this._status.needRefresh = false;
callChartListMethodReverse(this, 'ondataZoom', param, this._status);
if (this._status.needRefresh) {
this._messageCenter.dispatch(ecConfig.EVENT.REFRESH, null, null, this);
}
},
_ondataRange: function (param) {
this._clearEffect();
this._status.needRefresh = false;
callChartListMethodReverse(this, 'ondataRange', param, this._status);
if (this._status.needRefresh) {
this._zr.refresh();
}
},
_onmagicTypeChanged: function () {
this._clearEffect();
this._render(this._toolbox.getMagicOption());
},
_ondataViewChanged: function (param) {
this._syncBackupData(param.option);
this._messageCenter.dispatch(ecConfig.EVENT.DATA_CHANGED, null, param, this);
this._messageCenter.dispatch(ecConfig.EVENT.REFRESH, null, null, this);
},
_tooltipHover: function (param) {
var tipShape = [];
callChartListMethodReverse(this, 'ontooltipHover', param, tipShape);
},
_onrestore: function () {
this.restore();
},
_onrefresh: function (param) {
this._refreshInside = true;
this.refresh(param);
this._refreshInside = false;
},
_syncBackupData: function (curOption) {
this.component.dataZoom && this.component.dataZoom.syncBackupData(curOption);
},
_eventPackage: function (target) {
if (target) {
var ecData = require('./util/ecData');
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
dataIndex = seriesIndex != -1 && this.component.dataZoom ? this.component.dataZoom.getRealDataIndex(seriesIndex, dataIndex) : dataIndex;
return {
seriesIndex: seriesIndex,
seriesName: (ecData.get(target, 'series') || {}).name,
dataIndex: dataIndex,
data: ecData.get(target, 'data'),
name: ecData.get(target, 'name'),
value: ecData.get(target, 'value'),
special: ecData.get(target, 'special')
};
}
return;
},
_render: function (magicOption) {
this._mergeGlobalConifg(magicOption);
var bgColor = magicOption.backgroundColor;
if (bgColor) {
if (!_canvasSupported && bgColor.indexOf('rgba') != -1) {
var cList = bgColor.split(',');
this.dom.style.filter = 'alpha(opacity=' + cList[3].substring(0, cList[3].lastIndexOf(')')) * 100 + ')';
cList.length = 3;
cList[0] = cList[0].replace('a', '');
this.dom.style.backgroundColor = cList.join(',') + ')';
} else {
this.dom.style.backgroundColor = bgColor;
}
}
this._zr.clearAnimation();
this._chartList = [];
var chartLibrary = require('./chart');
var componentLibrary = require('./component');
if (magicOption.xAxis || magicOption.yAxis) {
magicOption.grid = magicOption.grid || {};
magicOption.dataZoom = magicOption.dataZoom || {};
}
var componentList = [
'title',
'legend',
'tooltip',
'dataRange',
'roamController',
'grid',
'dataZoom',
'xAxis',
'yAxis',
'polar'
];
var ComponentClass;
var componentType;
var component;
for (var i = 0, l = componentList.length; i < l; i++) {
componentType = componentList[i];
component = this.component[componentType];
if (magicOption[componentType]) {
if (component) {
component.refresh && component.refresh(magicOption);
} else {
ComponentClass = componentLibrary.get(/^[xy]Axis$/.test(componentType) ? 'axis' : componentType);
component = new ComponentClass(this._themeConfig, this._messageCenter, this._zr, magicOption, this, componentType);
this.component[componentType] = component;
}
this._chartList.push(component);
} else if (component) {
component.dispose();
this.component[componentType] = null;
delete this.component[componentType];
}
}
var ChartClass;
var chartType;
var chart;
var chartMap = {};
for (var i = 0, l = magicOption.series.length; i < l; i++) {
chartType = magicOption.series[i].type;
if (!chartType) {
console.error('series[' + i + '] chart type has not been defined.');
continue;
}
if (!chartMap[chartType]) {
chartMap[chartType] = true;
ChartClass = chartLibrary.get(chartType);
if (ChartClass) {
if (this.chart[chartType]) {
chart = this.chart[chartType];
chart.refresh(magicOption);
} else {
chart = new ChartClass(this._themeConfig, this._messageCenter, this._zr, magicOption, this);
}
this._chartList.push(chart);
this.chart[chartType] = chart;
} else {
console.error(chartType + ' has not been required.');
}
}
}
for (chartType in this.chart) {
if (chartType != ecConfig.CHART_TYPE_ISLAND && !chartMap[chartType]) {
this.chart[chartType].dispose();
this.chart[chartType] = null;
delete this.chart[chartType];
}
}
this.component.grid && this.component.grid.refixAxisShape(this.component);
this._island.refresh(magicOption);
this._toolbox.refresh(magicOption);
magicOption.animation && !magicOption.renderAsImage ? this._zr.refresh() : this._zr.render();
var imgId = 'IMG' + this.id;
var img = document.getElementById(imgId);
if (magicOption.renderAsImage && _canvasSupported) {
if (img) {
img.src = this.getDataURL(magicOption.renderAsImage);
} else {
img = this.getImage(magicOption.renderAsImage);
img.id = imgId;
img.style.position = 'absolute';
img.style.left = 0;
img.style.top = 0;
this.dom.firstChild.appendChild(img);
}
this.un();
this._zr.un();
this._disposeChartList();
this._zr.clear();
} else if (img) {
img.parentNode.removeChild(img);
}
img = null;
this._option = magicOption;
},
restore: function () {
this._clearEffect();
this._option = zrUtil.clone(this._optionRestore);
this._disposeChartList();
this._island.clear();
this._toolbox.reset(this._option, true);
this._render(this._option);
},
refresh: function (param) {
this._clearEffect();
param = param || {};
var magicOption = param.option;
if (!this._refreshInside && magicOption) {
magicOption = this.getOption();
zrUtil.merge(magicOption, param.option, true);
zrUtil.merge(this._optionRestore, param.option, true);
this._toolbox.reset(magicOption);
}
this._island.refresh(magicOption);
this._toolbox.refresh(magicOption);
this._zr.clearAnimation();
for (var i = 0, l = this._chartList.length; i < l; i++) {
this._chartList[i].refresh && this._chartList[i].refresh(magicOption);
}
this.component.grid && this.component.grid.refixAxisShape(this.component);
this._zr.refresh();
},
_disposeChartList: function () {
this._clearEffect();
this._zr.clearAnimation();
var len = this._chartList.length;
while (len--) {
var chart = this._chartList[len];
if (chart) {
var chartType = chart.type;
this.chart[chartType] && delete this.chart[chartType];
this.component[chartType] && delete this.component[chartType];
chart.dispose && chart.dispose();
}
}
this._chartList = [];
},
_mergeGlobalConifg: function (magicOption) {
var mergeList = [
'backgroundColor',
'calculable',
'calculableColor',
'calculableHolderColor',
'nameConnector',
'valueConnector',
'animation',
'animationThreshold',
'animationDuration',
'animationEasing',
'addDataAnimation',
'symbolList',
'DRAG_ENABLE_TIME'
];
var len = mergeList.length;
while (len--) {
var mergeItem = mergeList[len];
if (magicOption[mergeItem] == null) {
magicOption[mergeItem] = this._themeConfig[mergeItem];
}
}
var themeColor = magicOption.color;
if (!(themeColor && themeColor.length)) {
themeColor = this._themeConfig.color;
}
if (!_canvasSupported) {
magicOption.animation = false;
magicOption.addDataAnimation = false;
}
this._zr.getColor = function (idx) {
var zrColor = require('zrender/tool/color');
return zrColor.getColor(idx, themeColor);
};
},
setOption: function (option, notMerge) {
if (!option.timeline) {
return this._setOption(option, notMerge);
} else {
return this._setTimelineOption(option);
}
},
_setOption: function (option, notMerge) {
if (!notMerge && this._option) {
this._option = zrUtil.merge(this.getOption(), zrUtil.clone(option), true);
} else {
this._option = zrUtil.clone(option);
}
this._optionRestore = zrUtil.clone(this._option);
if (!this._option.series || this._option.series.length === 0) {
this._zr.clear();
return;
}
if (this.component.dataZoom && (this._option.dataZoom || this._option.toolbox && this._option.toolbox.feature && this._option.toolbox.feature.dataZoom && this._option.toolbox.feature.dataZoom.show)) {
this.component.dataZoom.syncOption(this._option);
}
this._toolbox.reset(this._option);
this._render(this._option);
return this;
},
getOption: function () {
var magicOption = zrUtil.clone(this._option);
var self = this;
function restoreOption(prop) {
var restoreSource = self._optionRestore[prop];
if (restoreSource) {
if (restoreSource instanceof Array) {
var len = restoreSource.length;
while (len--) {
magicOption[prop][len].data = zrUtil.clone(restoreSource[len].data);
}
} else {
magicOption[prop].data = zrUtil.clone(restoreSource.data);
}
}
}
restoreOption('xAxis');
restoreOption('yAxis');
restoreOption('series');
return magicOption;
},
setSeries: function (series, notMerge) {
if (!notMerge) {
this.setOption({ series: series });
} else {
this._option.series = series;
this.setOption(this._option, notMerge);
}
return this;
},
getSeries: function () {
return this.getOption().series;
},
_setTimelineOption: function (option) {
this._timeline && this._timeline.dispose();
var Timeline = require('./component/timeline');
var timeline = new Timeline(this._themeConfig, this._messageCenter, this._zr, option, this);
this._timeline = timeline;
this.component.timeline = this._timeline;
return this;
},
addData: function (seriesIdx, data, isHead, dataGrow, additionData) {
var params = seriesIdx instanceof Array ? seriesIdx : [[
seriesIdx,
data,
isHead,
dataGrow,
additionData
]];
var magicOption = this.getOption();
var optionRestore = this._optionRestore;
for (var i = 0, l = params.length; i < l; i++) {
seriesIdx = params[i][0];
data = params[i][1];
isHead = params[i][2];
dataGrow = params[i][3];
additionData = params[i][4];
var seriesItem = optionRestore.series[seriesIdx];
var inMethod = isHead ? 'unshift' : 'push';
var outMethod = isHead ? 'pop' : 'shift';
if (seriesItem) {
var seriesItemData = seriesItem.data;
var mSeriesItemData = magicOption.series[seriesIdx].data;
seriesItemData[inMethod](data);
mSeriesItemData[inMethod](data);
if (!dataGrow) {
seriesItemData[outMethod]();
data = mSeriesItemData[outMethod]();
}
if (additionData != null) {
var legend;
var legendData;
if (seriesItem.type === ecConfig.CHART_TYPE_PIE && (legend = optionRestore.legend) && (legendData = legend.data)) {
var mLegendData = magicOption.legend.data;
legendData[inMethod](additionData);
mLegendData[inMethod](additionData);
if (!dataGrow) {
var legendDataIdx = zrUtil.indexOf(legendData, data.name);
legendDataIdx != -1 && legendData.splice(legendDataIdx, 1);
legendDataIdx = zrUtil.indexOf(mLegendData, data.name);
legendDataIdx != -1 && mLegendData.splice(legendDataIdx, 1);
}
} else if (optionRestore.xAxis != null && optionRestore.yAxis != null) {
var axisData;
var mAxisData;
var axisIdx = seriesItem.xAxisIndex || 0;
if (optionRestore.xAxis[axisIdx].type == null || optionRestore.xAxis[axisIdx].type === 'category') {
axisData = optionRestore.xAxis[axisIdx].data;
mAxisData = magicOption.xAxis[axisIdx].data;
axisData[inMethod](additionData);
mAxisData[inMethod](additionData);
if (!dataGrow) {
axisData[outMethod]();
mAxisData[outMethod]();
}
}
axisIdx = seriesItem.yAxisIndex || 0;
if (optionRestore.yAxis[axisIdx].type === 'category') {
axisData = optionRestore.yAxis[axisIdx].data;
mAxisData = magicOption.yAxis[axisIdx].data;
axisData[inMethod](additionData);
mAxisData[inMethod](additionData);
if (!dataGrow) {
axisData[outMethod]();
mAxisData[outMethod]();
}
}
}
}
this._option.series[seriesIdx].data = magicOption.series[seriesIdx].data;
}
}
this._zr.clearAnimation();
var chartList = this._chartList;
for (var i = 0, l = chartList.length; i < l; i++) {
if (magicOption.addDataAnimation && chartList[i].addDataAnimation) {
chartList[i].addDataAnimation(params);
}
}
this.component.dataZoom && this.component.dataZoom.syncOption(magicOption);
this._option = magicOption;
var self = this;
setTimeout(function () {
if (!self._zr) {
return;
}
self._zr.clearAnimation();
for (var i = 0, l = chartList.length; i < l; i++) {
chartList[i].motionlessOnce = magicOption.addDataAnimation && chartList[i].addDataAnimation;
}
self._messageCenter.dispatch(ecConfig.EVENT.REFRESH, null, { option: magicOption }, self);
}, magicOption.addDataAnimation ? 500 : 0);
return this;
},
addMarkPoint: function (seriesIdx, markData) {
return this._addMark(seriesIdx, markData, 'markPoint');
},
addMarkLine: function (seriesIdx, markData) {
return this._addMark(seriesIdx, markData, 'markLine');
},
_addMark: function (seriesIdx, markData, markType) {
var series = this._option.series;
var seriesItem;
if (series && (seriesItem = series[seriesIdx])) {
var seriesR = this._optionRestore.series;
var seriesRItem = seriesR[seriesIdx];
var markOpt = seriesItem[markType];
var markOptR = seriesRItem[markType];
markOpt = seriesItem[markType] = markOpt || { data: [] };
markOptR = seriesRItem[markType] = markOptR || { data: [] };
for (var key in markData) {
if (key === 'data') {
markOpt.data = markOpt.data.concat(markData.data);
markOptR.data = markOptR.data.concat(markData.data);
} else if (typeof markData[key] != 'object' || markOpt[key] == null) {
markOpt[key] = markOptR[key] = markData[key];
} else {
zrUtil.merge(markOpt[key], markData[key], true);
zrUtil.merge(markOptR[key], markData[key], true);
}
}
var chart = this.chart[seriesItem.type];
chart && chart.addMark(seriesIdx, markData, markType);
}
return this;
},
delMarkPoint: function (seriesIdx, markName) {
return this._delMark(seriesIdx, markName, 'markPoint');
},
delMarkLine: function (seriesIdx, markName) {
return this._delMark(seriesIdx, markName, 'markLine');
},
_delMark: function (seriesIdx, markName, markType) {
var series = this._option.series;
var seriesItem;
var mark;
var dataArray;
if (!(series && (seriesItem = series[seriesIdx]) && (mark = seriesItem[markType]) && (dataArray = mark.data))) {
return this;
}
markName = markName.split(' > ');
var targetIndex = -1;
for (var i = 0, l = dataArray.length; i < l; i++) {
var dataItem = dataArray[i];
if (dataItem instanceof Array) {
if (dataItem[0].name === markName[0] && dataItem[1].name === markName[1]) {
targetIndex = i;
break;
}
} else if (dataItem.name === markName[0]) {
targetIndex = i;
break;
}
}
if (targetIndex > -1) {
dataArray.splice(targetIndex, 1);
this._optionRestore.series[seriesIdx][markType].data.splice(targetIndex, 1);
var chart = this.chart[seriesItem.type];
chart && chart.delMark(seriesIdx, markName.join(' > '), markType);
}
return this;
},
getDom: function () {
return this.dom;
},
getZrender: function () {
return this._zr;
},
getDataURL: function (imgType) {
if (!_canvasSupported) {
return '';
}
if (this._chartList.length === 0) {
var imgId = 'IMG' + this.id;
var img = document.getElementById(imgId);
if (img) {
return img.src;
}
}
var tooltip = this.component.tooltip;
tooltip && tooltip.hideTip();
switch (imgType) {
case 'jpeg':
break;
default:
imgType = 'png';
}
var bgColor = this._option.backgroundColor;
if (bgColor && bgColor.replace(' ', '') === 'rgba(0,0,0,0)') {
bgColor = '#fff';
}
return this._zr.toDataURL('image/' + imgType, bgColor);
},
getImage: function (imgType) {
var title = this._optionRestore.title;
var imgDom = document.createElement('img');
imgDom.src = this.getDataURL(imgType);
imgDom.title = title && title.text || 'ECharts';
return imgDom;
},
getConnectedDataURL: function (imgType) {
if (!this.isConnected()) {
return this.getDataURL(imgType);
}
var tempDom = this.dom;
var imgList = {
'self': {
img: this.getDataURL(imgType),
left: tempDom.offsetLeft,
top: tempDom.offsetTop,
right: tempDom.offsetLeft + tempDom.offsetWidth,
bottom: tempDom.offsetTop + tempDom.offsetHeight
}
};
var minLeft = imgList.self.left;
var minTop = imgList.self.top;
var maxRight = imgList.self.right;
var maxBottom = imgList.self.bottom;
for (var c in this._connected) {
tempDom = this._connected[c].getDom();
imgList[c] = {
img: this._connected[c].getDataURL(imgType),
left: tempDom.offsetLeft,
top: tempDom.offsetTop,
right: tempDom.offsetLeft + tempDom.offsetWidth,
bottom: tempDom.offsetTop + tempDom.offsetHeight
};
minLeft = Math.min(minLeft, imgList[c].left);
minTop = Math.min(minTop, imgList[c].top);
maxRight = Math.max(maxRight, imgList[c].right);
maxBottom = Math.max(maxBottom, imgList[c].bottom);
}
var zrDom = document.createElement('div');
zrDom.style.position = 'absolute';
zrDom.style.left = '-4000px';
zrDom.style.width = maxRight - minLeft + 'px';
zrDom.style.height = maxBottom - minTop + 'px';
document.body.appendChild(zrDom);
var zrImg = require('zrender').init(zrDom);
var ImageShape = require('zrender/shape/Image');
for (var c in imgList) {
zrImg.addShape(new ImageShape({
style: {
x: imgList[c].left - minLeft,
y: imgList[c].top - minTop,
image: imgList[c].img
}
}));
}
zrImg.render();
var bgColor = this._option.backgroundColor;
if (bgColor && bgColor.replace(/ /g, '') === 'rgba(0,0,0,0)') {
bgColor = '#fff';
}
var image = zrImg.toDataURL('image/png', bgColor);
setTimeout(function () {
zrImg.dispose();
zrDom.parentNode.removeChild(zrDom);
zrDom = null;
}, 100);
return image;
},
getConnectedImage: function (imgType) {
var title = this._optionRestore.title;
var imgDom = document.createElement('img');
imgDom.src = this.getConnectedDataURL(imgType);
imgDom.title = title && title.text || 'ECharts';
return imgDom;
},
on: function (eventName, eventListener) {
this._messageCenterOutSide.bind(eventName, eventListener, this);
return this;
},
un: function (eventName, eventListener) {
this._messageCenterOutSide.unbind(eventName, eventListener);
return this;
},
connect: function (connectTarget) {
if (!connectTarget) {
return this;
}
if (!this._connected) {
this._connected = {};
}
if (connectTarget instanceof Array) {
for (var i = 0, l = connectTarget.length; i < l; i++) {
this._connected[connectTarget[i].id] = connectTarget[i];
}
} else {
this._connected[connectTarget.id] = connectTarget;
}
return this;
},
disConnect: function (connectTarget) {
if (!connectTarget || !this._connected) {
return this;
}
if (connectTarget instanceof Array) {
for (var i = 0, l = connectTarget.length; i < l; i++) {
delete this._connected[connectTarget[i].id];
}
} else {
delete this._connected[connectTarget.id];
}
for (var k in this._connected) {
return k, this;
}
this._connected = false;
return this;
},
connectedEventHandler: function (param) {
if (param.__echartsId != this.id) {
this._onevent(param);
}
},
isConnected: function () {
return !!this._connected;
},
showLoading: function (loadingOption) {
var effectList = {
bar: require('zrender/loadingEffect/Bar'),
bubble: require('zrender/loadingEffect/Bubble'),
dynamicLine: require('zrender/loadingEffect/DynamicLine'),
ring: require('zrender/loadingEffect/Ring'),
spin: require('zrender/loadingEffect/Spin'),
whirling: require('zrender/loadingEffect/Whirling')
};
this._toolbox.hideDataView();
loadingOption = loadingOption || {};
var textStyle = loadingOption.textStyle || {};
loadingOption.textStyle = textStyle;
var finalTextStyle = zrUtil.merge(zrUtil.clone(textStyle), this._themeConfig.textStyle);
textStyle.textFont = finalTextStyle.fontStyle + ' ' + finalTextStyle.fontWeight + ' ' + finalTextStyle.fontSize + 'px ' + finalTextStyle.fontFamily;
textStyle.text = loadingOption.text || this._themeConfig.loadingText;
if (loadingOption.x != null) {
textStyle.x = loadingOption.x;
}
if (loadingOption.y != null) {
textStyle.y = loadingOption.y;
}
loadingOption.effectOption = loadingOption.effectOption || {};
loadingOption.effectOption.textStyle = textStyle;
var Effect = loadingOption.effect;
if (typeof Effect === 'string' || Effect == null) {
Effect = effectList[loadingOption.effect || 'spin'];
}
this._zr.showLoading(new Effect(loadingOption.effectOption));
return this;
},
hideLoading: function () {
this._zr.hideLoading();
return this;
},
setTheme: function (theme) {
if (theme) {
if (typeof theme === 'string') {
switch (theme) {
default:
theme = require('./theme/default');
}
} else {
theme = theme || {};
}
for (var key in this._themeConfig) {
delete this._themeConfig[key];
}
for (var key in ecConfig) {
this._themeConfig[key] = zrUtil.clone(ecConfig[key]);
}
theme.color && (this._themeConfig.color = []);
theme.symbolList && (this._themeConfig.symbolList = []);
zrUtil.merge(this._themeConfig, zrUtil.clone(theme), true);
}
if (!_canvasSupported) {
this._themeConfig.textStyle.fontFamily = this._themeConfig.textStyle.fontFamily2;
}
this._timeline && this._timeline.setTheme(true);
this._optionRestore && this.restore();
},
resize: function () {
var self = this;
return function () {
self._clearEffect();
self._zr.resize();
if (self._option && self._option.renderAsImage && _canvasSupported) {
self._render(self._option);
return self;
}
self._zr.clearAnimation();
self._island.resize();
self._toolbox.resize();
self._timeline && self._timeline.resize();
for (var i = 0, l = self._chartList.length; i < l; i++) {
self._chartList[i].resize && self._chartList[i].resize();
}
self.component.grid && self.component.grid.refixAxisShape(self.component);
self._zr.refresh();
self._messageCenter.dispatch(ecConfig.EVENT.RESIZE, null, null, self);
return self;
};
},
_clearEffect: function () {
this._zr.modLayer(ecConfig.EFFECT_ZLEVEL, { motionBlur: false });
this._zr.painter.clearLayer(ecConfig.EFFECT_ZLEVEL);
},
clear: function () {
this._disposeChartList();
this._zr.clear();
this._option = {};
this._optionRestore = {};
this.dom.style.backgroundColor = null;
return this;
},
dispose: function () {
var key = this.dom.getAttribute(DOM_ATTRIBUTE_KEY);
key && delete _instances[key];
this._island.dispose();
this._toolbox.dispose();
this._timeline && this._timeline.dispose();
this._messageCenter.unbind();
this.clear();
this._zr.dispose();
this._zr = null;
}
};
return self;
});define('echarts/config', [], function () {
var config = {
CHART_TYPE_LINE: 'line',
CHART_TYPE_BAR: 'bar',
CHART_TYPE_SCATTER: 'scatter',
CHART_TYPE_PIE: 'pie',
CHART_TYPE_RADAR: 'radar',
CHART_TYPE_MAP: 'map',
CHART_TYPE_K: 'k',
CHART_TYPE_ISLAND: 'island',
CHART_TYPE_FORCE: 'force',
CHART_TYPE_CHORD: 'chord',
CHART_TYPE_GAUGE: 'gauge',
CHART_TYPE_FUNNEL: 'funnel',
CHART_TYPE_EVENTRIVER: 'eventRiver',
COMPONENT_TYPE_TITLE: 'title',
COMPONENT_TYPE_LEGEND: 'legend',
COMPONENT_TYPE_DATARANGE: 'dataRange',
COMPONENT_TYPE_DATAVIEW: 'dataView',
COMPONENT_TYPE_DATAZOOM: 'dataZoom',
COMPONENT_TYPE_TOOLBOX: 'toolbox',
COMPONENT_TYPE_TOOLTIP: 'tooltip',
COMPONENT_TYPE_GRID: 'grid',
COMPONENT_TYPE_AXIS: 'axis',
COMPONENT_TYPE_POLAR: 'polar',
COMPONENT_TYPE_X_AXIS: 'xAxis',
COMPONENT_TYPE_Y_AXIS: 'yAxis',
COMPONENT_TYPE_AXIS_CATEGORY: 'categoryAxis',
COMPONENT_TYPE_AXIS_VALUE: 'valueAxis',
COMPONENT_TYPE_TIMELINE: 'timeline',
COMPONENT_TYPE_ROAMCONTROLLER: 'roamController',
backgroundColor: 'rgba(0,0,0,0)',
color: [
'#ff7f50',
'#87cefa',
'#da70d6',
'#32cd32',
'#6495ed',
'#ff69b4',
'#ba55d3',
'#cd5c5c',
'#ffa500',
'#40e0d0',
'#1e90ff',
'#ff6347',
'#7b68ee',
'#00fa9a',
'#ffd700',
'#6699FF',
'#ff6666',
'#3cb371',
'#b8860b',
'#30e0e0'
],
title: {
text: '',
subtext: '',
x: 'left',
y: 'top',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
itemGap: 5,
textStyle: {
fontSize: 18,
fontWeight: 'bolder',
color: '#333'
},
subtextStyle: { color: '#aaa' }
},
legend: {
show: true,
orient: 'horizontal',
x: 'center',
y: 'top',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
itemGap: 10,
itemWidth: 20,
itemHeight: 14,
textStyle: { color: '#333' },
selectedMode: true
},
dataRange: {
show: true,
orient: 'vertical',
x: 'left',
y: 'bottom',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
itemGap: 10,
itemWidth: 20,
itemHeight: 14,
precision: 0,
splitNumber: 5,
calculable: false,
hoverLink: true,
realtime: true,
color: [
'#006edd',
'#e0ffff'
],
textStyle: { color: '#333' }
},
toolbox: {
show: false,
orient: 'horizontal',
x: 'right',
y: 'top',
color: [
'#1e90ff',
'#22bb22',
'#4b0082',
'#d2691e'
],
disableColor: '#ddd',
effectiveColor: 'red',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
itemGap: 10,
itemSize: 16,
showTitle: true,
feature: {
mark: {
show: false,
title: {
mark: '辅助线开关',
markUndo: '删除辅助线',
markClear: '清空辅助线'
},
lineStyle: {
width: 1,
color: '#1e90ff',
type: 'dashed'
}
},
dataZoom: {
show: false,
title: {
dataZoom: '区域缩放',
dataZoomReset: '区域缩放后退'
}
},
dataView: {
show: false,
title: '数据视图',
readOnly: false,
lang: [
'数据视图',
'关闭',
'刷新'
]
},
magicType: {
show: false,
title: {
line: '折线图切换',
bar: '柱形图切换',
stack: '堆积',
tiled: '平铺',
force: '力导向布局图切换',
chord: '和弦图切换',
pie: '饼图切换',
funnel: '漏斗图切换'
},
type: []
},
restore: {
show: false,
title: '还原'
},
saveAsImage: {
show: false,
title: '保存为图片',
type: 'png',
lang: ['点击保存']
}
}
},
tooltip: {
show: true,
showContent: true,
trigger: 'item',
islandFormatter: '{a} <br/>{b} : {c}',
showDelay: 20,
hideDelay: 100,
transitionDuration: 0.4,
enterable: false,
backgroundColor: 'rgba(0,0,0,0.7)',
borderColor: '#333',
borderRadius: 4,
borderWidth: 0,
padding: 5,
axisPointer: {
type: 'line',
lineStyle: {
color: '#48b',
width: 2,
type: 'solid'
},
crossStyle: {
color: '#1e90ff',
width: 1,
type: 'dashed'
},
shadowStyle: {
color: 'rgba(150,150,150,0.3)',
width: 'auto',
type: 'default'
}
},
textStyle: { color: '#fff' }
},
dataZoom: {
show: false,
orient: 'horizontal',
backgroundColor: 'rgba(0,0,0,0)',
dataBackgroundColor: '#eee',
fillerColor: 'rgba(144,197,237,0.2)',
handleColor: 'rgba(70,130,180,0.8)',
showDetail: true,
realtime: true
},
grid: {
x: 80,
y: 60,
x2: 80,
y2: 60,
backgroundColor: 'rgba(0,0,0,0)',
borderWidth: 1,
borderColor: '#ccc'
},
categoryAxis: {
show: true,
position: 'bottom',
name: '',
nameLocation: 'end',
nameTextStyle: {},
boundaryGap: true,
axisLine: {
show: true,
onZero: true,
lineStyle: {
color: '#48b',
width: 2,
type: 'solid'
}
},
axisTick: {
show: true,
interval: 'auto',
inside: false,
length: 5,
lineStyle: {
color: '#333',
width: 1
}
},
axisLabel: {
show: true,
interval: 'auto',
rotate: 0,
margin: 8,
textStyle: { color: '#333' }
},
splitLine: {
show: true,
lineStyle: {
color: ['#ccc'],
width: 1,
type: 'solid'
}
},
splitArea: {
show: false,
areaStyle: {
color: [
'rgba(250,250,250,0.3)',
'rgba(200,200,200,0.3)'
]
}
}
},
valueAxis: {
show: true,
position: 'left',
name: '',
nameLocation: 'end',
nameTextStyle: {},
boundaryGap: [
0,
0
],
axisLine: {
show: true,
onZero: true,
lineStyle: {
color: '#48b',
width: 2,
type: 'solid'
}
},
axisTick: {
show: false,
inside: false,
length: 5,
lineStyle: {
color: '#333',
width: 1
}
},
axisLabel: {
show: true,
rotate: 0,
margin: 8,
textStyle: { color: '#333' }
},
splitLine: {
show: true,
lineStyle: {
color: ['#ccc'],
width: 1,
type: 'solid'
}
},
splitArea: {
show: false,
areaStyle: {
color: [
'rgba(250,250,250,0.3)',
'rgba(200,200,200,0.3)'
]
}
}
},
polar: {
center: [
'50%',
'50%'
],
radius: '75%',
startAngle: 90,
boundaryGap: [
0,
0
],
splitNumber: 5,
name: {
show: true,
textStyle: { color: '#333' }
},
axisLine: {
show: true,
lineStyle: {
color: '#ccc',
width: 1,
type: 'solid'
}
},
axisLabel: {
show: false,
textStyle: { color: '#333' }
},
splitArea: {
show: true,
areaStyle: {
color: [
'rgba(250,250,250,0.3)',
'rgba(200,200,200,0.3)'
]
}
},
splitLine: {
show: true,
lineStyle: {
width: 1,
color: '#ccc'
}
},
type: 'polygon'
},
timeline: {
show: true,
type: 'time',
notMerge: false,
realtime: true,
x: 80,
x2: 80,
y2: 0,
height: 50,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
controlPosition: 'left',
autoPlay: false,
loop: true,
playInterval: 2000,
lineStyle: {
width: 1,
color: '#666',
type: 'dashed'
},
label: {
show: true,
interval: 'auto',
rotate: 0,
textStyle: { color: '#333' }
},
checkpointStyle: {
symbol: 'auto',
symbolSize: 'auto',
color: 'auto',
borderColor: 'auto',
borderWidth: 'auto',
label: {
show: false,
textStyle: { color: 'auto' }
}
},
controlStyle: {
normal: { color: '#333' },
emphasis: { color: '#1e90ff' }
},
symbol: 'emptyDiamond',
symbolSize: 4,
currentIndex: 0
},
roamController: {
show: true,
x: 'left',
y: 'top',
width: 80,
height: 120,
backgroundColor: 'rgba(0,0,0,0)',
borderColor: '#ccc',
borderWidth: 0,
padding: 5,
handleColor: '#6495ed',
fillerColor: '#fff',
step: 15,
mapTypeControl: null
},
bar: {
clickable: true,
legendHoverLink: true,
xAxisIndex: 0,
yAxisIndex: 0,
barMinHeight: 0,
barGap: '30%',
barCategoryGap: '20%',
itemStyle: {
normal: {
barBorderColor: '#fff',
barBorderRadius: 0,
barBorderWidth: 0,
label: { show: false }
},
emphasis: {
barBorderColor: '#fff',
barBorderRadius: 0,
barBorderWidth: 0,
label: { show: false }
}
}
},
line: {
clickable: true,
legendHoverLink: true,
xAxisIndex: 0,
yAxisIndex: 0,
itemStyle: {
normal: {
label: { show: false },
lineStyle: {
width: 2,
type: 'solid',
shadowColor: 'rgba(0,0,0,0)',
shadowBlur: 0,
shadowOffsetX: 0,
shadowOffsetY: 0
}
},
emphasis: { label: { show: false } }
},
symbolSize: 2,
showAllSymbol: false
},
k: {
clickable: true,
legendHoverLink: false,
xAxisIndex: 0,
yAxisIndex: 0,
itemStyle: {
normal: {
color: '#fff',
color0: '#00aa11',
lineStyle: {
width: 1,
color: '#ff3200',
color0: '#00aa11'
}
},
emphasis: {}
}
},
scatter: {
clickable: true,
legendHoverLink: true,
xAxisIndex: 0,
yAxisIndex: 0,
symbolSize: 4,
large: false,
largeThreshold: 2000,
itemStyle: {
normal: {
label: {
show: false,
formatter: function (a, b, c) {
if (typeof c[2] != 'undefined') {
return c[2];
} else {
return c[0] + ' , ' + c[1];
}
}
}
},
emphasis: {
label: {
show: false,
formatter: function (a, b, c) {
if (typeof c[2] != 'undefined') {
return c[2];
} else {
return c[0] + ' , ' + c[1];
}
}
}
}
}
},
radar: {
clickable: true,
legendHoverLink: true,
polarIndex: 0,
itemStyle: {
normal: {
label: { show: false },
lineStyle: {
width: 2,
type: 'solid'
}
},
emphasis: { label: { show: false } }
},
symbolSize: 2
},
pie: {
clickable: true,
legendHoverLink: true,
center: [
'50%',
'50%'
],
radius: [
0,
'75%'
],
clockWise: true,
startAngle: 90,
minAngle: 0,
selectedOffset: 10,
itemStyle: {
normal: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
label: {
show: true,
position: 'outer'
},
labelLine: {
show: true,
length: 20,
lineStyle: {
width: 1,
type: 'solid'
}
}
},
emphasis: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
label: { show: false },
labelLine: {
show: false,
length: 20,
lineStyle: {
width: 1,
type: 'solid'
}
}
}
}
},
map: {
mapType: 'china',
mapValuePrecision: 0,
showLegendSymbol: true,
dataRangeHoverLink: true,
hoverable: true,
clickable: true,
itemStyle: {
normal: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
areaStyle: { color: '#ccc' },
label: {
show: false,
textStyle: { color: 'rgb(139,69,19)' }
}
},
emphasis: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
areaStyle: { color: 'rgba(255,215,0,0.8)' },
label: {
show: false,
textStyle: { color: 'rgb(100,0,0)' }
}
}
}
},
force: {
center: [
'50%',
'50%'
],
size: '100%',
preventOverlap: false,
coolDown: 0.99,
minRadius: 10,
maxRadius: 20,
ratioScaling: false,
large: false,
useWorker: false,
steps: 1,
scaling: 1,
gravity: 1,
symbol: 'circle',
symbolSize: 0,
linkSymbol: null,
linkSymbolSize: [
10,
15
],
draggable: true,
clickable: true,
roam: false,
itemStyle: {
normal: {
label: {
show: false,
position: 'inside'
},
nodeStyle: {
brushType: 'both',
borderColor: '#5182ab',
borderWidth: 1
},
linkStyle: {
color: '#5182ab',
width: 1,
type: 'line'
}
},
emphasis: {
label: { show: false },
nodeStyle: {},
linkStyle: { opacity: 0 }
}
}
},
chord: {
clickable: true,
radius: [
'65%',
'75%'
],
center: [
'50%',
'50%'
],
padding: 2,
sort: 'none',
sortSub: 'none',
startAngle: 90,
clockWise: true,
ribbonType: true,
minRadius: 10,
maxRadius: 20,
symbol: 'circle',
showScale: false,
showScaleText: false,
itemStyle: {
normal: {
borderWidth: 0,
borderColor: '#000',
label: {
show: true,
rotate: false,
distance: 5
},
chordStyle: {
width: 1,
color: 'black',
borderWidth: 1,
borderColor: '#999',
opacity: 0.5
}
},
emphasis: {
borderWidth: 0,
borderColor: '#000',
chordStyle: {
width: 1,
color: 'black',
borderWidth: 1,
borderColor: '#999'
}
}
}
},
gauge: {
center: [
'50%',
'50%'
],
legendHoverLink: true,
radius: '75%',
startAngle: 225,
endAngle: -45,
min: 0,
max: 100,
precision: 0,
splitNumber: 10,
axisLine: {
show: true,
lineStyle: {
color: [
[
0.2,
'#228b22'
],
[
0.8,
'#48b'
],
[
1,
'#ff4500'
]
],
width: 30
}
},
axisTick: {
show: true,
splitNumber: 5,
length: 8,
lineStyle: {
color: '#eee',
width: 1,
type: 'solid'
}
},
axisLabel: {
show: true,
textStyle: { color: 'auto' }
},
splitLine: {
show: true,
length: 30,
lineStyle: {
color: '#eee',
width: 2,
type: 'solid'
}
},
pointer: {
show: true,
length: '80%',
width: 8,
color: 'auto'
},
title: {
show: true,
offsetCenter: [
0,
'-40%'
],
textStyle: {
color: '#333',
fontSize: 15
}
},
detail: {
show: true,
backgroundColor: 'rgba(0,0,0,0)',
borderWidth: 0,
borderColor: '#ccc',
width: 100,
height: 40,
offsetCenter: [
0,
'40%'
],
textStyle: {
color: 'auto',
fontSize: 30
}
}
},
funnel: {
clickable: true,
legendHoverLink: true,
x: 80,
y: 60,
x2: 80,
y2: 60,
min: 0,
max: 100,
minSize: '0%',
maxSize: '100%',
sort: 'descending',
gap: 0,
funnelAlign: 'center',
itemStyle: {
normal: {
borderColor: '#fff',
borderWidth: 1,
label: {
show: true,
position: 'outer'
},
labelLine: {
show: true,
length: 10,
lineStyle: {
width: 1,
type: 'solid'
}
}
},
emphasis: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
label: { show: true },
labelLine: { show: true }
}
}
},
eventRiver: {
clickable: true,
legendHoverLink: true,
itemStyle: {
normal: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
label: {
show: true,
position: 'inside',
formatter: '{b}'
}
},
emphasis: {
borderColor: 'rgba(0,0,0,0)',
borderWidth: 1,
label: { show: true }
}
}
},
island: {
r: 15,
calculateStep: 0.1
},
markPoint: {
clickable: true,
symbol: 'pin',
symbolSize: 10,
large: false,
effect: {
show: false,
loop: true,
period: 15,
scaleSize: 2
},
itemStyle: {
normal: {
borderWidth: 2,
label: {
show: true,
position: 'inside'
}
},
emphasis: { label: { show: true } }
}
},
markLine: {
clickable: true,
symbol: [
'circle',
'arrow'
],
symbolSize: [
2,
4
],
large: false,
effect: {
show: false,
loop: true,
period: 15,
scaleSize: 2
},
itemStyle: {
normal: {
borderWidth: 1.5,
label: {
show: true,
position: 'end'
},
lineStyle: { type: 'dashed' }
},
emphasis: {
label: { show: false },
lineStyle: {}
}
}
},
textStyle: {
decoration: 'none',
fontFamily: 'Arial, Verdana, sans-serif',
fontFamily2: '微软雅黑',
fontSize: 12,
fontStyle: 'normal',
fontWeight: 'normal'
},
EVENT: {
REFRESH: 'refresh',
RESTORE: 'restore',
RESIZE: 'resize',
CLICK: 'click',
DBLCLICK: 'dblclick',
HOVER: 'hover',
MOUSEOUT: 'mouseout',
DATA_CHANGED: 'dataChanged',
DATA_ZOOM: 'dataZoom',
DATA_RANGE: 'dataRange',
DATA_RANGE_HOVERLINK: 'dataRangeHoverLink',
LEGEND_SELECTED: 'legendSelected',
LEGEND_HOVERLINK: 'legendHoverLink',
MAP_SELECTED: 'mapSelected',
PIE_SELECTED: 'pieSelected',
MAGIC_TYPE_CHANGED: 'magicTypeChanged',
DATA_VIEW_CHANGED: 'dataViewChanged',
TIMELINE_CHANGED: 'timelineChanged',
MAP_ROAM: 'mapRoam',
FORCE_LAYOUT_END: 'forceLayoutEnd',
TOOLTIP_HOVER: 'tooltipHover',
TOOLTIP_IN_GRID: 'tooltipInGrid',
TOOLTIP_OUT_GRID: 'tooltipOutGrid',
ROAMCONTROLLER: 'roamController'
},
DRAG_ENABLE_TIME: 120,
EFFECT_ZLEVEL: 7,
symbolList: [
'circle',
'rectangle',
'triangle',
'diamond',
'emptyCircle',
'emptyRectangle',
'emptyTriangle',
'emptyDiamond'
],
loadingText: 'Loading...',
calculable: false,
calculableColor: 'rgba(255,165,0,0.6)',
calculableHolderColor: '#ccc',
nameConnector: ' & ',
valueConnector: ': ',
animation: true,
addDataAnimation: true,
animationThreshold: 2000,
animationDuration: 2000,
animationEasing: 'ExponentialOut'
};
return config;
});define('zrender/tool/util', [
'require',
'../dep/excanvas'
], function (require) {
var BUILTIN_OBJECT = {
'[object Function]': 1,
'[object RegExp]': 1,
'[object Date]': 1,
'[object Error]': 1,
'[object CanvasGradient]': 1
};
function clone(source) {
if (typeof source == 'object' && source !== null) {
var result = source;
if (source instanceof Array) {
result = [];
for (var i = 0, len = source.length; i < len; i++) {
result[i] = clone(source[i]);
}
} else if (!BUILTIN_OBJECT[Object.prototype.toString.call(source)]) {
result = {};
for (var key in source) {
if (source.hasOwnProperty(key)) {
result[key] = clone(source[key]);
}
}
}
return result;
}
return source;
}
function mergeItem(target, source, key, overwrite) {
if (source.hasOwnProperty(key)) {
if (typeof target[key] == 'object' && !BUILTIN_OBJECT[Object.prototype.toString.call(target[key])]) {
merge(target[key], source[key], overwrite);
} else if (overwrite || !(key in target)) {
target[key] = source[key];
}
}
}
function merge(target, source, overwrite) {
for (var i in source) {
mergeItem(target, source, i, overwrite);
}
return target;
}
var _ctx;
function getContext() {
if (!_ctx) {
require('../dep/excanvas');
if (window['G_vmlCanvasManager']) {
var _div = document.createElement('div');
_div.style.position = 'absolute';
_div.style.top = '-1000px';
document.body.appendChild(_div);
_ctx = G_vmlCanvasManager.initElement(_div).getContext('2d');
} else {
_ctx = document.createElement('canvas').getContext('2d');
}
}
return _ctx;
}
var _canvas;
var _pixelCtx;
var _width;
var _height;
var _offsetX = 0;
var _offsetY = 0;
function getPixelContext() {
if (!_pixelCtx) {
_canvas = document.createElement('canvas');
_width = _canvas.width;
_height = _canvas.height;
_pixelCtx = _canvas.getContext('2d');
}
return _pixelCtx;
}
function adjustCanvasSize(x, y) {
var _v = 100;
var _flag;
if (x + _offsetX > _width) {
_width = x + _offsetX + _v;
_canvas.width = _width;
_flag = true;
}
if (y + _offsetY > _height) {
_height = y + _offsetY + _v;
_canvas.height = _height;
_flag = true;
}
if (x < -_offsetX) {
_offsetX = Math.ceil(-x / _v) * _v;
_width += _offsetX;
_canvas.width = _width;
_flag = true;
}
if (y < -_offsetY) {
_offsetY = Math.ceil(-y / _v) * _v;
_height += _offsetY;
_canvas.height = _height;
_flag = true;
}
if (_flag) {
_pixelCtx.translate(_offsetX, _offsetY);
}
}
function getPixelOffset() {
return {
x: _offsetX,
y: _offsetY
};
}
function indexOf(array, value) {
if (array.indexOf) {
return array.indexOf(value);
}
for (var i = 0, len = array.length; i < len; i++) {
if (array[i] === value) {
return i;
}
}
return -1;
}
function inherits(clazz, baseClazz) {
var clazzPrototype = clazz.prototype;
function F() {
}
F.prototype = baseClazz.prototype;
clazz.prototype = new F();
for (var prop in clazzPrototype) {
clazz.prototype[prop] = clazzPrototype[prop];
}
clazz.constructor = clazz;
}
return {
inherits: inherits,
clone: clone,
merge: merge,
getContext: getContext,
getPixelContext: getPixelContext,
getPixelOffset: getPixelOffset,
adjustCanvasSize: adjustCanvasSize,
indexOf: indexOf
};
});define('zrender/tool/event', [
'require',
'../mixin/Eventful'
], function (require) {
'use strict';
var Eventful = require('../mixin/Eventful');
function getX(e) {
return typeof e.zrenderX != 'undefined' && e.zrenderX || typeof e.offsetX != 'undefined' && e.offsetX || typeof e.layerX != 'undefined' && e.layerX || typeof e.clientX != 'undefined' && e.clientX;
}
function getY(e) {
return typeof e.zrenderY != 'undefined' && e.zrenderY || typeof e.offsetY != 'undefined' && e.offsetY || typeof e.layerY != 'undefined' && e.layerY || typeof e.clientY != 'undefined' && e.clientY;
}
function getDelta(e) {
return typeof e.zrenderDelta != 'undefined' && e.zrenderDelta || typeof e.wheelDelta != 'undefined' && e.wheelDelta || typeof e.detail != 'undefined' && -e.detail;
}
var stop = typeof window.addEventListener === 'function' ? function (e) {
e.preventDefault();
e.stopPropagation();
e.cancelBubble = true;
} : function (e) {
e.returnValue = false;
e.cancelBubble = true;
};
return {
getX: getX,
getY: getY,
getDelta: getDelta,
stop: stop,
Dispatcher: Eventful
};
});define('zrender/tool/env', [], function () {
function detect(ua) {
var os = this.os = {};
var browser = this.browser = {};
var webkit = ua.match(/Web[kK]it[\/]{0,1}([\d.]+)/);
var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
var webos = ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/);
var touchpad = webos && ua.match(/TouchPad/);
var kindle = ua.match(/Kindle\/([\d.]+)/);
var silk = ua.match(/Silk\/([\d._]+)/);
var blackberry = ua.match(/(BlackBerry).*Version\/([\d.]+)/);
var bb10 = ua.match(/(BB10).*Version\/([\d.]+)/);
var rimtabletos = ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/);
var playbook = ua.match(/PlayBook/);
var chrome = ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/);
var firefox = ua.match(/Firefox\/([\d.]+)/);
var ie = ua.match(/MSIE ([\d.]+)/);
var safari = webkit && ua.match(/Mobile\//) && !chrome;
var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;
var ie = ua.match(/MSIE\s([\d.]+)/);
if (browser.webkit = !!webkit)
browser.version = webkit[1];
if (android)
os.android = true, os.version = android[2];
if (iphone && !ipod)
os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');
if (ipad)
os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');
if (ipod)
os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
if (webos)
os.webos = true, os.version = webos[2];
if (touchpad)
os.touchpad = true;
if (blackberry)
os.blackberry = true, os.version = blackberry[2];
if (bb10)
os.bb10 = true, os.version = bb10[2];
if (rimtabletos)
os.rimtabletos = true, os.version = rimtabletos[2];
if (playbook)
browser.playbook = true;
if (kindle)
os.kindle = true, os.version = kindle[1];
if (silk)
browser.silk = true, browser.version = silk[1];
if (!silk && os.android && ua.match(/Kindle Fire/))
browser.silk = true;
if (chrome)
browser.chrome = true, browser.version = chrome[1];
if (firefox)
browser.firefox = true, browser.version = firefox[1];
if (ie)
browser.ie = true, browser.version = ie[1];
if (safari && (ua.match(/Safari/) || !!os.ios))
browser.safari = true;
if (webview)
browser.webview = true;
if (ie)
browser.ie = true, browser.version = ie[1];
os.tablet = !!(ipad || playbook || android && !ua.match(/Mobile/) || firefox && ua.match(/Tablet/) || ie && !ua.match(/Phone/) && ua.match(/Touch/));
os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos || blackberry || bb10 || chrome && ua.match(/Android/) || chrome && ua.match(/CriOS\/([\d.]+)/) || firefox && ua.match(/Mobile/) || ie && ua.match(/Touch/)));
return {
browser: browser,
os: os,
canvasSupported: document.createElement('canvas').getContext ? true : false
};
}
return detect(navigator.userAgent);
});define('zrender', ['zrender/zrender'], function (main) {return main;});
define('zrender/zrender', [
'require',
'./dep/excanvas',
'./tool/util',
'./tool/log',
'./tool/guid',
'./Handler',
'./Painter',
'./Storage',
'./animation/Animation',
'./tool/env'
], function (require) {
require('./dep/excanvas');
var util = require('./tool/util');
var log = require('./tool/log');
var guid = require('./tool/guid');
var Handler = require('./Handler');
var Painter = require('./Painter');
var Storage = require('./Storage');
var Animation = require('./animation/Animation');
var _instances = {};
var zrender = {};
zrender.version = '2.0.6';
zrender.init = function (dom) {
var zr = new ZRender(guid(), dom);
_instances[zr.id] = zr;
return zr;
};
zrender.dispose = function (zr) {
if (zr) {
zr.dispose();
} else {
for (var key in _instances) {
_instances[key].dispose();
}
_instances = {};
}
return zrender;
};
zrender.getInstance = function (id) {
return _instances[id];
};
zrender.delInstance = function (id) {
delete _instances[id];
return zrender;
};
function getFrameCallback(zrInstance) {
return function () {
var animatingElements = zrInstance.animatingElements;
for (var i = 0, l = animatingElements.length; i < l; i++) {
zrInstance.storage.mod(animatingElements[i].id);
}
if (animatingElements.length || zrInstance._needsRefreshNextFrame) {
zrInstance.refresh();
}
};
}
var ZRender = function (id, dom) {
this.id = id;
this.env = require('./tool/env');
this.storage = new Storage();
this.painter = new Painter(dom, this.storage);
this.handler = new Handler(dom, this.storage, this.painter);
this.animatingElements = [];
this.animation = new Animation({ stage: { update: getFrameCallback(this) } });
this.animation.start();
var self = this;
this.painter.refreshNextFrame = function () {
self.refreshNextFrame();
};
this._needsRefreshNextFrame = false;
};
ZRender.prototype.getId = function () {
return this.id;
};
ZRender.prototype.addShape = function (shape) {
this.storage.addRoot(shape);
return this;
};
ZRender.prototype.addGroup = function (group) {
this.storage.addRoot(group);
return this;
};
ZRender.prototype.delShape = function (shapeId) {
this.storage.delRoot(shapeId);
return this;
};
ZRender.prototype.delGroup = function (groupId) {
this.storage.delRoot(groupId);
return this;
};
ZRender.prototype.modShape = function (shapeId, shape) {
this.storage.mod(shapeId, shape);
return this;
};
ZRender.prototype.modGroup = function (groupId, group) {
this.storage.mod(groupId, group);
return this;
};
ZRender.prototype.modLayer = function (zLevel, config) {
this.painter.modLayer(zLevel, config);
return this;
};
ZRender.prototype.addHoverShape = function (shape) {
this.storage.addHover(shape);
return this;
};
ZRender.prototype.render = function (callback) {
this.painter.render(callback);
this._needsRefreshNextFrame = false;
return this;
};
ZRender.prototype.refresh = function (callback) {
this.painter.refresh(callback);
this._needsRefreshNextFrame = false;
return this;
};
ZRender.prototype.refreshNextFrame = function () {
this._needsRefreshNextFrame = true;
return this;
};
ZRender.prototype.refreshHover = function (callback) {
this.painter.refreshHover(callback);
return this;
};
ZRender.prototype.refreshShapes = function (shapeList, callback) {
this.painter.refreshShapes(shapeList, callback);
return this;
};
ZRender.prototype.resize = function () {
this.painter.resize();
return this;
};
ZRender.prototype.animate = function (el, path, loop) {
if (typeof el === 'string') {
el = this.storage.get(el);
}
if (el) {
var target;
if (path) {
var pathSplitted = path.split('.');
var prop = el;
for (var i = 0, l = pathSplitted.length; i < l; i++) {
if (!prop) {
continue;
}
prop = prop[pathSplitted[i]];
}
if (prop) {
target = prop;
}
} else {
target = el;
}
if (!target) {
log('Property "' + path + '" is not existed in element ' + el.id);
return;
}
var animatingElements = this.animatingElements;
if (typeof el.__aniCount === 'undefined') {
el.__aniCount = 0;
}
if (el.__aniCount === 0) {
animatingElements.push(el);
}
el.__aniCount++;
return this.animation.animate(target, { loop: loop }).done(function () {
el.__aniCount--;
if (el.__aniCount === 0) {
var idx = util.indexOf(animatingElements, el);
animatingElements.splice(idx, 1);
}
});
} else {
log('Element not existed');
}
};
ZRender.prototype.clearAnimation = function () {
this.animation.clear();
};
ZRender.prototype.showLoading = function (loadingEffect) {
this.painter.showLoading(loadingEffect);
return this;
};
ZRender.prototype.hideLoading = function () {
this.painter.hideLoading();
return this;
};
ZRender.prototype.getWidth = function () {
return this.painter.getWidth();
};
ZRender.prototype.getHeight = function () {
return this.painter.getHeight();
};
ZRender.prototype.toDataURL = function (type, backgroundColor, args) {
return this.painter.toDataURL(type, backgroundColor, args);
};
ZRender.prototype.shapeToImage = function (e, width, height) {
var id = guid();
return this.painter.shapeToImage(id, e, width, height);
};
ZRender.prototype.on = function (eventName, eventHandler) {
this.handler.on(eventName, eventHandler);
return this;
};
ZRender.prototype.un = function (eventName, eventHandler) {
this.handler.un(eventName, eventHandler);
return this;
};
ZRender.prototype.trigger = function (eventName, event) {
this.handler.trigger(eventName, event);
return this;
};
ZRender.prototype.clear = function () {
this.storage.delRoot();
this.painter.clear();
return this;
};
ZRender.prototype.dispose = function () {
this.animation.stop();
this.clear();
this.storage.dispose();
this.painter.dispose();
this.handler.dispose();
this.animation = this.animatingElements = this.storage = this.painter = this.handler = null;
zrender.delInstance(this.id);
};
return zrender;
});define('zrender/config', [], function () {
var config = {
EVENT: {
RESIZE: 'resize',
CLICK: 'click',
DBLCLICK: 'dblclick',
MOUSEWHEEL: 'mousewheel',
MOUSEMOVE: 'mousemove',
MOUSEOVER: 'mouseover',
MOUSEOUT: 'mouseout',
MOUSEDOWN: 'mousedown',
MOUSEUP: 'mouseup',
GLOBALOUT: 'globalout',
DRAGSTART: 'dragstart',
DRAGEND: 'dragend',
DRAGENTER: 'dragenter',
DRAGOVER: 'dragover',
DRAGLEAVE: 'dragleave',
DROP: 'drop',
touchClickDelay: 300
},
catchBrushException: false,
debugMode: 0
};
return config;
});define('echarts/chart/island', [
'require',
'../component/base',
'./base',
'zrender/shape/Circle',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/event',
'zrender/tool/color',
'../util/accMath',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var CircleShape = require('zrender/shape/Circle');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrEvent = require('zrender/tool/event');
function Island(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, {}, myChart);
ChartBase.call(this);
this._nameConnector;
this._valueConnector;
this._zrHeight = this.zr.getHeight();
this._zrWidth = this.zr.getWidth();
var self = this;
self.shapeHandler.onmousewheel = function (param) {
var shape = param.target;
var event = param.event;
var delta = zrEvent.getDelta(event);
delta = delta > 0 ? -1 : 1;
shape.style.r -= delta;
shape.style.r = shape.style.r < 5 ? 5 : shape.style.r;
var value = ecData.get(shape, 'value');
var dvalue = value * self.option.island.calculateStep;
if (dvalue > 1) {
value = Math.round(value - dvalue * delta);
} else {
value = (value - dvalue * delta).toFixed(2) - 0;
}
var name = ecData.get(shape, 'name');
shape.style.text = name + ':' + value;
ecData.set(shape, 'value', value);
ecData.set(shape, 'name', name);
self.zr.modShape(shape.id);
self.zr.refresh();
zrEvent.stop(event);
};
}
Island.prototype = {
type: ecConfig.CHART_TYPE_ISLAND,
_combine: function (tarShape, srcShape) {
var zrColor = require('zrender/tool/color');
var accMath = require('../util/accMath');
var value = accMath.accAdd(ecData.get(tarShape, 'value'), ecData.get(srcShape, 'value'));
var name = ecData.get(tarShape, 'name') + this._nameConnector + ecData.get(srcShape, 'name');
tarShape.style.text = name + this._valueConnector + value;
ecData.set(tarShape, 'value', value);
ecData.set(tarShape, 'name', name);
tarShape.style.r = this.option.island.r;
tarShape.style.color = zrColor.mix(tarShape.style.color, srcShape.style.color);
},
refresh: function (newOption) {
if (newOption) {
newOption.island = this.reformOption(newOption.island);
this.option = newOption;
this._nameConnector = this.option.nameConnector;
this._valueConnector = this.option.valueConnector;
}
},
getOption: function () {
return this.option;
},
resize: function () {
var newWidth = this.zr.getWidth();
var newHieght = this.zr.getHeight();
var xScale = newWidth / (this._zrWidth || newWidth);
var yScale = newHieght / (this._zrHeight || newHieght);
if (xScale === 1 && yScale === 1) {
return;
}
this._zrWidth = newWidth;
this._zrHeight = newHieght;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.modShape(this.shapeList[i].id, {
style: {
x: Math.round(this.shapeList[i].style.x * xScale),
y: Math.round(this.shapeList[i].style.y * yScale)
}
});
}
},
add: function (shape) {
var name = ecData.get(shape, 'name');
var value = ecData.get(shape, 'value');
var seriesName = ecData.get(shape, 'series') != null ? ecData.get(shape, 'series').name : '';
var font = this.getFont(this.option.island.textStyle);
var islandShape = {
zlevel: this._zlevelBase,
style: {
x: shape.style.x,
y: shape.style.y,
r: this.option.island.r,
color: shape.style.color || shape.style.strokeColor,
text: name + this._valueConnector + value,
textFont: font
},
draggable: true,
hoverable: true,
onmousewheel: this.shapeHandler.onmousewheel,
_type: 'island'
};
if (islandShape.style.color === '#fff') {
islandShape.style.color = shape.style.strokeColor;
}
this.setCalculable(islandShape);
islandShape.dragEnableTime = 0;
ecData.pack(islandShape, { name: seriesName }, -1, value, -1, name);
islandShape = new CircleShape(islandShape);
this.shapeList.push(islandShape);
this.zr.addShape(islandShape);
},
del: function (shape) {
this.zr.delShape(shape.id);
var newShapeList = [];
for (var i = 0, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i].id != shape.id) {
newShapeList.push(this.shapeList[i]);
}
}
this.shapeList = newShapeList;
},
ondrop: function (param, status) {
if (!this.isDrop || !param.target) {
return;
}
var target = param.target;
var dragged = param.dragged;
this._combine(target, dragged);
this.zr.modShape(target.id);
status.dragIn = true;
this.isDrop = false;
return;
},
ondragend: function (param, status) {
var target = param.target;
if (!this.isDragend) {
if (!status.dragIn) {
target.style.x = zrEvent.getX(param.event);
target.style.y = zrEvent.getY(param.event);
this.add(target);
status.needRefresh = true;
}
} else {
if (status.dragIn) {
this.del(target);
status.needRefresh = true;
}
}
this.isDragend = false;
return;
}
};
zrUtil.inherits(Island, ChartBase);
zrUtil.inherits(Island, ComponentBase);
require('../chart').define('island', Island);
return Island;
});define('echarts/component/toolbox', [
'require',
'./base',
'zrender/shape/Line',
'zrender/shape/Image',
'zrender/shape/Rectangle',
'../util/shape/Icon',
'../config',
'zrender/tool/util',
'zrender/config',
'zrender/tool/event',
'./dataView',
'../component'
], function (require) {
var Base = require('./base');
var LineShape = require('zrender/shape/Line');
var ImageShape = require('zrender/shape/Image');
var RectangleShape = require('zrender/shape/Rectangle');
var IconShape = require('../util/shape/Icon');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrConfig = require('zrender/config');
var zrEvent = require('zrender/tool/event');
var _MAGICTYPE_STACK = 'stack';
var _MAGICTYPE_TILED = 'tiled';
function Toolbox(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.dom = myChart.dom;
this._magicType = {};
this._magicMap = {};
this._isSilence = false;
this._iconList;
this._iconShapeMap = {};
this._featureTitle = {};
this._featureIcon = {};
this._featureColor = {};
this._featureOption = {};
this._enableColor = 'red';
this._disableColor = '#ccc';
this._markShapeList = [];
var self = this;
self._onMark = function (param) {
self.__onMark(param);
};
self._onMarkUndo = function (param) {
self.__onMarkUndo(param);
};
self._onMarkClear = function (param) {
self.__onMarkClear(param);
};
self._onDataZoom = function (param) {
self.__onDataZoom(param);
};
self._onDataZoomReset = function (param) {
self.__onDataZoomReset(param);
};
self._onDataView = function (param) {
self.__onDataView(param);
};
self._onRestore = function (param) {
self.__onRestore(param);
};
self._onSaveAsImage = function (param) {
self.__onSaveAsImage(param);
};
self._onMagicType = function (param) {
self.__onMagicType(param);
};
self._onCustomHandler = function (param) {
self.__onCustomHandler(param);
};
self._onmousemove = function (param) {
return self.__onmousemove(param);
};
self._onmousedown = function (param) {
return self.__onmousedown(param);
};
self._onmouseup = function (param) {
return self.__onmouseup(param);
};
self._onclick = function (param) {
return self.__onclick(param);
};
}
Toolbox.prototype = {
type: ecConfig.COMPONENT_TYPE_TOOLBOX,
_buildShape: function () {
this._iconList = [];
var toolboxOption = this.option.toolbox;
this._enableColor = toolboxOption.effectiveColor;
this._disableColor = toolboxOption.disableColor;
var feature = toolboxOption.feature;
var iconName = [];
for (var key in feature) {
if (feature[key].show) {
switch (key) {
case 'mark':
iconName.push({
key: key,
name: 'mark'
});
iconName.push({
key: key,
name: 'markUndo'
});
iconName.push({
key: key,
name: 'markClear'
});
break;
case 'magicType':
for (var i = 0, l = feature[key].type.length; i < l; i++) {
feature[key].title[feature[key].type[i] + 'Chart'] = feature[key].title[feature[key].type[i]];
if (feature[key].option) {
feature[key].option[feature[key].type[i] + 'Chart'] = feature[key].option[feature[key].type[i]];
}
iconName.push({
key: key,
name: feature[key].type[i] + 'Chart'
});
}
break;
case 'dataZoom':
iconName.push({
key: key,
name: 'dataZoom'
});
iconName.push({
key: key,
name: 'dataZoomReset'
});
break;
case 'saveAsImage':
if (this.canvasSupported) {
iconName.push({
key: key,
name: 'saveAsImage'
});
}
break;
default:
iconName.push({
key: key,
name: key
});
break;
}
}
}
if (iconName.length > 0) {
var name;
var key;
for (var i = 0, l = iconName.length; i < l; i++) {
name = iconName[i].name;
key = iconName[i].key;
this._iconList.push(name);
this._featureTitle[name] = feature[key].title[name] || feature[key].title;
if (feature[key].icon) {
this._featureIcon[name] = feature[key].icon[name] || feature[key].icon;
}
if (feature[key].color) {
this._featureColor[name] = feature[key].color[name] || feature[key].color;
}
if (feature[key].option) {
this._featureOption[name] = feature[key].option[name] || feature[key].option;
}
}
this._itemGroupLocation = this._getItemGroupLocation();
this._buildBackground();
this._buildItem();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
if (this._iconShapeMap['mark']) {
this._iconDisable(this._iconShapeMap['markUndo']);
this._iconDisable(this._iconShapeMap['markClear']);
}
if (this._iconShapeMap['dataZoomReset'] && this._zoomQueue.length === 0) {
this._iconDisable(this._iconShapeMap['dataZoomReset']);
}
}
},
_buildItem: function () {
var toolboxOption = this.option.toolbox;
var iconLength = this._iconList.length;
var lastX = this._itemGroupLocation.x;
var lastY = this._itemGroupLocation.y;
var itemSize = toolboxOption.itemSize;
var itemGap = toolboxOption.itemGap;
var itemShape;
var color = toolboxOption.color instanceof Array ? toolboxOption.color : [toolboxOption.color];
var textFont = this.getFont(toolboxOption.textStyle);
var textPosition;
var textAlign;
var textBaseline;
if (toolboxOption.orient === 'horizontal') {
textPosition = this._itemGroupLocation.y / this.zr.getHeight() < 0.5 ? 'bottom' : 'top';
textAlign = this._itemGroupLocation.x / this.zr.getWidth() < 0.5 ? 'left' : 'right';
textBaseline = this._itemGroupLocation.y / this.zr.getHeight() < 0.5 ? 'top' : 'bottom';
} else {
textPosition = this._itemGroupLocation.x / this.zr.getWidth() < 0.5 ? 'right' : 'left';
}
this._iconShapeMap = {};
var self = this;
for (var i = 0; i < iconLength; i++) {
itemShape = {
type: 'icon',
zlevel: this._zlevelBase,
style: {
x: lastX,
y: lastY,
width: itemSize,
height: itemSize,
iconType: this._iconList[i],
lineWidth: 1,
strokeColor: this._featureColor[this._iconList[i]] || color[i % color.length],
brushType: 'stroke'
},
highlightStyle: {
lineWidth: 1,
text: toolboxOption.showTitle ? this._featureTitle[this._iconList[i]] : undefined,
textFont: textFont,
textPosition: textPosition,
strokeColor: this._featureColor[this._iconList[i]] || color[i % color.length]
},
hoverable: true,
clickable: true
};
if (this._featureIcon[this._iconList[i]]) {
itemShape.style.image = this._featureIcon[this._iconList[i]].replace(new RegExp('^image:\\/\\/'), '');
itemShape.style.opacity = 0.8;
itemShape.highlightStyle.opacity = 1;
itemShape.type = 'image';
}
if (toolboxOption.orient === 'horizontal') {
if (i === 0 && textAlign === 'left') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseline = textBaseline;
itemShape.highlightStyle.textX = lastX;
itemShape.highlightStyle.textY = textBaseline === 'top' ? lastY + itemSize + 10 : lastY - 10;
}
if (i === iconLength - 1 && textAlign === 'right') {
itemShape.highlightStyle.textPosition = 'specific';
itemShape.highlightStyle.textAlign = textAlign;
itemShape.highlightStyle.textBaseline = textBaseline;
itemShape.highlightStyle.textX = lastX + itemSize;
itemShape.highlightStyle.textY = textBaseline === 'top' ? lastY + itemSize + 10 : lastY - 10;
}
}
switch (this._iconList[i]) {
case 'mark':
itemShape.onclick = self._onMark;
break;
case 'markUndo':
itemShape.onclick = self._onMarkUndo;
break;
case 'markClear':
itemShape.onclick = self._onMarkClear;
break;
case 'dataZoom':
itemShape.onclick = self._onDataZoom;
break;
case 'dataZoomReset':
itemShape.onclick = self._onDataZoomReset;
break;
case 'dataView':
if (!this._dataView) {
var DataView = require('./dataView');
this._dataView = new DataView(this.ecTheme, this.messageCenter, this.zr, this.option, this.myChart);
}
itemShape.onclick = self._onDataView;
break;
case 'restore':
itemShape.onclick = self._onRestore;
break;
case 'saveAsImage':
itemShape.onclick = self._onSaveAsImage;
break;
default:
if (this._iconList[i].match('Chart')) {
itemShape._name = this._iconList[i].replace('Chart', '');
itemShape.onclick = self._onMagicType;
} else {
itemShape.onclick = self._onCustomHandler;
}
break;
}
if (itemShape.type === 'icon') {
itemShape = new IconShape(itemShape);
} else if (itemShape.type === 'image') {
itemShape = new ImageShape(itemShape);
}
this.shapeList.push(itemShape);
this._iconShapeMap[this._iconList[i]] = itemShape;
if (toolboxOption.orient === 'horizontal') {
lastX += itemSize + itemGap;
} else {
lastY += itemSize + itemGap;
}
}
},
_buildBackground: function () {
var toolboxOption = this.option.toolbox;
var padding = this.reformCssArray(this.option.toolbox.padding);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._itemGroupLocation.x - padding[3],
y: this._itemGroupLocation.y - padding[0],
width: this._itemGroupLocation.width + padding[3] + padding[1],
height: this._itemGroupLocation.height + padding[0] + padding[2],
brushType: toolboxOption.borderWidth === 0 ? 'fill' : 'both',
color: toolboxOption.backgroundColor,
strokeColor: toolboxOption.borderColor,
lineWidth: toolboxOption.borderWidth
}
}));
},
_getItemGroupLocation: function () {
var toolboxOption = this.option.toolbox;
var padding = this.reformCssArray(this.option.toolbox.padding);
var iconLength = this._iconList.length;
var itemGap = toolboxOption.itemGap;
var itemSize = toolboxOption.itemSize;
var totalWidth = 0;
var totalHeight = 0;
if (toolboxOption.orient === 'horizontal') {
totalWidth = (itemSize + itemGap) * iconLength - itemGap;
totalHeight = itemSize;
} else {
totalHeight = (itemSize + itemGap) * iconLength - itemGap;
totalWidth = itemSize;
}
var x;
var zrWidth = this.zr.getWidth();
switch (toolboxOption.x) {
case 'center':
x = Math.floor((zrWidth - totalWidth) / 2);
break;
case 'left':
x = padding[3] + toolboxOption.borderWidth;
break;
case 'right':
x = zrWidth - totalWidth - padding[1] - toolboxOption.borderWidth;
break;
default:
x = toolboxOption.x - 0;
x = isNaN(x) ? 0 : x;
break;
}
var y;
var zrHeight = this.zr.getHeight();
switch (toolboxOption.y) {
case 'top':
y = padding[0] + toolboxOption.borderWidth;
break;
case 'bottom':
y = zrHeight - totalHeight - padding[2] - toolboxOption.borderWidth;
break;
case 'center':
y = Math.floor((zrHeight - totalHeight) / 2);
break;
default:
y = toolboxOption.y - 0;
y = isNaN(y) ? 0 : y;
break;
}
return {
x: x,
y: y,
width: totalWidth,
height: totalHeight
};
},
__onmousemove: function (param) {
if (this._marking) {
this._markShape.style.xEnd = zrEvent.getX(param.event);
this._markShape.style.yEnd = zrEvent.getY(param.event);
this.zr.addHoverShape(this._markShape);
}
if (this._zooming) {
this._zoomShape.style.width = zrEvent.getX(param.event) - this._zoomShape.style.x;
this._zoomShape.style.height = zrEvent.getY(param.event) - this._zoomShape.style.y;
this.zr.addHoverShape(this._zoomShape);
this.dom.style.cursor = 'crosshair';
}
if (this._zoomStart && (this.dom.style.cursor != 'pointer' && this.dom.style.cursor != 'move')) {
this.dom.style.cursor = 'crosshair';
}
},
__onmousedown: function (param) {
if (param.target) {
return;
}
this._zooming = true;
var x = zrEvent.getX(param.event);
var y = zrEvent.getY(param.event);
var zoomOption = this.option.dataZoom || {};
this._zoomShape = new RectangleShape({
zlevel: this._zlevelBase,
style: {
x: x,
y: y,
width: 1,
height: 1,
brushType: 'both'
},
highlightStyle: {
lineWidth: 2,
color: zoomOption.fillerColor || ecConfig.dataZoom.fillerColor,
strokeColor: zoomOption.handleColor || ecConfig.dataZoom.handleColor,
brushType: 'both'
}
});
this.zr.addHoverShape(this._zoomShape);
return true;
},
__onmouseup: function () {
if (!this._zoomShape || Math.abs(this._zoomShape.style.width) < 10 || Math.abs(this._zoomShape.style.height) < 10) {
this._zooming = false;
return true;
}
if (this._zooming && this.component.dataZoom) {
this._zooming = false;
var zoom = this.component.dataZoom.rectZoom(this._zoomShape.style);
if (zoom) {
this._zoomQueue.push({
start: zoom.start,
end: zoom.end,
start2: zoom.start2,
end2: zoom.end2
});
this._iconEnable(this._iconShapeMap['dataZoomReset']);
this.zr.refresh();
}
}
return true;
},
__onclick: function (param) {
if (param.target) {
return;
}
if (this._marking) {
this._marking = false;
this._markShapeList.push(this._markShape);
this._iconEnable(this._iconShapeMap['markUndo']);
this._iconEnable(this._iconShapeMap['markClear']);
this.zr.addShape(this._markShape);
this.zr.refresh();
} else if (this._markStart) {
this._marking = true;
var x = zrEvent.getX(param.event);
var y = zrEvent.getY(param.event);
this._markShape = new LineShape({
zlevel: this._zlevelBase,
style: {
xStart: x,
yStart: y,
xEnd: x,
yEnd: y,
lineWidth: this.query(this.option, 'toolbox.feature.mark.lineStyle.width'),
strokeColor: this.query(this.option, 'toolbox.feature.mark.lineStyle.color'),
lineType: this.query(this.option, 'toolbox.feature.mark.lineStyle.type')
}
});
this.zr.addHoverShape(this._markShape);
}
},
__onMark: function (param) {
var target = param.target;
if (this._marking || this._markStart) {
this._resetMark();
this.zr.refresh();
} else {
this._resetZoom();
this.zr.modShape(target.id, { style: { strokeColor: this._enableColor } });
this.zr.refresh();
this._markStart = true;
var self = this;
setTimeout(function () {
self.zr && self.zr.on(zrConfig.EVENT.CLICK, self._onclick) && self.zr.on(zrConfig.EVENT.MOUSEMOVE, self._onmousemove);
}, 10);
}
return true;
},
__onMarkUndo: function () {
if (this._marking) {
this._marking = false;
} else {
var len = this._markShapeList.length;
if (len >= 1) {
var target = this._markShapeList[len - 1];
this.zr.delShape(target.id);
this.zr.refresh();
this._markShapeList.pop();
if (len === 1) {
this._iconDisable(this._iconShapeMap['markUndo']);
this._iconDisable(this._iconShapeMap['markClear']);
}
}
}
return true;
},
__onMarkClear: function () {
if (this._marking) {
this._marking = false;
}
var len = this._markShapeList.length;
if (len > 0) {
while (len--) {
this.zr.delShape(this._markShapeList.pop().id);
}
this._iconDisable(this._iconShapeMap['markUndo']);
this._iconDisable(this._iconShapeMap['markClear']);
this.zr.refresh();
}
return true;
},
__onDataZoom: function (param) {
var target = param.target;
if (this._zooming || this._zoomStart) {
this._resetZoom();
this.zr.refresh();
this.dom.style.cursor = 'default';
} else {
this._resetMark();
this.zr.modShape(target.id, { style: { strokeColor: this._enableColor } });
this.zr.refresh();
this._zoomStart = true;
var self = this;
setTimeout(function () {
self.zr && self.zr.on(zrConfig.EVENT.MOUSEDOWN, self._onmousedown) && self.zr.on(zrConfig.EVENT.MOUSEUP, self._onmouseup) && self.zr.on(zrConfig.EVENT.MOUSEMOVE, self._onmousemove);
}, 10);
this.dom.style.cursor = 'crosshair';
}
return true;
},
__onDataZoomReset: function () {
if (this._zooming) {
this._zooming = false;
}
this._zoomQueue.pop();
if (this._zoomQueue.length > 0) {
this.component.dataZoom.absoluteZoom(this._zoomQueue[this._zoomQueue.length - 1]);
} else {
this.component.dataZoom.rectZoom();
this._iconDisable(this._iconShapeMap['dataZoomReset']);
this.zr.refresh();
}
return true;
},
_resetMark: function () {
this._marking = false;
if (this._markStart) {
this._markStart = false;
if (this._iconShapeMap['mark']) {
this.zr.modShape(this._iconShapeMap['mark'].id, { style: { strokeColor: this._iconShapeMap['mark'].highlightStyle.strokeColor } });
}
this.zr.un(zrConfig.EVENT.CLICK, this._onclick);
this.zr.un(zrConfig.EVENT.MOUSEMOVE, this._onmousemove);
}
},
_resetZoom: function () {
this._zooming = false;
if (this._zoomStart) {
this._zoomStart = false;
if (this._iconShapeMap['dataZoom']) {
this.zr.modShape(this._iconShapeMap['dataZoom'].id, { style: { strokeColor: this._iconShapeMap['dataZoom'].highlightStyle.strokeColor } });
}
this.zr.un(zrConfig.EVENT.MOUSEDOWN, this._onmousedown);
this.zr.un(zrConfig.EVENT.MOUSEUP, this._onmouseup);
this.zr.un(zrConfig.EVENT.MOUSEMOVE, this._onmousemove);
}
},
_iconDisable: function (target) {
if (target.type != 'image') {
this.zr.modShape(target.id, {
hoverable: false,
clickable: false,
style: { strokeColor: this._disableColor }
});
} else {
this.zr.modShape(target.id, {
hoverable: false,
clickable: false,
style: { opacity: 0.3 }
});
}
},
_iconEnable: function (target) {
if (target.type != 'image') {
this.zr.modShape(target.id, {
hoverable: true,
clickable: true,
style: { strokeColor: target.highlightStyle.strokeColor }
});
} else {
this.zr.modShape(target.id, {
hoverable: true,
clickable: true,
style: { opacity: 0.8 }
});
}
},
__onDataView: function () {
this._dataView.show(this.option);
return true;
},
__onRestore: function () {
this._resetMark();
this._resetZoom();
this.messageCenter.dispatch(ecConfig.EVENT.RESTORE, null, null, this.myChart);
return true;
},
__onSaveAsImage: function () {
var saveOption = this.option.toolbox.feature.saveAsImage;
var imgType = saveOption.type || 'png';
if (imgType != 'png' && imgType != 'jpeg') {
imgType = 'png';
}
var image;
if (!this.myChart.isConnected()) {
image = this.zr.toDataURL('image/' + imgType, this.option.backgroundColor && this.option.backgroundColor.replace(' ', '') === 'rgba(0,0,0,0)' ? '#fff' : this.option.backgroundColor);
} else {
image = this.myChart.getConnectedDataURL(imgType);
}
var downloadDiv = document.createElement('div');
downloadDiv.id = '__echarts_download_wrap__';
downloadDiv.style.cssText = 'position:fixed;' + 'z-index:99999;' + 'display:block;' + 'top:0;left:0;' + 'background-color:rgba(33,33,33,0.5);' + 'text-align:center;' + 'width:100%;' + 'height:100%;' + 'line-height:' + document.documentElement.clientHeight + 'px;';
var downloadLink = document.createElement('a');
downloadLink.href = image;
downloadLink.setAttribute('download', (saveOption.name ? saveOption.name : this.option.title && (this.option.title.text || this.option.title.subtext) ? this.option.title.text || this.option.title.subtext : 'ECharts') + '.' + imgType);
downloadLink.innerHTML = '<img style="vertical-align:middle" src="' + image + '" title="' + (!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) ? '右键->图片另存为' : saveOption.lang ? saveOption.lang[0] : '点击保存') + '"/>';
downloadDiv.appendChild(downloadLink);
document.body.appendChild(downloadDiv);
downloadLink = null;
downloadDiv = null;
setTimeout(function () {
var _d = document.getElementById('__echarts_download_wrap__');
if (_d) {
_d.onclick = function () {
var d = document.getElementById('__echarts_download_wrap__');
d.onclick = null;
d.innerHTML = '';
document.body.removeChild(d);
d = null;
};
_d = null;
}
}, 500);
return;
},
__onMagicType: function (param) {
this._resetMark();
var itemName = param.target._name;
if (!this._magicType[itemName]) {
this._magicType[itemName] = true;
if (itemName === ecConfig.CHART_TYPE_LINE) {
this._magicType[ecConfig.CHART_TYPE_BAR] = false;
} else if (itemName === ecConfig.CHART_TYPE_BAR) {
this._magicType[ecConfig.CHART_TYPE_LINE] = false;
}
if (itemName === ecConfig.CHART_TYPE_PIE) {
this._magicType[ecConfig.CHART_TYPE_FUNNEL] = false;
} else if (itemName === ecConfig.CHART_TYPE_FUNNEL) {
this._magicType[ecConfig.CHART_TYPE_PIE] = false;
}
if (itemName === ecConfig.CHART_TYPE_FORCE) {
this._magicType[ecConfig.CHART_TYPE_CHORD] = false;
} else if (itemName === ecConfig.CHART_TYPE_CHORD) {
this._magicType[ecConfig.CHART_TYPE_FORCE] = false;
}
if (itemName === _MAGICTYPE_STACK) {
this._magicType[_MAGICTYPE_TILED] = false;
} else if (itemName === _MAGICTYPE_TILED) {
this._magicType[_MAGICTYPE_STACK] = false;
}
this.messageCenter.dispatch(ecConfig.EVENT.MAGIC_TYPE_CHANGED, param.event, { magicType: this._magicType }, this.myChart);
}
return true;
},
setMagicType: function (magicType) {
this._resetMark();
this._magicType = magicType;
!this._isSilence && this.messageCenter.dispatch(ecConfig.EVENT.MAGIC_TYPE_CHANGED, null, { magicType: this._magicType }, this.myChart);
},
__onCustomHandler: function (param) {
var target = param.target.style.iconType;
var featureHandler = this.option.toolbox.feature[target].onclick;
if (typeof featureHandler === 'function') {
featureHandler.call(this, this.option);
}
},
reset: function (newOption, isRestore) {
isRestore && this.clear();
if (this.query(newOption, 'toolbox.show') && this.query(newOption, 'toolbox.feature.magicType.show')) {
var magicType = newOption.toolbox.feature.magicType.type;
var len = magicType.length;
this._magicMap = {};
while (len--) {
this._magicMap[magicType[len]] = true;
}
len = newOption.series.length;
var oriType;
var axis;
while (len--) {
oriType = newOption.series[len].type;
if (this._magicMap[oriType]) {
axis = newOption.xAxis instanceof Array ? newOption.xAxis[newOption.series[len].xAxisIndex || 0] : newOption.xAxis;
if (axis && (axis.type || 'category') === 'category') {
axis.__boundaryGap = axis.boundaryGap != null ? axis.boundaryGap : true;
}
axis = newOption.yAxis instanceof Array ? newOption.yAxis[newOption.series[len].yAxisIndex || 0] : newOption.yAxis;
if (axis && axis.type === 'category') {
axis.__boundaryGap = axis.boundaryGap != null ? axis.boundaryGap : true;
}
newOption.series[len].__type = oriType;
newOption.series[len].__itemStyle = zrUtil.clone(newOption.series[len].itemStyle || {});
}
if (this._magicMap[_MAGICTYPE_STACK] || this._magicMap[_MAGICTYPE_TILED]) {
newOption.series[len].__stack = newOption.series[len].stack;
}
}
}
this._magicType = isRestore ? {} : this._magicType || {};
for (var itemName in this._magicType) {
if (this._magicType[itemName]) {
this.option = newOption;
this.getMagicOption();
break;
}
}
var zoomOption = newOption.dataZoom;
if (zoomOption && zoomOption.show) {
var start = zoomOption.start != null && zoomOption.start >= 0 && zoomOption.start <= 100 ? zoomOption.start : 0;
var end = zoomOption.end != null && zoomOption.end >= 0 && zoomOption.end <= 100 ? zoomOption.end : 100;
if (start > end) {
start = start + end;
end = start - end;
start = start - end;
}
this._zoomQueue = [{
start: start,
end: end,
start2: 0,
end2: 100
}];
} else {
this._zoomQueue = [];
}
},
getMagicOption: function () {
var axis;
var chartType;
if (this._magicType[ecConfig.CHART_TYPE_LINE] || this._magicType[ecConfig.CHART_TYPE_BAR]) {
var boundaryGap = this._magicType[ecConfig.CHART_TYPE_LINE] ? false : true;
for (var i = 0, l = this.option.series.length; i < l; i++) {
chartType = this.option.series[i].type;
if (chartType == ecConfig.CHART_TYPE_LINE || chartType == ecConfig.CHART_TYPE_BAR) {
axis = this.option.xAxis instanceof Array ? this.option.xAxis[this.option.series[i].xAxisIndex || 0] : this.option.xAxis;
if (axis && (axis.type || 'category') === 'category') {
axis.boundaryGap = boundaryGap ? true : axis.__boundaryGap;
}
axis = this.option.yAxis instanceof Array ? this.option.yAxis[this.option.series[i].yAxisIndex || 0] : this.option.yAxis;
if (axis && axis.type === 'category') {
axis.boundaryGap = boundaryGap ? true : axis.__boundaryGap;
}
}
}
this._defaultMagic(ecConfig.CHART_TYPE_LINE, ecConfig.CHART_TYPE_BAR);
}
this._defaultMagic(ecConfig.CHART_TYPE_CHORD, ecConfig.CHART_TYPE_FORCE);
this._defaultMagic(ecConfig.CHART_TYPE_PIE, ecConfig.CHART_TYPE_FUNNEL);
if (this._magicType[_MAGICTYPE_STACK] || this._magicType[_MAGICTYPE_TILED]) {
for (var i = 0, l = this.option.series.length; i < l; i++) {
if (this._magicType[_MAGICTYPE_STACK]) {
this.option.series[i].stack = '_ECHARTS_STACK_KENER_2014_';
chartType = _MAGICTYPE_STACK;
} else if (this._magicType[_MAGICTYPE_TILED]) {
this.option.series[i].stack = null;
chartType = _MAGICTYPE_TILED;
}
if (this._featureOption[chartType + 'Chart']) {
zrUtil.merge(this.option.series[i], this._featureOption[chartType + 'Chart'] || {}, true);
}
}
}
return this.option;
},
_defaultMagic: function (cType1, cType2) {
if (this._magicType[cType1] || this._magicType[cType2]) {
for (var i = 0, l = this.option.series.length; i < l; i++) {
var chartType = this.option.series[i].type;
if (chartType == cType1 || chartType == cType2) {
this.option.series[i].type = this._magicType[cType1] ? cType1 : cType2;
this.option.series[i].itemStyle = zrUtil.clone(this.option.series[i].__itemStyle);
chartType = this.option.series[i].type;
if (this._featureOption[chartType + 'Chart']) {
zrUtil.merge(this.option.series[i], this._featureOption[chartType + 'Chart'] || {}, true);
}
}
}
}
},
silence: function (s) {
this._isSilence = s;
},
resize: function () {
this._resetMark();
this.clear();
if (this.option && this.option.toolbox && this.option.toolbox.show) {
this._buildShape();
}
if (this._dataView) {
this._dataView.resize();
}
},
hideDataView: function () {
if (this._dataView) {
this._dataView.hide();
}
},
clear: function (notMark) {
if (this.zr) {
this.zr.delShape(this.shapeList);
this.shapeList = [];
if (!notMark) {
this.zr.delShape(this._markShapeList);
this._markShapeList = [];
}
}
},
onbeforDispose: function () {
if (this._dataView) {
this._dataView.dispose();
this._dataView = null;
}
this._markShapeList = null;
},
refresh: function (newOption) {
if (newOption) {
this._resetMark();
this._resetZoom();
newOption.toolbox = this.reformOption(newOption.toolbox);
this.option = newOption;
this.clear(true);
if (newOption.toolbox.show) {
this._buildShape();
}
this.hideDataView();
}
}
};
zrUtil.inherits(Toolbox, Base);
require('../component').define('toolbox', Toolbox);
return Toolbox;
});define('echarts/component', [], function () {
var self = {};
var _componentLibrary = {};
self.define = function (name, clazz) {
_componentLibrary[name] = clazz;
return self;
};
self.get = function (name) {
return _componentLibrary[name];
};
return self;
});define('echarts/component/title', [
'require',
'./base',
'zrender/shape/Text',
'zrender/shape/Rectangle',
'../config',
'zrender/tool/util',
'zrender/tool/area',
'zrender/tool/color',
'../component'
], function (require) {
var Base = require('./base');
var TextShape = require('zrender/shape/Text');
var RectangleShape = require('zrender/shape/Rectangle');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrArea = require('zrender/tool/area');
var zrColor = require('zrender/tool/color');
function Title(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.refresh(option);
}
Title.prototype = {
type: ecConfig.COMPONENT_TYPE_TITLE,
_buildShape: function () {
this._itemGroupLocation = this._getItemGroupLocation();
this._buildBackground();
this._buildItem();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_buildItem: function () {
var text = this.titleOption.text;
var link = this.titleOption.link;
var target = this.titleOption.target;
var subtext = this.titleOption.subtext;
var sublink = this.titleOption.sublink;
var subtarget = this.titleOption.subtarget;
var font = this.getFont(this.titleOption.textStyle);
var subfont = this.getFont(this.titleOption.subtextStyle);
var x = this._itemGroupLocation.x;
var y = this._itemGroupLocation.y;
var width = this._itemGroupLocation.width;
var height = this._itemGroupLocation.height;
var textShape = {
zlevel: this._zlevelBase,
style: {
y: y,
color: this.titleOption.textStyle.color,
text: text,
textFont: font,
textBaseline: 'top'
},
highlightStyle: {
color: zrColor.lift(this.titleOption.textStyle.color, 1),
brushType: 'fill'
},
hoverable: false
};
if (link) {
textShape.hoverable = true;
textShape.clickable = true;
textShape.onclick = function () {
if (!target || target != 'self') {
window.open(link);
} else {
window.location = link;
}
};
}
var subtextShape = {
zlevel: this._zlevelBase,
style: {
y: y + height,
color: this.titleOption.subtextStyle.color,
text: subtext,
textFont: subfont,
textBaseline: 'bottom'
},
highlightStyle: {
color: zrColor.lift(this.titleOption.subtextStyle.color, 1),
brushType: 'fill'
},
hoverable: false
};
if (sublink) {
subtextShape.hoverable = true;
subtextShape.clickable = true;
subtextShape.onclick = function () {
if (!subtarget || subtarget != 'self') {
window.open(sublink);
} else {
window.location = sublink;
}
};
}
switch (this.titleOption.x) {
case 'center':
textShape.style.x = subtextShape.style.x = x + width / 2;
textShape.style.textAlign = subtextShape.style.textAlign = 'center';
break;
case 'left':
textShape.style.x = subtextShape.style.x = x;
textShape.style.textAlign = subtextShape.style.textAlign = 'left';
break;
case 'right':
textShape.style.x = subtextShape.style.x = x + width;
textShape.style.textAlign = subtextShape.style.textAlign = 'right';
break;
default:
x = this.titleOption.x - 0;
x = isNaN(x) ? 0 : x;
textShape.style.x = subtextShape.style.x = x;
break;
}
if (this.titleOption.textAlign) {
textShape.style.textAlign = subtextShape.style.textAlign = this.titleOption.textAlign;
}
this.shapeList.push(new TextShape(textShape));
subtext !== '' && this.shapeList.push(new TextShape(subtextShape));
},
_buildBackground: function () {
var padding = this.reformCssArray(this.titleOption.padding);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._itemGroupLocation.x - padding[3],
y: this._itemGroupLocation.y - padding[0],
width: this._itemGroupLocation.width + padding[3] + padding[1],
height: this._itemGroupLocation.height + padding[0] + padding[2],
brushType: this.titleOption.borderWidth === 0 ? 'fill' : 'both',
color: this.titleOption.backgroundColor,
strokeColor: this.titleOption.borderColor,
lineWidth: this.titleOption.borderWidth
}
}));
},
_getItemGroupLocation: function () {
var padding = this.reformCssArray(this.titleOption.padding);
var text = this.titleOption.text;
var subtext = this.titleOption.subtext;
var font = this.getFont(this.titleOption.textStyle);
var subfont = this.getFont(this.titleOption.subtextStyle);
var totalWidth = Math.max(zrArea.getTextWidth(text, font), zrArea.getTextWidth(subtext, subfont));
var totalHeight = zrArea.getTextHeight(text, font) + (subtext === '' ? 0 : this.titleOption.itemGap + zrArea.getTextHeight(subtext, subfont));
var x;
var zrWidth = this.zr.getWidth();
switch (this.titleOption.x) {
case 'center':
x = Math.floor((zrWidth - totalWidth) / 2);
break;
case 'left':
x = padding[3] + this.titleOption.borderWidth;
break;
case 'right':
x = zrWidth - totalWidth - padding[1] - this.titleOption.borderWidth;
break;
default:
x = this.titleOption.x - 0;
x = isNaN(x) ? 0 : x;
break;
}
var y;
var zrHeight = this.zr.getHeight();
switch (this.titleOption.y) {
case 'top':
y = padding[0] + this.titleOption.borderWidth;
break;
case 'bottom':
y = zrHeight - totalHeight - padding[2] - this.titleOption.borderWidth;
break;
case 'center':
y = Math.floor((zrHeight - totalHeight) / 2);
break;
default:
y = this.titleOption.y - 0;
y = isNaN(y) ? 0 : y;
break;
}
return {
x: x,
y: y,
width: totalWidth,
height: totalHeight
};
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.option.title = this.reformOption(this.option.title);
this.titleOption = this.option.title;
this.titleOption.textStyle = zrUtil.merge(this.titleOption.textStyle, this.ecTheme.textStyle);
this.titleOption.subtextStyle = zrUtil.merge(this.titleOption.subtextStyle, this.ecTheme.textStyle);
}
this.clear();
this._buildShape();
}
};
zrUtil.inherits(Title, Base);
require('../component').define('title', Title);
return Title;
});define('echarts/component/tooltip', [
'require',
'./base',
'../util/shape/Cross',
'zrender/shape/Line',
'zrender/shape/Rectangle',
'../config',
'../util/ecData',
'zrender/config',
'zrender/tool/event',
'zrender/tool/area',
'zrender/tool/color',
'zrender/tool/util',
'zrender/shape/Base',
'../component'
], function (require) {
var Base = require('./base');
var CrossShape = require('../util/shape/Cross');
var LineShape = require('zrender/shape/Line');
var RectangleShape = require('zrender/shape/Rectangle');
var rectangleInstance = new RectangleShape({});
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrConfig = require('zrender/config');
var zrEvent = require('zrender/tool/event');
var zrArea = require('zrender/tool/area');
var zrColor = require('zrender/tool/color');
var zrUtil = require('zrender/tool/util');
var zrShapeBase = require('zrender/shape/Base');
function Tooltip(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.dom = myChart.dom;
var self = this;
self._onmousemove = function (param) {
return self.__onmousemove(param);
};
self._onglobalout = function (param) {
return self.__onglobalout(param);
};
this.zr.on(zrConfig.EVENT.MOUSEMOVE, self._onmousemove);
this.zr.on(zrConfig.EVENT.GLOBALOUT, self._onglobalout);
self._hide = function (param) {
return self.__hide(param);
};
self._tryShow = function (param) {
return self.__tryShow(param);
};
self._refixed = function (param) {
return self.__refixed(param);
};
self._setContent = function (ticket, res) {
return self.__setContent(ticket, res);
};
this._tDom = this._tDom || document.createElement('div');
this._tDom.onselectstart = function () {
return false;
};
this._tDom.onmouseover = function () {
self._mousein = true;
};
this._tDom.onmouseout = function () {
self._mousein = false;
};
this._tDom.style.position = 'absolute';
this.hasAppend = false;
this._axisLineShape && this.zr.delShape(this._axisLineShape.id);
this._axisLineShape = new LineShape({
zlevel: this._zlevelBase,
invisible: true,
hoverable: false
});
this.shapeList.push(this._axisLineShape);
this.zr.addShape(this._axisLineShape);
this._axisShadowShape && this.zr.delShape(this._axisShadowShape.id);
this._axisShadowShape = new LineShape({
zlevel: 1,
invisible: true,
hoverable: false
});
this.shapeList.push(this._axisShadowShape);
this.zr.addShape(this._axisShadowShape);
this._axisCrossShape && this.zr.delShape(this._axisCrossShape.id);
this._axisCrossShape = new CrossShape({
zlevel: this._zlevelBase,
invisible: true,
hoverable: false
});
this.shapeList.push(this._axisCrossShape);
this.zr.addShape(this._axisCrossShape);
this.showing = false;
this.refresh(option);
}
Tooltip.prototype = {
type: ecConfig.COMPONENT_TYPE_TOOLTIP,
_gCssText: 'position:absolute;display:block;border-style:solid;white-space:nowrap;',
_style: function (opt) {
if (!opt) {
return '';
}
var cssText = [];
if (opt.transitionDuration) {
var transitionText = 'left ' + opt.transitionDuration + 's,' + 'top ' + opt.transitionDuration + 's';
cssText.push('transition:' + transitionText);
cssText.push('-moz-transition:' + transitionText);
cssText.push('-webkit-transition:' + transitionText);
cssText.push('-o-transition:' + transitionText);
}
if (opt.backgroundColor) {
cssText.push('background-Color:' + zrColor.toHex(opt.backgroundColor));
cssText.push('filter:alpha(opacity=70)');
cssText.push('background-Color:' + opt.backgroundColor);
}
if (opt.borderWidth != null) {
cssText.push('border-width:' + opt.borderWidth + 'px');
}
if (opt.borderColor != null) {
cssText.push('border-color:' + opt.borderColor);
}
if (opt.borderRadius != null) {
cssText.push('border-radius:' + opt.borderRadius + 'px');
cssText.push('-moz-border-radius:' + opt.borderRadius + 'px');
cssText.push('-webkit-border-radius:' + opt.borderRadius + 'px');
cssText.push('-o-border-radius:' + opt.borderRadius + 'px');
}
var textStyle = opt.textStyle;
if (textStyle) {
textStyle.color && cssText.push('color:' + textStyle.color);
textStyle.decoration && cssText.push('text-decoration:' + textStyle.decoration);
textStyle.align && cssText.push('text-align:' + textStyle.align);
textStyle.fontFamily && cssText.push('font-family:' + textStyle.fontFamily);
textStyle.fontSize && cssText.push('font-size:' + textStyle.fontSize + 'px');
textStyle.fontSize && cssText.push('line-height:' + Math.round(textStyle.fontSize * 3 / 2) + 'px');
textStyle.fontStyle && cssText.push('font-style:' + textStyle.fontStyle);
textStyle.fontWeight && cssText.push('font-weight:' + textStyle.fontWeight);
}
var padding = opt.padding;
if (padding != null) {
padding = this.reformCssArray(padding);
cssText.push('padding:' + padding[0] + 'px ' + padding[1] + 'px ' + padding[2] + 'px ' + padding[3] + 'px');
}
cssText = cssText.join(';') + ';';
return cssText;
},
__hide: function () {
this._lastDataIndex = -1;
this._lastSeriesIndex = -1;
this._lastItemTriggerId = -1;
if (this._tDom) {
this._tDom.style.display = 'none';
}
var needRefresh = false;
if (!this._axisLineShape.invisible) {
this._axisLineShape.invisible = true;
this.zr.modShape(this._axisLineShape.id);
needRefresh = true;
}
if (!this._axisShadowShape.invisible) {
this._axisShadowShape.invisible = true;
this.zr.modShape(this._axisShadowShape.id);
needRefresh = true;
}
if (!this._axisCrossShape.invisible) {
this._axisCrossShape.invisible = true;
this.zr.modShape(this._axisCrossShape.id);
needRefresh = true;
}
if (this._lastTipShape && this._lastTipShape.tipShape.length > 0) {
this.zr.delShape(this._lastTipShape.tipShape);
this._lastTipShape = false;
this.shapeList.length = 2;
}
needRefresh && this.zr.refresh();
this.showing = false;
},
_show: function (position, x, y, specialCssText) {
var domHeight = this._tDom.offsetHeight;
var domWidth = this._tDom.offsetWidth;
if (position) {
if (typeof position === 'function') {
position = position([
x,
y
]);
}
if (position instanceof Array) {
x = position[0];
y = position[1];
}
}
if (x + domWidth > this._zrWidth) {
x -= domWidth + 40;
}
if (y + domHeight > this._zrHeight) {
y -= domHeight - 20;
}
if (y < 20) {
y = 0;
}
this._tDom.style.cssText = this._gCssText + this._defaultCssText + (specialCssText ? specialCssText : '') + 'left:' + x + 'px;top:' + y + 'px;';
if (domHeight < 10 || domWidth < 10) {
setTimeout(this._refixed, 20);
}
this.showing = true;
},
__refixed: function () {
if (this._tDom) {
var cssText = '';
var domHeight = this._tDom.offsetHeight;
var domWidth = this._tDom.offsetWidth;
if (this._tDom.offsetLeft + domWidth > this._zrWidth) {
cssText += 'left:' + (this._zrWidth - domWidth - 20) + 'px;';
}
if (this._tDom.offsetTop + domHeight > this._zrHeight) {
cssText += 'top:' + (this._zrHeight - domHeight - 10) + 'px;';
}
if (cssText !== '') {
this._tDom.style.cssText += cssText;
}
}
},
__tryShow: function () {
var needShow;
var trigger;
if (!this._curTarget) {
this._findPolarTrigger() || this._findAxisTrigger();
} else {
if (this._curTarget._type === 'island' && this.option.tooltip.show) {
this._showItemTrigger();
return;
}
var serie = ecData.get(this._curTarget, 'series');
var data = ecData.get(this._curTarget, 'data');
needShow = this.deepQuery([
data,
serie,
this.option
], 'tooltip.show');
if (serie == null || data == null || !needShow) {
clearTimeout(this._hidingTicket);
clearTimeout(this._showingTicket);
this._hidingTicket = setTimeout(this._hide, this._hideDelay);
} else {
trigger = this.deepQuery([
data,
serie,
this.option
], 'tooltip.trigger');
trigger === 'axis' ? this._showAxisTrigger(serie.xAxisIndex, serie.yAxisIndex, ecData.get(this._curTarget, 'dataIndex')) : this._showItemTrigger();
}
}
},
_findAxisTrigger: function () {
if (!this.component.xAxis || !this.component.yAxis) {
this._hidingTicket = setTimeout(this._hide, this._hideDelay);
return;
}
var series = this.option.series;
var xAxisIndex;
var yAxisIndex;
for (var i = 0, l = series.length; i < l; i++) {
if (this.deepQuery([
series[i],
this.option
], 'tooltip.trigger') === 'axis') {
xAxisIndex = series[i].xAxisIndex || 0;
yAxisIndex = series[i].yAxisIndex || 0;
if (this.component.xAxis.getAxis(xAxisIndex) && this.component.xAxis.getAxis(xAxisIndex).type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY) {
this._showAxisTrigger(xAxisIndex, yAxisIndex, this._getNearestDataIndex('x', this.component.xAxis.getAxis(xAxisIndex)));
return;
} else if (this.component.yAxis.getAxis(yAxisIndex) && this.component.yAxis.getAxis(yAxisIndex).type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY) {
this._showAxisTrigger(xAxisIndex, yAxisIndex, this._getNearestDataIndex('y', this.component.yAxis.getAxis(yAxisIndex)));
return;
} else {
this._showAxisTrigger(xAxisIndex, yAxisIndex, -1);
return;
}
}
}
if (this.option.tooltip.axisPointer.type === 'cross') {
this._showAxisTrigger(-1, -1, -1);
}
},
_findPolarTrigger: function () {
if (!this.component.polar) {
return false;
}
var x = zrEvent.getX(this._event);
var y = zrEvent.getY(this._event);
var polarIndex = this.component.polar.getNearestIndex([
x,
y
]);
var valueIndex;
if (polarIndex) {
valueIndex = polarIndex.valueIndex;
polarIndex = polarIndex.polarIndex;
} else {
polarIndex = -1;
}
if (polarIndex != -1) {
return this._showPolarTrigger(polarIndex, valueIndex);
}
return false;
},
_getNearestDataIndex: function (direction, categoryAxis) {
var dataIndex = -1;
var x = zrEvent.getX(this._event);
var y = zrEvent.getY(this._event);
if (direction === 'x') {
var left;
var right;
var xEnd = this.component.grid.getXend();
var curCoord = categoryAxis.getCoordByIndex(dataIndex);
while (curCoord < xEnd) {
right = curCoord;
if (curCoord <= x) {
left = curCoord;
} else {
break;
}
curCoord = categoryAxis.getCoordByIndex(++dataIndex);
}
if (dataIndex <= 0) {
dataIndex = 0;
} else if (x - left <= right - x) {
dataIndex -= 1;
} else {
if (categoryAxis.getNameByIndex(dataIndex) == null) {
dataIndex -= 1;
}
}
return dataIndex;
} else {
var top;
var bottom;
var yStart = this.component.grid.getY();
var curCoord = categoryAxis.getCoordByIndex(dataIndex);
while (curCoord > yStart) {
top = curCoord;
if (curCoord >= y) {
bottom = curCoord;
} else {
break;
}
curCoord = categoryAxis.getCoordByIndex(++dataIndex);
}
if (dataIndex <= 0) {
dataIndex = 0;
} else if (y - top >= bottom - y) {
dataIndex -= 1;
} else {
if (categoryAxis.getNameByIndex(dataIndex) == null) {
dataIndex -= 1;
}
}
return dataIndex;
}
return -1;
},
_showAxisTrigger: function (xAxisIndex, yAxisIndex, dataIndex) {
!this._event.connectTrigger && this.messageCenter.dispatch(ecConfig.EVENT.TOOLTIP_IN_GRID, this._event, null, this.myChart);
if (this.component.xAxis == null || this.component.yAxis == null || xAxisIndex == null || yAxisIndex == null) {
clearTimeout(this._hidingTicket);
clearTimeout(this._showingTicket);
this._hidingTicket = setTimeout(this._hide, this._hideDelay);
return;
}
var series = this.option.series;
var seriesArray = [];
var seriesIndex = [];
var categoryAxis;
var formatter;
var position;
var showContent;
var specialCssText = '';
if (this.option.tooltip.trigger === 'axis') {
if (!this.option.tooltip.show) {
return;
}
formatter = this.option.tooltip.formatter;
position = this.option.tooltip.position;
}
var axisLayout = xAxisIndex != -1 && this.component.xAxis.getAxis(xAxisIndex).type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY ? 'xAxis' : yAxisIndex != -1 && this.component.yAxis.getAxis(yAxisIndex).type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY ? 'yAxis' : false;
var x;
var y;
if (axisLayout) {
var axisIndex = axisLayout == 'xAxis' ? xAxisIndex : yAxisIndex;
categoryAxis = this.component[axisLayout].getAxis(axisIndex);
for (var i = 0, l = series.length; i < l; i++) {
if (!this._isSelected(series[i].name)) {
continue;
}
if (series[i][axisLayout + 'Index'] === axisIndex && this.deepQuery([
series[i],
this.option
], 'tooltip.trigger') === 'axis') {
showContent = this.query(series[i], 'tooltip.showContent') || showContent;
formatter = this.query(series[i], 'tooltip.formatter') || formatter;
position = this.query(series[i], 'tooltip.position') || position;
specialCssText += this._style(this.query(series[i], 'tooltip'));
if (series[i].stack != null && axisLayout == 'xAxis') {
seriesArray.unshift(series[i]);
seriesIndex.unshift(i);
} else {
seriesArray.push(series[i]);
seriesIndex.push(i);
}
}
}
this.messageCenter.dispatch(ecConfig.EVENT.TOOLTIP_HOVER, this._event, {
seriesIndex: seriesIndex,
dataIndex: dataIndex
}, this.myChart);
var rect;
if (axisLayout == 'xAxis') {
x = this.subPixelOptimize(categoryAxis.getCoordByIndex(dataIndex), this._axisLineWidth);
y = zrEvent.getY(this._event);
rect = [
x,
this.component.grid.getY(),
x,
this.component.grid.getYend()
];
} else {
x = zrEvent.getX(this._event);
y = this.subPixelOptimize(categoryAxis.getCoordByIndex(dataIndex), this._axisLineWidth);
rect = [
this.component.grid.getX(),
y,
this.component.grid.getXend(),
y
];
}
this._styleAxisPointer(seriesArray, rect[0], rect[1], rect[2], rect[3], categoryAxis.getGap(), x, y);
} else {
x = zrEvent.getX(this._event);
y = zrEvent.getY(this._event);
this._styleAxisPointer(series, this.component.grid.getX(), y, this.component.grid.getXend(), y, 0, x, y);
if (dataIndex >= 0) {
this._showItemTrigger(true);
} else {
clearTimeout(this._hidingTicket);
clearTimeout(this._showingTicket);
this._tDom.style.display = 'none';
}
}
if (seriesArray.length > 0) {
if (this._lastDataIndex != dataIndex || this._lastSeriesIndex != seriesIndex[0]) {
this._lastDataIndex = dataIndex;
this._lastSeriesIndex = seriesIndex[0];
var data;
var value;
if (typeof formatter === 'function') {
var params = [];
for (var i = 0, l = seriesArray.length; i < l; i++) {
data = seriesArray[i].data[dataIndex];
value = data != null ? data.value != null ? data.value : data : '-';
params.push({
seriesIndex: seriesIndex[i],
seriesName: seriesArray[i].name || '',
series: seriesArray[i],
dataIndex: dataIndex,
data: data,
name: categoryAxis.getNameByIndex(dataIndex),
value: value,
0: seriesArray[i].name || '',
1: categoryAxis.getNameByIndex(dataIndex),
2: value,
3: data
});
}
this._curTicket = 'axis:' + dataIndex;
this._tDom.innerHTML = formatter.call(this.myChart, params, this._curTicket, this._setContent);
} else if (typeof formatter === 'string') {
this._curTicket = NaN;
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}');
for (var i = 0, l = seriesArray.length; i < l; i++) {
formatter = formatter.replace('{a' + i + '}', this._encodeHTML(seriesArray[i].name || ''));
formatter = formatter.replace('{b' + i + '}', this._encodeHTML(categoryAxis.getNameByIndex(dataIndex)));
data = seriesArray[i].data[dataIndex];
data = data != null ? data.value != null ? data.value : data : '-';
formatter = formatter.replace('{c' + i + '}', data instanceof Array ? data : this.numAddCommas(data));
}
this._tDom.innerHTML = formatter;
} else {
this._curTicket = NaN;
formatter = this._encodeHTML(categoryAxis.getNameByIndex(dataIndex));
for (var i = 0, l = seriesArray.length; i < l; i++) {
formatter += '<br/>' + this._encodeHTML(seriesArray[i].name || '') + ' : ';
data = seriesArray[i].data[dataIndex];
data = data != null ? data.value != null ? data.value : data : '-';
formatter += data instanceof Array ? data : this.numAddCommas(data);
}
this._tDom.innerHTML = formatter;
}
}
if (showContent === false || !this.option.tooltip.showContent) {
return;
}
if (!this.hasAppend) {
this._tDom.style.left = this._zrWidth / 2 + 'px';
this._tDom.style.top = this._zrHeight / 2 + 'px';
this.dom.firstChild.appendChild(this._tDom);
this.hasAppend = true;
}
this._show(position, x + 10, y + 10, specialCssText);
}
},
_showPolarTrigger: function (polarIndex, dataIndex) {
if (this.component.polar == null || polarIndex == null || dataIndex == null || dataIndex < 0) {
return false;
}
var series = this.option.series;
var seriesArray = [];
var seriesIndex = [];
var formatter;
var position;
var showContent;
var specialCssText = '';
if (this.option.tooltip.trigger === 'axis') {
if (!this.option.tooltip.show) {
return false;
}
formatter = this.option.tooltip.formatter;
position = this.option.tooltip.position;
}
var indicatorName = this.option.polar[polarIndex].indicator[dataIndex].text;
for (var i = 0, l = series.length; i < l; i++) {
if (!this._isSelected(series[i].name)) {
continue;
}
if (series[i].polarIndex === polarIndex && this.deepQuery([
series[i],
this.option
], 'tooltip.trigger') === 'axis') {
showContent = this.query(series[i], 'tooltip.showContent') || showContent;
formatter = this.query(series[i], 'tooltip.formatter') || formatter;
position = this.query(series[i], 'tooltip.position') || position;
specialCssText += this._style(this.query(series[i], 'tooltip'));
seriesArray.push(series[i]);
seriesIndex.push(i);
}
}
if (seriesArray.length > 0) {
var polarData;
var data;
var value;
var params = [];
for (var i = 0, l = seriesArray.length; i < l; i++) {
polarData = seriesArray[i].data;
for (var j = 0, k = polarData.length; j < k; j++) {
data = polarData[j];
if (!this._isSelected(data.name)) {
continue;
}
data = data != null ? data : {
name: '',
value: { dataIndex: '-' }
};
value = data.value[dataIndex].value != null ? data.value[dataIndex].value : data.value[dataIndex];
params.push({
seriesIndex: seriesIndex[i],
seriesName: seriesArray[i].name || '',
series: seriesArray[i],
dataIndex: dataIndex,
data: data,
name: data.name,
indicator: indicatorName,
value: value,
0: seriesArray[i].name || '',
1: data.name,
2: value,
3: indicatorName
});
}
}
if (params.length <= 0) {
return;
}
if (this._lastDataIndex != dataIndex || this._lastSeriesIndex != seriesIndex[0]) {
this._lastDataIndex = dataIndex;
this._lastSeriesIndex = seriesIndex[0];
if (typeof formatter === 'function') {
this._curTicket = 'axis:' + dataIndex;
this._tDom.innerHTML = formatter.call(this.myChart, params, this._curTicket, this._setContent);
} else if (typeof formatter === 'string') {
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}').replace('{d}', '{d0}');
for (var i = 0, l = params.length; i < l; i++) {
formatter = formatter.replace('{a' + i + '}', this._encodeHTML(params[i].seriesName));
formatter = formatter.replace('{b' + i + '}', this._encodeHTML(params[i].name));
formatter = formatter.replace('{c' + i + '}', this.numAddCommas(params[i].value));
formatter = formatter.replace('{d' + i + '}', this._encodeHTML(params[i].indicator));
}
this._tDom.innerHTML = formatter;
} else {
formatter = this._encodeHTML(params[0].name) + '<br/>' + this._encodeHTML(params[0].indicator) + ' : ' + this.numAddCommas(params[0].value);
for (var i = 1, l = params.length; i < l; i++) {
formatter += '<br/>' + this._encodeHTML(params[i].name) + '<br/>';
formatter += this._encodeHTML(params[i].indicator) + ' : ' + this.numAddCommas(params[i].value);
}
this._tDom.innerHTML = formatter;
}
}
if (showContent === false || !this.option.tooltip.showContent) {
return;
}
if (!this.hasAppend) {
this._tDom.style.left = this._zrWidth / 2 + 'px';
this._tDom.style.top = this._zrHeight / 2 + 'px';
this.dom.firstChild.appendChild(this._tDom);
this.hasAppend = true;
}
this._show(position, zrEvent.getX(this._event), zrEvent.getY(this._event), specialCssText);
return true;
}
},
_showItemTrigger: function (axisTrigger) {
if (!this._curTarget) {
return;
}
var serie = ecData.get(this._curTarget, 'series');
var seriesIndex = ecData.get(this._curTarget, 'seriesIndex');
var data = ecData.get(this._curTarget, 'data');
var dataIndex = ecData.get(this._curTarget, 'dataIndex');
var name = ecData.get(this._curTarget, 'name');
var value = ecData.get(this._curTarget, 'value');
var special = ecData.get(this._curTarget, 'special');
var special2 = ecData.get(this._curTarget, 'special2');
var formatter;
var position;
var showContent;
var specialCssText = '';
if (this._curTarget._type != 'island') {
var trigger = axisTrigger ? 'axis' : 'item';
if (this.option.tooltip.trigger === trigger) {
formatter = this.option.tooltip.formatter;
position = this.option.tooltip.position;
}
if (this.query(serie, 'tooltip.trigger') === trigger) {
showContent = this.query(serie, 'tooltip.showContent') || showContent;
formatter = this.query(serie, 'tooltip.formatter') || formatter;
position = this.query(serie, 'tooltip.position') || position;
specialCssText += this._style(this.query(serie, 'tooltip'));
}
showContent = this.query(data, 'tooltip.showContent') || showContent;
formatter = this.query(data, 'tooltip.formatter') || formatter;
position = this.query(data, 'tooltip.position') || position;
specialCssText += this._style(this.query(data, 'tooltip'));
} else {
this._lastItemTriggerId = NaN;
showContent = this.deepQuery([
data,
serie,
this.option
], 'tooltip.showContent');
formatter = this.deepQuery([
data,
serie,
this.option
], 'tooltip.islandFormatter');
position = this.deepQuery([
data,
serie,
this.option
], 'tooltip.islandPosition');
}
if (this._lastItemTriggerId !== this._curTarget.id) {
this._lastItemTriggerId = this._curTarget.id;
if (typeof formatter === 'function') {
this._curTicket = (serie.name || '') + ':' + dataIndex;
this._tDom.innerHTML = formatter.call(this.myChart, {
seriesIndex: seriesIndex,
seriesName: serie.name || '',
series: serie,
dataIndex: dataIndex,
data: data,
name: name,
value: value,
percent: special,
indicator: special,
value2: special2,
indicator2: special2,
0: serie.name || '',
1: name,
2: value,
3: special,
4: special2,
5: data,
6: seriesIndex,
7: dataIndex
}, this._curTicket, this._setContent);
} else if (typeof formatter === 'string') {
this._curTicket = NaN;
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}');
formatter = formatter.replace('{a0}', this._encodeHTML(serie.name || '')).replace('{b0}', this._encodeHTML(name)).replace('{c0}', value instanceof Array ? value : this.numAddCommas(value));
formatter = formatter.replace('{d}', '{d0}').replace('{d0}', special || '');
formatter = formatter.replace('{e}', '{e0}').replace('{e0}', ecData.get(this._curTarget, 'special2') || '');
this._tDom.innerHTML = formatter;
} else {
this._curTicket = NaN;
if (serie.type === ecConfig.CHART_TYPE_RADAR && special) {
this._tDom.innerHTML = this._itemFormatter.radar.call(this, serie, name, value, special);
} else if (serie.type === ecConfig.CHART_TYPE_EVENTRIVER) {
this._tDom.innerHTML = this._itemFormatter.eventRiver.call(this, serie, name, value, data);
} else {
this._tDom.innerHTML = '' + (serie.name != null ? this._encodeHTML(serie.name) + '<br/>' : '') + (name === '' ? '' : this._encodeHTML(name) + ' : ') + (value instanceof Array ? value : this.numAddCommas(value));
}
}
}
if (!this._axisLineShape.invisible || !this._axisShadowShape.invisible) {
this._axisLineShape.invisible = true;
this.zr.modShape(this._axisLineShape.id);
this._axisShadowShape.invisible = true;
this.zr.modShape(this._axisShadowShape.id);
this.zr.refresh();
}
if (showContent === false || !this.option.tooltip.showContent) {
return;
}
if (!this.hasAppend) {
this._tDom.style.left = this._zrWidth / 2 + 'px';
this._tDom.style.top = this._zrHeight / 2 + 'px';
this.dom.firstChild.appendChild(this._tDom);
this.hasAppend = true;
}
this._show(position, zrEvent.getX(this._event) + 20, zrEvent.getY(this._event) - 20, specialCssText);
},
_itemFormatter: {
radar: function (serie, name, value, indicator) {
var html = '';
html += this._encodeHTML(name === '' ? serie.name || '' : name);
html += html === '' ? '' : '<br />';
for (var i = 0; i < indicator.length; i++) {
html += this._encodeHTML(indicator[i].text) + ' : ' + this.numAddCommas(value[i]) + '<br />';
}
return html;
},
chord: function (serie, name, value, special, special2) {
if (special2 == null) {
return this._encodeHTML(name) + ' (' + this.numAddCommas(value) + ')';
} else {
var name1 = this._encodeHTML(name);
var name2 = this._encodeHTML(special);
return '' + (serie.name != null ? this._encodeHTML(serie.name) + '<br/>' : '') + name1 + ' -> ' + name2 + ' (' + this.numAddCommas(value) + ')' + '<br />' + name2 + ' -> ' + name1 + ' (' + this.numAddCommas(special2) + ')';
}
},
eventRiver: function (serie, name, value, data) {
var html = '';
html += this._encodeHTML(serie.name === '' ? '' : serie.name + ' : ');
html += this._encodeHTML(name);
html += html === '' ? '' : '<br />';
data = data.evolution;
for (var i = 0, l = data.length; i < l; i++) {
html += '<div style="padding-top:5px;">';
if (!data[i].detail) {
continue;
}
if (data[i].detail.img) {
html += '<img src="' + data[i].detail.img + '" style="float:left;width:40px;height:40px;">';
}
html += '<div style="margin-left:45px;">' + data[i].time + '<br/>';
html += '<a href="' + data[i].detail.link + '" target="_blank">';
html += data[i].detail.text + '</a></div>';
html += '</div>';
}
return html;
}
},
_styleAxisPointer: function (seriesArray, xStart, yStart, xEnd, yEnd, gap, x, y) {
if (seriesArray.length > 0) {
var queryTarget;
var curType;
var axisPointer = this.option.tooltip.axisPointer;
var pointType = axisPointer.type;
var style = {
line: {},
cross: {},
shadow: {}
};
for (var pType in style) {
style[pType].color = axisPointer[pType + 'Style'].color;
style[pType].width = axisPointer[pType + 'Style'].width;
style[pType].type = axisPointer[pType + 'Style'].type;
}
for (var i = 0, l = seriesArray.length; i < l; i++) {
if (this.deepQuery([
seriesArray[i],
this.option
], 'tooltip.trigger') === 'axis') {
queryTarget = seriesArray[i];
curType = this.query(queryTarget, 'tooltip.axisPointer.type');
pointType = curType || pointType;
if (curType) {
style[curType].color = this.query(queryTarget, 'tooltip.axisPointer.' + curType + 'Style.color') || style[curType].color;
style[curType].width = this.query(queryTarget, 'tooltip.axisPointer.' + curType + 'Style.width') || style[curType].width;
style[curType].type = this.query(queryTarget, 'tooltip.axisPointer.' + curType + 'Style.type') || style[curType].type;
}
}
}
if (pointType === 'line') {
this._axisLineShape.style = {
xStart: xStart,
yStart: yStart,
xEnd: xEnd,
yEnd: yEnd,
strokeColor: style.line.color,
lineWidth: style.line.width,
lineType: style.line.type
};
this._axisLineShape.invisible = false;
this.zr.modShape(this._axisLineShape.id);
} else if (pointType === 'cross') {
this._axisCrossShape.style = {
brushType: 'stroke',
rect: this.component.grid.getArea(),
x: x,
y: y,
text: ('( ' + this.component.xAxis.getAxis(0).getValueFromCoord(x) + ' , ' + this.component.yAxis.getAxis(0).getValueFromCoord(y) + ' )').replace(' , ', ' ').replace(' , ', ' '),
textPosition: 'specific',
strokeColor: style.cross.color,
lineWidth: style.cross.width,
lineType: style.cross.type
};
if (this.component.grid.getXend() - x > 100) {
this._axisCrossShape.style.textAlign = 'left';
this._axisCrossShape.style.textX = x + 10;
} else {
this._axisCrossShape.style.textAlign = 'right';
this._axisCrossShape.style.textX = x - 10;
}
if (y - this.component.grid.getY() > 50) {
this._axisCrossShape.style.textBaseline = 'bottom';
this._axisCrossShape.style.textY = y - 10;
} else {
this._axisCrossShape.style.textBaseline = 'top';
this._axisCrossShape.style.textY = y + 10;
}
this._axisCrossShape.invisible = false;
this.zr.modShape(this._axisCrossShape.id);
} else if (pointType === 'shadow') {
if (style.shadow.width == null || style.shadow.width === 'auto' || isNaN(style.shadow.width)) {
style.shadow.width = gap;
}
if (xStart === xEnd) {
if (Math.abs(this.component.grid.getX() - xStart) < 2) {
style.shadow.width /= 2;
xStart = xEnd = xEnd + style.shadow.width / 2;
} else if (Math.abs(this.component.grid.getXend() - xStart) < 2) {
style.shadow.width /= 2;
xStart = xEnd = xEnd - style.shadow.width / 2;
}
} else if (yStart === yEnd) {
if (Math.abs(this.component.grid.getY() - yStart) < 2) {
style.shadow.width /= 2;
yStart = yEnd = yEnd + style.shadow.width / 2;
} else if (Math.abs(this.component.grid.getYend() - yStart) < 2) {
style.shadow.width /= 2;
yStart = yEnd = yEnd - style.shadow.width / 2;
}
}
this._axisShadowShape.style = {
xStart: xStart,
yStart: yStart,
xEnd: xEnd,
yEnd: yEnd,
strokeColor: style.shadow.color,
lineWidth: style.shadow.width
};
this._axisShadowShape.invisible = false;
this.zr.modShape(this._axisShadowShape.id);
}
this.zr.refresh();
}
},
__onmousemove: function (param) {
clearTimeout(this._hidingTicket);
clearTimeout(this._showingTicket);
if (this._mousein && this._enterable) {
return;
}
var target = param.target;
var mx = zrEvent.getX(param.event);
var my = zrEvent.getY(param.event);
if (!target) {
this._curTarget = false;
this._event = param.event;
this._event.zrenderX = mx;
this._event.zrenderY = my;
if (this._needAxisTrigger && this.component.grid && zrArea.isInside(rectangleInstance, this.component.grid.getArea(), mx, my)) {
this._showingTicket = setTimeout(this._tryShow, this._showDelay);
} else if (this._needAxisTrigger && this.component.polar && this.component.polar.isInside([
mx,
my
]) != -1) {
this._showingTicket = setTimeout(this._tryShow, this._showDelay);
} else {
!this._event.connectTrigger && this.messageCenter.dispatch(ecConfig.EVENT.TOOLTIP_OUT_GRID, this._event, null, this.myChart);
this._hidingTicket = setTimeout(this._hide, this._hideDelay);
}
} else {
this._curTarget = target;
this._event = param.event;
this._event.zrenderX = mx;
this._event.zrenderY = my;
var polarIndex;
if (this._needAxisTrigger && this.component.polar && (polarIndex = this.component.polar.isInside([
mx,
my
])) != -1) {
var series = this.option.series;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].polarIndex === polarIndex && this.deepQuery([
series[i],
this.option
], 'tooltip.trigger') === 'axis') {
this._curTarget = null;
break;
}
}
}
this._showingTicket = setTimeout(this._tryShow, this._showDelay);
}
},
__onglobalout: function () {
clearTimeout(this._hidingTicket);
clearTimeout(this._showingTicket);
this._hidingTicket = setTimeout(this._hide, this._hideDelay);
},
__setContent: function (ticket, content) {
if (!this._tDom) {
return;
}
if (ticket === this._curTicket) {
this._tDom.innerHTML = content;
}
setTimeout(this._refixed, 20);
},
ontooltipHover: function (param, tipShape) {
if (!this._lastTipShape || this._lastTipShape && this._lastTipShape.dataIndex != param.dataIndex) {
if (this._lastTipShape && this._lastTipShape.tipShape.length > 0) {
this.zr.delShape(this._lastTipShape.tipShape);
this.shapeList.length = 2;
}
for (var i = 0, l = tipShape.length; i < l; i++) {
tipShape[i].zlevel = this._zlevelBase;
tipShape[i].style = zrShapeBase.prototype.getHighlightStyle(tipShape[i].style, tipShape[i].highlightStyle);
tipShape[i].draggable = false;
tipShape[i].hoverable = false;
tipShape[i].clickable = false;
tipShape[i].ondragend = null;
tipShape[i].ondragover = null;
tipShape[i].ondrop = null;
this.shapeList.push(tipShape[i]);
this.zr.addShape(tipShape[i]);
}
this._lastTipShape = {
dataIndex: param.dataIndex,
tipShape: tipShape
};
}
},
ondragend: function () {
this._hide();
},
onlegendSelected: function (param) {
this._selectedMap = param.selected;
},
_setSelectedMap: function () {
if (this.component.legend) {
this._selectedMap = zrUtil.clone(this.component.legend.getSelectedMap());
} else {
this._selectedMap = {};
}
},
_isSelected: function (itemName) {
if (this._selectedMap[itemName] != null) {
return this._selectedMap[itemName];
} else {
return true;
}
},
showTip: function (params) {
if (!params) {
return;
}
var seriesIndex;
var series = this.option.series;
if (params.seriesIndex != null) {
seriesIndex = params.seriesIndex;
} else {
var seriesName = params.seriesName;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].name === seriesName) {
seriesIndex = i;
break;
}
}
}
var serie = series[seriesIndex];
if (serie == null) {
return;
}
var chart = this.myChart.chart[serie.type];
var isAxisTrigger = this.deepQuery([
serie,
this.option
], 'tooltip.trigger') === 'axis';
if (!chart) {
return;
}
if (isAxisTrigger) {
var dataIndex = params.dataIndex;
switch (chart.type) {
case ecConfig.CHART_TYPE_LINE:
case ecConfig.CHART_TYPE_BAR:
case ecConfig.CHART_TYPE_K:
if (this.component.xAxis == null || this.component.yAxis == null || serie.data.length <= dataIndex) {
return;
}
var xAxisIndex = serie.xAxisIndex || 0;
var yAxisIndex = serie.yAxisIndex || 0;
if (this.component.xAxis.getAxis(xAxisIndex).type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY) {
this._event = {
zrenderX: this.component.xAxis.getAxis(xAxisIndex).getCoordByIndex(dataIndex),
zrenderY: this.component.grid.getY() + (this.component.grid.getYend() - this.component.grid.getY()) / 4
};
} else {
this._event = {
zrenderX: this.component.grid.getX() + (this.component.grid.getXend() - this.component.grid.getX()) / 4,
zrenderY: this.component.yAxis.getAxis(yAxisIndex).getCoordByIndex(dataIndex)
};
}
this._showAxisTrigger(xAxisIndex, yAxisIndex, dataIndex);
break;
case ecConfig.CHART_TYPE_RADAR:
if (this.component.polar == null || serie.data[0].value.length <= dataIndex) {
return;
}
var polarIndex = serie.polarIndex || 0;
var vector = this.component.polar.getVector(polarIndex, dataIndex, 'max');
this._event = {
zrenderX: vector[0],
zrenderY: vector[1]
};
this._showPolarTrigger(polarIndex, dataIndex);
break;
}
} else {
var shapeList = chart.shapeList;
var x;
var y;
switch (chart.type) {
case ecConfig.CHART_TYPE_LINE:
case ecConfig.CHART_TYPE_BAR:
case ecConfig.CHART_TYPE_K:
case ecConfig.CHART_TYPE_SCATTER:
var dataIndex = params.dataIndex;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (ecData.get(shapeList[i], 'seriesIndex') == seriesIndex && ecData.get(shapeList[i], 'dataIndex') == dataIndex) {
this._curTarget = shapeList[i];
x = shapeList[i].style.x;
y = chart.type != ecConfig.CHART_TYPE_K ? shapeList[i].style.y : shapeList[i].style.y[0];
break;
}
}
break;
case ecConfig.CHART_TYPE_RADAR:
var dataIndex = params.dataIndex;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (shapeList[i].type === 'polygon' && ecData.get(shapeList[i], 'seriesIndex') == seriesIndex && ecData.get(shapeList[i], 'dataIndex') == dataIndex) {
this._curTarget = shapeList[i];
var vector = this.component.polar.getCenter(serie.polarIndex || 0);
x = vector[0];
y = vector[1];
break;
}
}
break;
case ecConfig.CHART_TYPE_PIE:
var name = params.name;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (shapeList[i].type === 'sector' && ecData.get(shapeList[i], 'seriesIndex') == seriesIndex && ecData.get(shapeList[i], 'name') == name) {
this._curTarget = shapeList[i];
var style = this._curTarget.style;
var midAngle = (style.startAngle + style.endAngle) / 2 * Math.PI / 180;
x = this._curTarget.style.x + Math.cos(midAngle) * style.r / 1.5;
y = this._curTarget.style.y - Math.sin(midAngle) * style.r / 1.5;
break;
}
}
break;
case ecConfig.CHART_TYPE_MAP:
var name = params.name;
var mapType = serie.mapType;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (shapeList[i].type === 'text' && shapeList[i]._mapType === mapType && shapeList[i].style._name === name) {
this._curTarget = shapeList[i];
x = this._curTarget.style.x + this._curTarget.position[0];
y = this._curTarget.style.y + this._curTarget.position[1];
break;
}
}
break;
case ecConfig.CHART_TYPE_CHORD:
var name = params.name;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (shapeList[i].type === 'sector' && ecData.get(shapeList[i], 'name') == name) {
this._curTarget = shapeList[i];
var style = this._curTarget.style;
var midAngle = (style.startAngle + style.endAngle) / 2 * Math.PI / 180;
x = this._curTarget.style.x + Math.cos(midAngle) * (style.r - 2);
y = this._curTarget.style.y - Math.sin(midAngle) * (style.r - 2);
this.zr.trigger(zrConfig.EVENT.MOUSEMOVE, {
zrenderX: x,
zrenderY: y
});
return;
}
}
break;
case ecConfig.CHART_TYPE_FORCE:
var name = params.name;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (shapeList[i].type === 'circle' && ecData.get(shapeList[i], 'name') == name) {
this._curTarget = shapeList[i];
x = this._curTarget.position[0];
y = this._curTarget.position[1];
break;
}
}
break;
}
if (x != null && y != null) {
this._event = {
zrenderX: x,
zrenderY: y
};
this.zr.addHoverShape(this._curTarget);
this.zr.refreshHover();
this._showItemTrigger();
}
}
},
hideTip: function () {
this._hide();
},
refresh: function (newOption) {
this._zrHeight = this.zr.getHeight();
this._zrWidth = this.zr.getWidth();
if (this._lastTipShape && this._lastTipShape.tipShape.length > 0) {
this.zr.delShape(this._lastTipShape.tipShape);
}
this._lastTipShape = false;
this.shapeList.length = 2;
this._lastDataIndex = -1;
this._lastSeriesIndex = -1;
this._lastItemTriggerId = -1;
if (newOption) {
this.option = newOption;
this.option.tooltip = this.reformOption(this.option.tooltip);
this.option.tooltip.textStyle = zrUtil.merge(this.option.tooltip.textStyle, this.ecTheme.textStyle);
this._needAxisTrigger = false;
if (this.option.tooltip.trigger === 'axis') {
this._needAxisTrigger = true;
}
var series = this.option.series;
for (var i = 0, l = series.length; i < l; i++) {
if (this.query(series[i], 'tooltip.trigger') === 'axis') {
this._needAxisTrigger = true;
break;
}
}
this._showDelay = this.option.tooltip.showDelay;
this._hideDelay = this.option.tooltip.hideDelay;
this._defaultCssText = this._style(this.option.tooltip);
this._setSelectedMap();
this._axisLineWidth = this.option.tooltip.axisPointer.lineStyle.width;
this._enterable = this.option.tooltip.enterable;
}
if (this.showing) {
var self = this;
setTimeout(function () {
self.zr.trigger(zrConfig.EVENT.MOUSEMOVE, self.zr.handler._event);
}, 50);
}
},
onbeforDispose: function () {
if (this._lastTipShape && this._lastTipShape.tipShape.length > 0) {
this.zr.delShape(this._lastTipShape.tipShape);
}
clearTimeout(this._hidingTicket);
clearTimeout(this._showingTicket);
this.zr.un(zrConfig.EVENT.MOUSEMOVE, this._onmousemove);
this.zr.un(zrConfig.EVENT.GLOBALOUT, this._onglobalout);
if (this.hasAppend) {
this.dom.firstChild.removeChild(this._tDom);
}
this._tDom = null;
},
_encodeHTML: function (source) {
return String(source).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
}
};
zrUtil.inherits(Tooltip, Base);
require('../component').define('tooltip', Tooltip);
return Tooltip;
});define('echarts/component/legend', [
'require',
'./base',
'zrender/shape/Text',
'zrender/shape/Rectangle',
'zrender/shape/Sector',
'../util/shape/Icon',
'../util/shape/Candle',
'../config',
'zrender/tool/util',
'zrender/tool/area',
'../component'
], function (require) {
var Base = require('./base');
var TextShape = require('zrender/shape/Text');
var RectangleShape = require('zrender/shape/Rectangle');
var SectorShape = require('zrender/shape/Sector');
var IconShape = require('../util/shape/Icon');
var CandleShape = require('../util/shape/Candle');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrArea = require('zrender/tool/area');
function Legend(ecTheme, messageCenter, zr, option, myChart) {
if (!this.query(option, 'legend.data')) {
console.error('option.legend.data has not been defined.');
return;
}
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
var self = this;
self._legendSelected = function (param) {
self.__legendSelected(param);
};
self._dispatchHoverLink = function (param) {
return self.__dispatchHoverLink(param);
};
this._colorIndex = 0;
this._colorMap = {};
this._selectedMap = {};
this._hasDataMap = {};
this.refresh(option);
}
Legend.prototype = {
type: ecConfig.COMPONENT_TYPE_LEGEND,
_buildShape: function () {
if (!this.legendOption.show) {
return;
}
this._itemGroupLocation = this._getItemGroupLocation();
this._buildBackground();
this._buildItem();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_buildItem: function () {
var data = this.legendOption.data;
var dataLength = data.length;
var itemName;
var itemType;
var itemShape;
var textShape;
var textStyle = this.legendOption.textStyle;
var dataTextStyle;
var dataFont;
var formattedName;
var zrWidth = this.zr.getWidth();
var zrHeight = this.zr.getHeight();
var lastX = this._itemGroupLocation.x;
var lastY = this._itemGroupLocation.y;
var itemWidth = this.legendOption.itemWidth;
var itemHeight = this.legendOption.itemHeight;
var itemGap = this.legendOption.itemGap;
var color;
if (this.legendOption.orient === 'vertical' && this.legendOption.x === 'right') {
lastX = this._itemGroupLocation.x + this._itemGroupLocation.width - itemWidth;
}
for (var i = 0; i < dataLength; i++) {
dataTextStyle = zrUtil.merge(data[i].textStyle || {}, textStyle);
dataFont = this.getFont(dataTextStyle);
itemName = this._getName(data[i]);
formattedName = this._getFormatterName(itemName);
if (itemName === '') {
if (this.legendOption.orient === 'horizontal') {
lastX = this._itemGroupLocation.x;
lastY += itemHeight + itemGap;
} else {
this.legendOption.x === 'right' ? lastX -= this._itemGroupLocation.maxWidth + itemGap : lastX += this._itemGroupLocation.maxWidth + itemGap;
lastY = this._itemGroupLocation.y;
}
continue;
}
itemType = data[i].icon || this._getSomethingByName(itemName).type;
color = this.getColor(itemName);
if (this.legendOption.orient === 'horizontal') {
if (zrWidth - lastX < 200 && itemWidth + 5 + zrArea.getTextWidth(formattedName, dataFont) + (i === dataLength - 1 || data[i + 1] === '' ? 0 : itemGap) >= zrWidth - lastX) {
lastX = this._itemGroupLocation.x;
lastY += itemHeight + itemGap;
}
} else {
if (zrHeight - lastY < 200 && itemHeight + (i === dataLength - 1 || data[i + 1] === '' ? 0 : itemGap) >= zrHeight - lastY) {
this.legendOption.x === 'right' ? lastX -= this._itemGroupLocation.maxWidth + itemGap : lastX += this._itemGroupLocation.maxWidth + itemGap;
lastY = this._itemGroupLocation.y;
}
}
itemShape = this._getItemShapeByType(lastX, lastY, itemWidth, itemHeight, this._selectedMap[itemName] && this._hasDataMap[itemName] ? color : '#ccc', itemType, color);
itemShape._name = itemName;
itemShape = new IconShape(itemShape);
textShape = {
zlevel: this._zlevelBase,
style: {
x: lastX + itemWidth + 5,
y: lastY + itemHeight / 2,
color: this._selectedMap[itemName] ? dataTextStyle.color === 'auto' ? color : dataTextStyle.color : '#ccc',
text: formattedName,
textFont: dataFont,
textBaseline: 'middle'
},
highlightStyle: {
color: color,
brushType: 'fill'
},
hoverable: !!this.legendOption.selectedMode,
clickable: !!this.legendOption.selectedMode
};
if (this.legendOption.orient === 'vertical' && this.legendOption.x === 'right') {
textShape.style.x -= itemWidth + 10;
textShape.style.textAlign = 'right';
}
textShape._name = itemName;
textShape = new TextShape(textShape);
if (this.legendOption.selectedMode) {
itemShape.onclick = textShape.onclick = this._legendSelected;
itemShape.onmouseover = textShape.onmouseover = this._dispatchHoverLink;
itemShape.hoverConnect = textShape.id;
textShape.hoverConnect = itemShape.id;
}
this.shapeList.push(itemShape);
this.shapeList.push(textShape);
if (this.legendOption.orient === 'horizontal') {
lastX += itemWidth + 5 + zrArea.getTextWidth(formattedName, dataFont) + itemGap;
} else {
lastY += itemHeight + itemGap;
}
}
if (this.legendOption.orient === 'horizontal' && this.legendOption.x === 'center' && lastY != this._itemGroupLocation.y) {
this._mLineOptimize();
}
},
_getName: function (data) {
return typeof data.name != 'undefined' ? data.name : data;
},
_getFormatterName: function (itemName) {
var formatter = this.legendOption.formatter;
var formattedName;
if (typeof formatter === 'function') {
formattedName = formatter.call(this.myChart, itemName);
} else if (typeof formatter === 'string') {
formattedName = formatter.replace('{name}', itemName);
} else {
formattedName = itemName;
}
return formattedName;
},
_getFormatterNameFromData: function (data) {
var itemName = this._getName(data);
return this._getFormatterName(itemName);
},
_mLineOptimize: function () {
var lineOffsetArray = [];
var lastX = this._itemGroupLocation.x;
for (var i = 2, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i].style.x === lastX) {
lineOffsetArray.push((this._itemGroupLocation.width - (this.shapeList[i - 1].style.x + zrArea.getTextWidth(this.shapeList[i - 1].style.text, this.shapeList[i - 1].style.textFont) - lastX)) / 2);
} else if (i === l - 1) {
lineOffsetArray.push((this._itemGroupLocation.width - (this.shapeList[i].style.x + zrArea.getTextWidth(this.shapeList[i].style.text, this.shapeList[i].style.textFont) - lastX)) / 2);
}
}
var curLineIndex = -1;
for (var i = 1, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i].style.x === lastX) {
curLineIndex++;
}
if (lineOffsetArray[curLineIndex] === 0) {
continue;
} else {
this.shapeList[i].style.x += lineOffsetArray[curLineIndex];
}
}
},
_buildBackground: function () {
var padding = this.reformCssArray(this.legendOption.padding);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._itemGroupLocation.x - padding[3],
y: this._itemGroupLocation.y - padding[0],
width: this._itemGroupLocation.width + padding[3] + padding[1],
height: this._itemGroupLocation.height + padding[0] + padding[2],
brushType: this.legendOption.borderWidth === 0 ? 'fill' : 'both',
color: this.legendOption.backgroundColor,
strokeColor: this.legendOption.borderColor,
lineWidth: this.legendOption.borderWidth
}
}));
},
_getItemGroupLocation: function () {
var data = this.legendOption.data;
var dataLength = data.length;
var itemGap = this.legendOption.itemGap;
var itemWidth = this.legendOption.itemWidth + 5;
var itemHeight = this.legendOption.itemHeight;
var textStyle = this.legendOption.textStyle;
var font = this.getFont(textStyle);
var totalWidth = 0;
var totalHeight = 0;
var padding = this.reformCssArray(this.legendOption.padding);
var zrWidth = this.zr.getWidth() - padding[1] - padding[3];
var zrHeight = this.zr.getHeight() - padding[0] - padding[2];
var temp = 0;
var maxWidth = 0;
if (this.legendOption.orient === 'horizontal') {
totalHeight = itemHeight;
for (var i = 0; i < dataLength; i++) {
if (this._getName(data[i]) === '') {
temp -= itemGap;
if (temp > zrWidth) {
totalWidth = zrWidth;
totalHeight += itemHeight + itemGap;
} else {
totalWidth = Math.max(totalWidth, temp);
}
totalHeight += itemHeight + itemGap;
temp = 0;
continue;
}
temp += itemWidth + zrArea.getTextWidth(this._getFormatterNameFromData(data[i]), data[i].textStyle ? this.getFont(zrUtil.merge(data[i].textStyle || {}, textStyle)) : font) + itemGap;
}
totalHeight = Math.max(totalHeight, itemHeight);
temp -= itemGap;
if (temp > zrWidth) {
totalWidth = zrWidth;
totalHeight += itemHeight + itemGap;
} else {
totalWidth = Math.max(totalWidth, temp);
}
} else {
for (var i = 0; i < dataLength; i++) {
maxWidth = Math.max(maxWidth, zrArea.getTextWidth(this._getFormatterNameFromData(data[i]), data[i].textStyle ? this.getFont(zrUtil.merge(data[i].textStyle || {}, textStyle)) : font));
}
maxWidth += itemWidth;
totalWidth = maxWidth;
for (var i = 0; i < dataLength; i++) {
if (this._getName(data[i]) === '') {
temp -= itemGap;
if (temp > zrHeight) {
totalHeight = zrHeight;
totalWidth += maxWidth + itemGap;
} else {
totalHeight = Math.max(totalHeight, temp);
}
totalWidth += maxWidth + itemGap;
temp = 0;
continue;
}
temp += itemHeight + itemGap;
}
totalWidth = Math.max(totalWidth, maxWidth);
temp -= itemGap;
if (temp > zrHeight) {
totalHeight = zrHeight;
totalWidth += maxWidth + itemGap;
} else {
totalHeight = Math.max(totalHeight, temp);
}
}
zrWidth = this.zr.getWidth();
zrHeight = this.zr.getHeight();
var x;
switch (this.legendOption.x) {
case 'center':
x = Math.floor((zrWidth - totalWidth) / 2);
break;
case 'left':
x = padding[3] + this.legendOption.borderWidth;
break;
case 'right':
x = zrWidth - totalWidth - padding[1] - padding[3] - this.legendOption.borderWidth * 2;
break;
default:
x = this.parsePercent(this.legendOption.x, zrWidth);
break;
}
var y;
switch (this.legendOption.y) {
case 'top':
y = padding[0] + this.legendOption.borderWidth;
break;
case 'bottom':
y = zrHeight - totalHeight - padding[0] - padding[2] - this.legendOption.borderWidth * 2;
break;
case 'center':
y = Math.floor((zrHeight - totalHeight) / 2);
break;
default:
y = this.parsePercent(this.legendOption.y, zrHeight);
break;
}
return {
x: x,
y: y,
width: totalWidth,
height: totalHeight,
maxWidth: maxWidth
};
},
_getSomethingByName: function (name) {
var series = this.option.series;
var data;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].name === name) {
return {
type: series[i].type,
series: series[i],
seriesIndex: i,
data: null,
dataIndex: -1
};
}
if (series[i].type === ecConfig.CHART_TYPE_PIE || series[i].type === ecConfig.CHART_TYPE_RADAR || series[i].type === ecConfig.CHART_TYPE_CHORD || series[i].type === ecConfig.CHART_TYPE_FORCE || series[i].type === ecConfig.CHART_TYPE_FUNNEL) {
data = series[i].categories || series[i].data || series[i].nodes;
for (var j = 0, k = data.length; j < k; j++) {
if (data[j].name === name) {
return {
type: series[i].type,
series: series[i],
seriesIndex: i,
data: data[j],
dataIndex: j
};
}
}
}
}
return {
type: 'bar',
series: null,
seriesIndex: -1,
data: null,
dataIndex: -1
};
},
_getItemShapeByType: function (x, y, width, height, color, itemType, defaultColor) {
var highlightColor = color === '#ccc' ? defaultColor : color;
var itemShape = {
zlevel: this._zlevelBase,
style: {
iconType: 'legendicon' + itemType,
x: x,
y: y,
width: width,
height: height,
color: color,
strokeColor: color,
lineWidth: 2
},
highlightStyle: {
color: highlightColor,
strokeColor: highlightColor,
lineWidth: 1
},
hoverable: this.legendOption.selectedMode,
clickable: this.legendOption.selectedMode
};
var imageLocation;
if (itemType.match('image')) {
var imageLocation = itemType.replace(new RegExp('^image:\\/\\/'), '');
itemType = 'image';
}
switch (itemType) {
case 'line':
itemShape.style.brushType = 'stroke';
itemShape.highlightStyle.lineWidth = 3;
break;
case 'radar':
case 'scatter':
itemShape.highlightStyle.lineWidth = 3;
break;
case 'k':
itemShape.style.brushType = 'both';
itemShape.highlightStyle.lineWidth = 3;
itemShape.highlightStyle.color = itemShape.style.color = this.query(this.ecTheme, 'k.itemStyle.normal.color') || '#fff';
itemShape.style.strokeColor = color != '#ccc' ? this.query(this.ecTheme, 'k.itemStyle.normal.lineStyle.color') || '#ff3200' : color;
break;
case 'image':
itemShape.style.iconType = 'image';
itemShape.style.image = imageLocation;
if (color === '#ccc') {
itemShape.style.opacity = 0.5;
}
break;
}
return itemShape;
},
__legendSelected: function (param) {
var itemName = param.target._name;
if (this.legendOption.selectedMode === 'single') {
for (var k in this._selectedMap) {
this._selectedMap[k] = false;
}
}
this._selectedMap[itemName] = !this._selectedMap[itemName];
this.messageCenter.dispatch(ecConfig.EVENT.LEGEND_SELECTED, param.event, {
selected: this._selectedMap,
target: itemName
}, this.myChart);
},
__dispatchHoverLink: function (param) {
this.messageCenter.dispatch(ecConfig.EVENT.LEGEND_HOVERLINK, param.event, { target: param.target._name }, this.myChart);
return;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption || this.option;
this.option.legend = this.reformOption(this.option.legend);
this.legendOption = this.option.legend;
var data = this.legendOption.data || [];
var itemName;
var something;
var color;
var queryTarget;
if (this.legendOption.selected) {
for (var k in this.legendOption.selected) {
this._selectedMap[k] = typeof this._selectedMap[k] != 'undefined' ? this._selectedMap[k] : this.legendOption.selected[k];
}
}
for (var i = 0, dataLength = data.length; i < dataLength; i++) {
itemName = this._getName(data[i]);
if (itemName === '') {
continue;
}
something = this._getSomethingByName(itemName);
if (!something.series) {
this._hasDataMap[itemName] = false;
} else {
this._hasDataMap[itemName] = true;
if (something.data && (something.type === ecConfig.CHART_TYPE_PIE || something.type === ecConfig.CHART_TYPE_FORCE || something.type === ecConfig.CHART_TYPE_FUNNEL)) {
queryTarget = [
something.data,
something.series
];
} else {
queryTarget = [something.series];
}
color = this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), something.seriesIndex, something.dataIndex, something.data);
if (color && something.type != ecConfig.CHART_TYPE_K) {
this.setColor(itemName, color);
}
this._selectedMap[itemName] = this._selectedMap[itemName] != null ? this._selectedMap[itemName] : true;
}
}
}
this.clear();
this._buildShape();
},
getRelatedAmount: function (name) {
var amount = 0;
var series = this.option.series;
var data;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].name === name) {
amount++;
}
if (series[i].type === ecConfig.CHART_TYPE_PIE || series[i].type === ecConfig.CHART_TYPE_RADAR || series[i].type === ecConfig.CHART_TYPE_CHORD || series[i].type === ecConfig.CHART_TYPE_FORCE || series[i].type === ecConfig.CHART_TYPE_FUNNEL) {
data = series[i].type != ecConfig.CHART_TYPE_FORCE ? series[i].data : series[i].categories;
for (var j = 0, k = data.length; j < k; j++) {
if (data[j].name === name && data[j].value != '-') {
amount++;
}
}
}
}
return amount;
},
setColor: function (legendName, color) {
this._colorMap[legendName] = color;
},
getColor: function (legendName) {
if (!this._colorMap[legendName]) {
this._colorMap[legendName] = this.zr.getColor(this._colorIndex++);
}
return this._colorMap[legendName];
},
hasColor: function (legendName) {
return this._colorMap[legendName] ? this._colorMap[legendName] : false;
},
add: function (name, color) {
var data = this.legendOption.data;
for (var i = 0, dataLength = data.length; i < dataLength; i++) {
if (this._getName(data[i]) === name) {
return;
}
}
this.legendOption.data.push(name);
this.setColor(name, color);
this._selectedMap[name] = true;
this._hasDataMap[name] = true;
},
del: function (name) {
var data = this.legendOption.data;
for (var i = 0, dataLength = data.length; i < dataLength; i++) {
if (this._getName(data[i]) === name) {
return this.legendOption.data.splice(i, 1);
}
}
},
getItemShape: function (name) {
if (name == null) {
return;
}
var shape;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
shape = this.shapeList[i];
if (shape._name === name && shape.type != 'text') {
return shape;
}
}
},
setItemShape: function (name, itemShape) {
var shape;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
shape = this.shapeList[i];
if (shape._name === name && shape.type != 'text') {
if (!this._selectedMap[name]) {
itemShape.style.color = '#ccc';
itemShape.style.strokeColor = '#ccc';
}
this.zr.modShape(shape.id, itemShape);
}
}
},
isSelected: function (itemName) {
if (typeof this._selectedMap[itemName] != 'undefined') {
return this._selectedMap[itemName];
} else {
return true;
}
},
getSelectedMap: function () {
return this._selectedMap;
},
setSelected: function (itemName, selectStatus) {
if (this.legendOption.selectedMode === 'single') {
for (var k in this._selectedMap) {
this._selectedMap[k] = false;
}
}
this._selectedMap[itemName] = selectStatus;
this.messageCenter.dispatch(ecConfig.EVENT.LEGEND_SELECTED, null, {
selected: this._selectedMap,
target: itemName
}, this.myChart);
},
onlegendSelected: function (param, status) {
var legendSelected = param.selected;
for (var itemName in legendSelected) {
if (this._selectedMap[itemName] != legendSelected[itemName]) {
status.needRefresh = true;
}
this._selectedMap[itemName] = legendSelected[itemName];
}
return;
}
};
var legendIcon = {
line: function (ctx, style) {
var dy = style.height / 2;
ctx.moveTo(style.x, style.y + dy);
ctx.lineTo(style.x + style.width, style.y + dy);
},
pie: function (ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
SectorShape.prototype.buildPath(ctx, {
x: x + width / 2,
y: y + height + 2,
r: height + 2,
r0: 6,
startAngle: 45,
endAngle: 135
});
},
eventRiver: function (ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
ctx.moveTo(x, y + height);
ctx.bezierCurveTo(x + width, y + height, x, y + 4, x + width, y + 4);
ctx.lineTo(x + width, y);
ctx.bezierCurveTo(x, y, x + width, y + height - 4, x, y + height - 4);
ctx.lineTo(x, y + height);
},
k: function (ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
CandleShape.prototype.buildPath(ctx, {
x: x + width / 2,
y: [
y + 1,
y + 1,
y + height - 6,
y + height
],
width: width - 6
});
},
bar: function (ctx, style) {
var x = style.x;
var y = style.y + 1;
var width = style.width;
var height = style.height - 2;
var r = 3;
ctx.moveTo(x + r, y);
ctx.lineTo(x + width - r, y);
ctx.quadraticCurveTo(x + width, y, x + width, y + r);
ctx.lineTo(x + width, y + height - r);
ctx.quadraticCurveTo(x + width, y + height, x + width - r, y + height);
ctx.lineTo(x + r, y + height);
ctx.quadraticCurveTo(x, y + height, x, y + height - r);
ctx.lineTo(x, y + r);
ctx.quadraticCurveTo(x, y, x + r, y);
},
force: function (ctx, style) {
IconShape.prototype.iconLibrary.circle(ctx, style);
},
radar: function (ctx, style) {
var n = 6;
var x = style.x + style.width / 2;
var y = style.y + style.height / 2;
var r = style.height / 2;
var dStep = 2 * Math.PI / n;
var deg = -Math.PI / 2;
var xStart = x + r * Math.cos(deg);
var yStart = y + r * Math.sin(deg);
ctx.moveTo(xStart, yStart);
deg += dStep;
for (var i = 0, end = n - 1; i < end; i++) {
ctx.lineTo(x + r * Math.cos(deg), y + r * Math.sin(deg));
deg += dStep;
}
ctx.lineTo(xStart, yStart);
}
};
legendIcon.chord = legendIcon.pie;
legendIcon.map = legendIcon.bar;
for (var k in legendIcon) {
IconShape.prototype.iconLibrary['legendicon' + k] = legendIcon[k];
}
zrUtil.inherits(Legend, Base);
require('../component').define('legend', Legend);
return Legend;
});define('echarts/util/ecData', [], function () {
function pack(shape, series, seriesIndex, data, dataIndex, name, special, special2) {
var value;
if (typeof data != 'undefined') {
value = data.value == null ? data : data.value;
}
shape._echartsData = {
'_series': series,
'_seriesIndex': seriesIndex,
'_data': data,
'_dataIndex': dataIndex,
'_name': name,
'_value': value,
'_special': special,
'_special2': special2
};
return shape._echartsData;
}
function get(shape, key) {
var data = shape._echartsData;
if (!key) {
return data;
}
switch (key) {
case 'series':
case 'seriesIndex':
case 'data':
case 'dataIndex':
case 'name':
case 'value':
case 'special':
case 'special2':
return data && data['_' + key];
}
return null;
}
function set(shape, key, value) {
shape._echartsData = shape._echartsData || {};
switch (key) {
case 'series':
case 'seriesIndex':
case 'data':
case 'dataIndex':
case 'name':
case 'value':
case 'special':
case 'special2':
shape._echartsData['_' + key] = value;
break;
}
}
function clone(source, target) {
target._echartsData = {
'_series': source._echartsData._series,
'_seriesIndex': source._echartsData._seriesIndex,
'_data': source._echartsData._data,
'_dataIndex': source._echartsData._dataIndex,
'_name': source._echartsData._name,
'_value': source._echartsData._value,
'_special': source._echartsData._special,
'_special2': source._echartsData._special2
};
}
return {
pack: pack,
set: set,
get: get,
clone: clone
};
});define('echarts/chart', [], function () {
var self = {};
var _chartLibrary = {};
self.define = function (name, clazz) {
_chartLibrary[name] = clazz;
return self;
};
self.get = function (name) {
return _chartLibrary[name];
};
return self;
});define('zrender/tool/color', [
'require',
'../tool/util'
], function (require) {
var util = require('../tool/util');
var _ctx;
var palette = [
'#ff9277',
' #dddd00',
' #ffc877',
' #bbe3ff',
' #d5ffbb',
'#bbbbff',
' #ddb000',
' #b0dd00',
' #e2bbff',
' #ffbbe3',
'#ff7777',
' #ff9900',
' #83dd00',
' #77e3ff',
' #778fff',
'#c877ff',
' #ff77ab',
' #ff6600',
' #aa8800',
' #77c7ff',
'#ad77ff',
' #ff77ff',
' #dd0083',
' #777700',
' #00aa00',
'#0088aa',
' #8400dd',
' #aa0088',
' #dd0000',
' #772e00'
];
var _palette = palette;
var highlightColor = 'rgba(255,255,0,0.5)';
var _highlightColor = highlightColor;
var colorRegExp = /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i;
var _nameColors = {
aliceblue: '#f0f8ff',
antiquewhite: '#faebd7',
aqua: '#0ff',
aquamarine: '#7fffd4',
azure: '#f0ffff',
beige: '#f5f5dc',
bisque: '#ffe4c4',
black: '#000',
blanchedalmond: '#ffebcd',
blue: '#00f',
blueviolet: '#8a2be2',
brown: '#a52a2a',
burlywood: '#deb887',
cadetblue: '#5f9ea0',
chartreuse: '#7fff00',
chocolate: '#d2691e',
coral: '#ff7f50',
cornflowerblue: '#6495ed',
cornsilk: '#fff8dc',
crimson: '#dc143c',
cyan: '#0ff',
darkblue: '#00008b',
darkcyan: '#008b8b',
darkgoldenrod: '#b8860b',
darkgray: '#a9a9a9',
darkgrey: '#a9a9a9',
darkgreen: '#006400',
darkkhaki: '#bdb76b',
darkmagenta: '#8b008b',
darkolivegreen: '#556b2f',
darkorange: '#ff8c00',
darkorchid: '#9932cc',
darkred: '#8b0000',
darksalmon: '#e9967a',
darkseagreen: '#8fbc8f',
darkslateblue: '#483d8b',
darkslategray: '#2f4f4f',
darkslategrey: '#2f4f4f',
darkturquoise: '#00ced1',
darkviolet: '#9400d3',
deeppink: '#ff1493',
deepskyblue: '#00bfff',
dimgray: '#696969',
dimgrey: '#696969',
dodgerblue: '#1e90ff',
firebrick: '#b22222',
floralwhite: '#fffaf0',
forestgreen: '#228b22',
fuchsia: '#f0f',
gainsboro: '#dcdcdc',
ghostwhite: '#f8f8ff',
gold: '#ffd700',
goldenrod: '#daa520',
gray: '#808080',
grey: '#808080',
green: '#008000',
greenyellow: '#adff2f',
honeydew: '#f0fff0',
hotpink: '#ff69b4',
indianred: '#cd5c5c',
indigo: '#4b0082',
ivory: '#fffff0',
khaki: '#f0e68c',
lavender: '#e6e6fa',
lavenderblush: '#fff0f5',
lawngreen: '#7cfc00',
lemonchiffon: '#fffacd',
lightblue: '#add8e6',
lightcoral: '#f08080',
lightcyan: '#e0ffff',
lightgoldenrodyellow: '#fafad2',
lightgray: '#d3d3d3',
lightgrey: '#d3d3d3',
lightgreen: '#90ee90',
lightpink: '#ffb6c1',
lightsalmon: '#ffa07a',
lightseagreen: '#20b2aa',
lightskyblue: '#87cefa',
lightslategray: '#789',
lightslategrey: '#789',
lightsteelblue: '#b0c4de',
lightyellow: '#ffffe0',
lime: '#0f0',
limegreen: '#32cd32',
linen: '#faf0e6',
magenta: '#f0f',
maroon: '#800000',
mediumaquamarine: '#66cdaa',
mediumblue: '#0000cd',
mediumorchid: '#ba55d3',
mediumpurple: '#9370d8',
mediumseagreen: '#3cb371',
mediumslateblue: '#7b68ee',
mediumspringgreen: '#00fa9a',
mediumturquoise: '#48d1cc',
mediumvioletred: '#c71585',
midnightblue: '#191970',
mintcream: '#f5fffa',
mistyrose: '#ffe4e1',
moccasin: '#ffe4b5',
navajowhite: '#ffdead',
navy: '#000080',
oldlace: '#fdf5e6',
olive: '#808000',
olivedrab: '#6b8e23',
orange: '#ffa500',
orangered: '#ff4500',
orchid: '#da70d6',
palegoldenrod: '#eee8aa',
palegreen: '#98fb98',
paleturquoise: '#afeeee',
palevioletred: '#d87093',
papayawhip: '#ffefd5',
peachpuff: '#ffdab9',
peru: '#cd853f',
pink: '#ffc0cb',
plum: '#dda0dd',
powderblue: '#b0e0e6',
purple: '#800080',
red: '#f00',
rosybrown: '#bc8f8f',
royalblue: '#4169e1',
saddlebrown: '#8b4513',
salmon: '#fa8072',
sandybrown: '#f4a460',
seagreen: '#2e8b57',
seashell: '#fff5ee',
sienna: '#a0522d',
silver: '#c0c0c0',
skyblue: '#87ceeb',
slateblue: '#6a5acd',
slategray: '#708090',
slategrey: '#708090',
snow: '#fffafa',
springgreen: '#00ff7f',
steelblue: '#4682b4',
tan: '#d2b48c',
teal: '#008080',
thistle: '#d8bfd8',
tomato: '#ff6347',
turquoise: '#40e0d0',
violet: '#ee82ee',
wheat: '#f5deb3',
white: '#fff',
whitesmoke: '#f5f5f5',
yellow: '#ff0',
yellowgreen: '#9acd32'
};
function customPalette(userPalete) {
palette = userPalete;
}
function resetPalette() {
palette = _palette;
}
function getColor(idx, userPalete) {
idx = idx | 0;
userPalete = userPalete || palette;
return userPalete[idx % userPalete.length];
}
function customHighlight(userHighlightColor) {
highlightColor = userHighlightColor;
}
function resetHighlight() {
_highlightColor = highlightColor;
}
function getHighlightColor() {
return highlightColor;
}
function getRadialGradient(x0, y0, r0, x1, y1, r1, colorList) {
if (!_ctx) {
_ctx = util.getContext();
}
var gradient = _ctx.createRadialGradient(x0, y0, r0, x1, y1, r1);
for (var i = 0, l = colorList.length; i < l; i++) {
gradient.addColorStop(colorList[i][0], colorList[i][1]);
}
gradient.__nonRecursion = true;
return gradient;
}
function getLinearGradient(x0, y0, x1, y1, colorList) {
if (!_ctx) {
_ctx = util.getContext();
}
var gradient = _ctx.createLinearGradient(x0, y0, x1, y1);
for (var i = 0, l = colorList.length; i < l; i++) {
gradient.addColorStop(colorList[i][0], colorList[i][1]);
}
gradient.__nonRecursion = true;
return gradient;
}
function getStepColors(start, end, step) {
start = toRGBA(start);
end = toRGBA(end);
start = getData(start);
end = getData(end);
var colors = [];
var stepR = (end[0] - start[0]) / step;
var stepG = (end[1] - start[1]) / step;
var stepB = (end[2] - start[2]) / step;
var stepA = (end[3] - start[3]) / step;
for (var i = 0, r = start[0], g = start[1], b = start[2], a = start[3]; i < step; i++) {
colors[i] = toColor([
adjust(Math.floor(r), [
0,
255
]),
adjust(Math.floor(g), [
0,
255
]),
adjust(Math.floor(b), [
0,
255
]),
a.toFixed(4) - 0
], 'rgba');
r += stepR;
g += stepG;
b += stepB;
a += stepA;
}
r = end[0];
g = end[1];
b = end[2];
a = end[3];
colors[i] = toColor([
r,
g,
b,
a
], 'rgba');
return colors;
}
function getGradientColors(colors, step) {
var ret = [];
var len = colors.length;
if (step === undefined) {
step = 20;
}
if (len === 1) {
ret = getStepColors(colors[0], colors[0], step);
} else if (len > 1) {
for (var i = 0, n = len - 1; i < n; i++) {
var steps = getStepColors(colors[i], colors[i + 1], step);
if (i < n - 1) {
steps.pop();
}
ret = ret.concat(steps);
}
}
return ret;
}
function toColor(data, format) {
format = format || 'rgb';
if (data && (data.length === 3 || data.length === 4)) {
data = map(data, function (c) {
return c > 1 ? Math.ceil(c) : c;
});
if (format.indexOf('hex') > -1) {
return '#' + ((1 << 24) + (data[0] << 16) + (data[1] << 8) + +data[2]).toString(16).slice(1);
} else if (format.indexOf('hs') > -1) {
var sx = map(data.slice(1, 3), function (c) {
return c + '%';
});
data[1] = sx[0];
data[2] = sx[1];
}
if (format.indexOf('a') > -1) {
if (data.length === 3) {
data.push(1);
}
data[3] = adjust(data[3], [
0,
1
]);
return format + '(' + data.slice(0, 4).join(',') + ')';
}
return format + '(' + data.slice(0, 3).join(',') + ')';
}
}
function toArray(color) {
color = trim(color);
if (color.indexOf('rgba') < 0) {
color = toRGBA(color);
}
var data = [];
var i = 0;
color.replace(/[\d.]+/g, function (n) {
if (i < 3) {
n = n | 0;
} else {
n = +n;
}
data[i++] = n;
});
return data;
}
function convert(color, format) {
if (!isCalculableColor(color)) {
return color;
}
var data = getData(color);
var alpha = data[3];
if (typeof alpha === 'undefined') {
alpha = 1;
}
if (color.indexOf('hsb') > -1) {
data = _HSV_2_RGB(data);
} else if (color.indexOf('hsl') > -1) {
data = _HSL_2_RGB(data);
}
if (format.indexOf('hsb') > -1 || format.indexOf('hsv') > -1) {
data = _RGB_2_HSB(data);
} else if (format.indexOf('hsl') > -1) {
data = _RGB_2_HSL(data);
}
data[3] = alpha;
return toColor(data, format);
}
function toRGBA(color) {
return convert(color, 'rgba');
}
function toRGB(color) {
return convert(color, 'rgb');
}
function toHex(color) {
return convert(color, 'hex');
}
function toHSVA(color) {
return convert(color, 'hsva');
}
function toHSV(color) {
return convert(color, 'hsv');
}
function toHSBA(color) {
return convert(color, 'hsba');
}
function toHSB(color) {
return convert(color, 'hsb');
}
function toHSLA(color) {
return convert(color, 'hsla');
}
function toHSL(color) {
return convert(color, 'hsl');
}
function toName(color) {
for (var key in _nameColors) {
if (toHex(_nameColors[key]) === toHex(color)) {
return key;
}
}
return null;
}
function trim(color) {
return String(color).replace(/\s+/g, '');
}
function normalize(color) {
if (_nameColors[color]) {
color = _nameColors[color];
}
color = trim(color);
color = color.replace(/hsv/i, 'hsb');
if (/^#[\da-f]{3}$/i.test(color)) {
color = parseInt(color.slice(1), 16);
var r = (color & 3840) << 8;
var g = (color & 240) << 4;
var b = color & 15;
color = '#' + ((1 << 24) + (r << 4) + r + (g << 4) + g + (b << 4) + b).toString(16).slice(1);
}
return color;
}
function lift(color, level) {
if (!isCalculableColor(color)) {
return color;
}
var direct = level > 0 ? 1 : -1;
if (typeof level === 'undefined') {
level = 0;
}
level = Math.abs(level) > 1 ? 1 : Math.abs(level);
color = toRGB(color);
var data = getData(color);
for (var i = 0; i < 3; i++) {
if (direct === 1) {
data[i] = data[i] * (1 - level) | 0;
} else {
data[i] = (255 - data[i]) * level + data[i] | 0;
}
}
return 'rgb(' + data.join(',') + ')';
}
function reverse(color) {
if (!isCalculableColor(color)) {
return color;
}
var data = getData(toRGBA(color));
data = map(data, function (c) {
return 255 - c;
});
return toColor(data, 'rgb');
}
function mix(color1, color2, weight) {
if (!isCalculableColor(color1) || !isCalculableColor(color2)) {
return color1;
}
if (typeof weight === 'undefined') {
weight = 0.5;
}
weight = 1 - adjust(weight, [
0,
1
]);
var w = weight * 2 - 1;
var data1 = getData(toRGBA(color1));
var data2 = getData(toRGBA(color2));
var d = data1[3] - data2[3];
var weight1 = ((w * d === -1 ? w : (w + d) / (1 + w * d)) + 1) / 2;
var weight2 = 1 - weight1;
var data = [];
for (var i = 0; i < 3; i++) {
data[i] = data1[i] * weight1 + data2[i] * weight2;
}
var alpha = data1[3] * weight + data2[3] * (1 - weight);
alpha = Math.max(0, Math.min(1, alpha));
if (data1[3] === 1 && data2[3] === 1) {
return toColor(data, 'rgb');
}
data[3] = alpha;
return toColor(data, 'rgba');
}
function random() {
return '#' + (Math.random().toString(16) + '0000').slice(2, 8);
}
function getData(color) {
color = normalize(color);
var r = color.match(colorRegExp);
if (r === null) {
throw new Error('The color format error');
}
var d;
var a;
var data = [];
var rgb;
if (r[2]) {
d = r[2].replace('#', '').split('');
rgb = [
d[0] + d[1],
d[2] + d[3],
d[4] + d[5]
];
data = map(rgb, function (c) {
return adjust(parseInt(c, 16), [
0,
255
]);
});
} else if (r[4]) {
var rgba = r[4].split(',');
a = rgba[3];
rgb = rgba.slice(0, 3);
data = map(rgb, function (c) {
c = Math.floor(c.indexOf('%') > 0 ? parseInt(c, 0) * 2.55 : c);
return adjust(c, [
0,
255
]);
});
if (typeof a !== 'undefined') {
data.push(adjust(parseFloat(a), [
0,
1
]));
}
} else if (r[5] || r[6]) {
var hsxa = (r[5] || r[6]).split(',');
var h = parseInt(hsxa[0], 0) / 360;
var s = hsxa[1];
var x = hsxa[2];
a = hsxa[3];
data = map([
s,
x
], function (c) {
return adjust(parseFloat(c) / 100, [
0,
1
]);
});
data.unshift(h);
if (typeof a !== 'undefined') {
data.push(adjust(parseFloat(a), [
0,
1
]));
}
}
return data;
}
function alpha(color, a) {
if (!isCalculableColor(color)) {
return color;
}
if (a === null) {
a = 1;
}
var data = getData(toRGBA(color));
data[3] = adjust(Number(a).toFixed(4), [
0,
1
]);
return toColor(data, 'rgba');
}
function map(array, fun) {
if (typeof fun !== 'function') {
throw new TypeError();
}
var len = array ? array.length : 0;
for (var i = 0; i < len; i++) {
array[i] = fun(array[i]);
}
return array;
}
function adjust(value, region) {
if (value <= region[0]) {
value = region[0];
} else if (value >= region[1]) {
value = region[1];
}
return value;
}
function isCalculableColor(color) {
return color instanceof Array || typeof color === 'string';
}
function _HSV_2_RGB(data) {
var H = data[0];
var S = data[1];
var V = data[2];
var R;
var G;
var B;
if (S === 0) {
R = V * 255;
G = V * 255;
B = V * 255;
} else {
var h = H * 6;
if (h === 6) {
h = 0;
}
var i = h | 0;
var v1 = V * (1 - S);
var v2 = V * (1 - S * (h - i));
var v3 = V * (1 - S * (1 - (h - i)));
var r = 0;
var g = 0;
var b = 0;
if (i === 0) {
r = V;
g = v3;
b = v1;
} else if (i === 1) {
r = v2;
g = V;
b = v1;
} else if (i === 2) {
r = v1;
g = V;
b = v3;
} else if (i === 3) {
r = v1;
g = v2;
b = V;
} else if (i === 4) {
r = v3;
g = v1;
b = V;
} else {
r = V;
g = v1;
b = v2;
}
R = r * 255;
G = g * 255;
B = b * 255;
}
return [
R,
G,
B
];
}
function _HSL_2_RGB(data) {
var H = data[0];
var S = data[1];
var L = data[2];
var R;
var G;
var B;
if (S === 0) {
R = L * 255;
G = L * 255;
B = L * 255;
} else {
var v2;
if (L < 0.5) {
v2 = L * (1 + S);
} else {
v2 = L + S - S * L;
}
var v1 = 2 * L - v2;
R = 255 * _HUE_2_RGB(v1, v2, H + 1 / 3);
G = 255 * _HUE_2_RGB(v1, v2, H);
B = 255 * _HUE_2_RGB(v1, v2, H - 1 / 3);
}
return [
R,
G,
B
];
}
function _HUE_2_RGB(v1, v2, vH) {
if (vH < 0) {
vH += 1;
}
if (vH > 1) {
vH -= 1;
}
if (6 * vH < 1) {
return v1 + (v2 - v1) * 6 * vH;
}
if (2 * vH < 1) {
return v2;
}
if (3 * vH < 2) {
return v1 + (v2 - v1) * (2 / 3 - vH) * 6;
}
return v1;
}
function _RGB_2_HSB(data) {
var R = data[0] / 255;
var G = data[1] / 255;
var B = data[2] / 255;
var vMin = Math.min(R, G, B);
var vMax = Math.max(R, G, B);
var delta = vMax - vMin;
var V = vMax;
var H;
var S;
if (delta === 0) {
H = 0;
S = 0;
} else {
S = delta / vMax;
var deltaR = ((vMax - R) / 6 + delta / 2) / delta;
var deltaG = ((vMax - G) / 6 + delta / 2) / delta;
var deltaB = ((vMax - B) / 6 + delta / 2) / delta;
if (R === vMax) {
H = deltaB - deltaG;
} else if (G === vMax) {
H = 1 / 3 + deltaR - deltaB;
} else if (B === vMax) {
H = 2 / 3 + deltaG - deltaR;
}
if (H < 0) {
H += 1;
}
if (H > 1) {
H -= 1;
}
}
H = H * 360;
S = S * 100;
V = V * 100;
return [
H,
S,
V
];
}
function _RGB_2_HSL(data) {
var R = data[0] / 255;
var G = data[1] / 255;
var B = data[2] / 255;
var vMin = Math.min(R, G, B);
var vMax = Math.max(R, G, B);
var delta = vMax - vMin;
var L = (vMax + vMin) / 2;
var H;
var S;
if (delta === 0) {
H = 0;
S = 0;
} else {
if (L < 0.5) {
S = delta / (vMax + vMin);
} else {
S = delta / (2 - vMax - vMin);
}
var deltaR = ((vMax - R) / 6 + delta / 2) / delta;
var deltaG = ((vMax - G) / 6 + delta / 2) / delta;
var deltaB = ((vMax - B) / 6 + delta / 2) / delta;
if (R === vMax) {
H = deltaB - deltaG;
} else if (G === vMax) {
H = 1 / 3 + deltaR - deltaB;
} else if (B === vMax) {
H = 2 / 3 + deltaG - deltaR;
}
if (H < 0) {
H += 1;
}
if (H > 1) {
H -= 1;
}
}
H = H * 360;
S = S * 100;
L = L * 100;
return [
H,
S,
L
];
}
return {
customPalette: customPalette,
resetPalette: resetPalette,
getColor: getColor,
getHighlightColor: getHighlightColor,
customHighlight: customHighlight,
resetHighlight: resetHighlight,
getRadialGradient: getRadialGradient,
getLinearGradient: getLinearGradient,
getGradientColors: getGradientColors,
getStepColors: getStepColors,
reverse: reverse,
mix: mix,
lift: lift,
trim: trim,
random: random,
toRGB: toRGB,
toRGBA: toRGBA,
toHex: toHex,
toHSL: toHSL,
toHSLA: toHSLA,
toHSB: toHSB,
toHSBA: toHSBA,
toHSV: toHSV,
toHSVA: toHSVA,
toName: toName,
toColor: toColor,
toArray: toArray,
alpha: alpha,
getData: getData
};
});define('echarts/component/timeline', [
'require',
'./base',
'zrender/shape/Rectangle',
'../util/shape/Icon',
'../util/shape/Chain',
'../config',
'zrender/tool/util',
'zrender/tool/area',
'zrender/tool/event',
'../component'
], function (require) {
var Base = require('./base');
var RectangleShape = require('zrender/shape/Rectangle');
var IconShape = require('../util/shape/Icon');
var ChainShape = require('../util/shape/Chain');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrArea = require('zrender/tool/area');
var zrEvent = require('zrender/tool/event');
function Timeline(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
var self = this;
self._onclick = function (param) {
return self.__onclick(param);
};
self._ondrift = function (dx, dy) {
return self.__ondrift(this, dx, dy);
};
self._ondragend = function () {
return self.__ondragend();
};
self._setCurrentOption = function () {
var timelineOption = self.timelineOption;
self.currentIndex %= timelineOption.data.length;
var curOption = self.options[self.currentIndex] || {};
self.myChart.setOption(curOption, timelineOption.notMerge);
self.messageCenter.dispatch(ecConfig.EVENT.TIMELINE_CHANGED, null, {
currentIndex: self.currentIndex,
data: timelineOption.data[self.currentIndex].name != null ? timelineOption.data[self.currentIndex].name : timelineOption.data[self.currentIndex]
}, self.myChart);
};
self._onFrame = function () {
self._setCurrentOption();
self._syncHandleShape();
if (self.timelineOption.autoPlay) {
self.playTicket = setTimeout(function () {
self.currentIndex += 1;
if (!self.timelineOption.loop && self.currentIndex >= self.timelineOption.data.length) {
self.currentIndex = self.timelineOption.data.length - 1;
self.stop();
return;
}
self._onFrame();
}, self.timelineOption.playInterval);
}
};
this.setTheme(false);
this.options = this.option.options;
this.currentIndex = this.timelineOption.currentIndex % this.timelineOption.data.length;
if (!this.timelineOption.notMerge && this.currentIndex !== 0) {
this.options[this.currentIndex] = zrUtil.merge(this.options[this.currentIndex], this.options[0]);
}
if (this.timelineOption.show) {
this._buildShape();
this._syncHandleShape();
}
this._setCurrentOption();
if (this.timelineOption.autoPlay) {
var self = this;
this.playTicket = setTimeout(function () {
self.play();
}, this.ecTheme.animationDuration);
}
}
Timeline.prototype = {
type: ecConfig.COMPONENT_TYPE_TIMELINE,
_buildShape: function () {
this._location = this._getLocation();
this._buildBackground();
this._buildControl();
this._chainPoint = this._getChainPoint();
if (this.timelineOption.label.show) {
var interval = this._getInterval();
for (var i = 0, len = this._chainPoint.length; i < len; i += interval) {
this._chainPoint[i].showLabel = true;
}
}
this._buildChain();
this._buildHandle();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_getLocation: function () {
var timelineOption = this.timelineOption;
var padding = this.reformCssArray(this.timelineOption.padding);
var zrWidth = this.zr.getWidth();
var x = this.parsePercent(timelineOption.x, zrWidth);
var x2 = this.parsePercent(timelineOption.x2, zrWidth);
var width;
if (timelineOption.width == null) {
width = zrWidth - x - x2;
x2 = zrWidth - x2;
} else {
width = this.parsePercent(timelineOption.width, zrWidth);
x2 = x + width;
}
var zrHeight = this.zr.getHeight();
var height = this.parsePercent(timelineOption.height, zrHeight);
var y;
var y2;
if (timelineOption.y != null) {
y = this.parsePercent(timelineOption.y, zrHeight);
y2 = y + height;
} else {
y2 = zrHeight - this.parsePercent(timelineOption.y2, zrHeight);
y = y2 - height;
}
return {
x: x + padding[3],
y: y + padding[0],
x2: x2 - padding[1],
y2: y2 - padding[2],
width: width - padding[1] - padding[3],
height: height - padding[0] - padding[2]
};
},
_getReformedLabel: function (idx) {
var timelineOption = this.timelineOption;
var data = timelineOption.data[idx].name != null ? timelineOption.data[idx].name : timelineOption.data[idx];
var formatter = timelineOption.data[idx].formatter || timelineOption.label.formatter;
if (formatter) {
if (typeof formatter === 'function') {
data = formatter.call(this.myChart, data);
} else if (typeof formatter === 'string') {
data = formatter.replace('{value}', data);
}
}
return data;
},
_getInterval: function () {
var chainPoint = this._chainPoint;
var timelineOption = this.timelineOption;
var interval = timelineOption.label.interval;
if (interval === 'auto') {
var fontSize = timelineOption.label.textStyle.fontSize;
var data = timelineOption.data;
var dataLength = timelineOption.data.length;
if (dataLength > 3) {
var isEnough = false;
var labelSpace;
var labelSize;
interval = 0;
while (!isEnough && interval < dataLength) {
interval++;
isEnough = true;
for (var i = interval; i < dataLength; i += interval) {
labelSpace = chainPoint[i].x - chainPoint[i - interval].x;
if (timelineOption.label.rotate !== 0) {
labelSize = fontSize;
} else if (data[i].textStyle) {
labelSize = zrArea.getTextWidth(chainPoint[i].name, chainPoint[i].textFont);
} else {
var label = chainPoint[i].name + '';
var wLen = (label.match(/\w/g) || '').length;
var oLen = label.length - wLen;
labelSize = wLen * fontSize * 2 / 3 + oLen * fontSize;
}
if (labelSpace < labelSize) {
isEnough = false;
break;
}
}
}
} else {
interval = 1;
}
} else {
interval = interval - 0 + 1;
}
return interval;
},
_getChainPoint: function () {
var timelineOption = this.timelineOption;
var symbol = timelineOption.symbol.toLowerCase();
var symbolSize = timelineOption.symbolSize;
var rotate = timelineOption.label.rotate;
var textStyle = timelineOption.label.textStyle;
var textFont = this.getFont(textStyle);
var dataTextStyle;
var data = timelineOption.data;
var x = this._location.x;
var y = this._location.y + this._location.height / 4 * 3;
var width = this._location.x2 - this._location.x;
var len = data.length;
function _getName(i) {
return data[i].name != null ? data[i].name : data[i] + '';
}
var xList = [];
if (len > 1) {
var boundaryGap = width / len;
boundaryGap = boundaryGap > 50 ? 50 : boundaryGap < 20 ? 5 : boundaryGap;
width -= boundaryGap * 2;
if (timelineOption.type === 'number') {
for (var i = 0; i < len; i++) {
xList.push(x + boundaryGap + width / (len - 1) * i);
}
} else {
xList[0] = new Date(_getName(0).replace(/-/g, '/'));
xList[len - 1] = new Date(_getName(len - 1).replace(/-/g, '/')) - xList[0];
for (var i = 1; i < len; i++) {
xList[i] = x + boundaryGap + width * (new Date(_getName(i).replace(/-/g, '/')) - xList[0]) / xList[len - 1];
}
xList[0] = x + boundaryGap;
}
} else {
xList.push(x + width / 2);
}
var list = [];
var curSymbol;
var n;
var isEmpty;
var textAlign;
var rotation;
for (var i = 0; i < len; i++) {
x = xList[i];
curSymbol = data[i].symbol && data[i].symbol.toLowerCase() || symbol;
if (curSymbol.match('empty')) {
curSymbol = curSymbol.replace('empty', '');
isEmpty = true;
} else {
isEmpty = false;
}
if (curSymbol.match('star')) {
n = curSymbol.replace('star', '') - 0 || 5;
curSymbol = 'star';
}
dataTextStyle = data[i].textStyle ? zrUtil.merge(data[i].textStyle || {}, textStyle) : textStyle;
textAlign = dataTextStyle.align || 'center';
if (rotate) {
textAlign = rotate > 0 ? 'right' : 'left';
rotation = [
rotate * Math.PI / 180,
x,
y - 5
];
} else {
rotation = false;
}
list.push({
x: x,
n: n,
isEmpty: isEmpty,
symbol: curSymbol,
symbolSize: data[i].symbolSize || symbolSize,
color: data[i].color,
borderColor: data[i].borderColor,
borderWidth: data[i].borderWidth,
name: this._getReformedLabel(i),
textColor: dataTextStyle.color,
textAlign: textAlign,
textBaseline: dataTextStyle.baseline || 'middle',
textX: x,
textY: y - (rotate ? 5 : 0),
textFont: data[i].textStyle ? this.getFont(dataTextStyle) : textFont,
rotation: rotation,
showLabel: false
});
}
return list;
},
_buildBackground: function () {
var timelineOption = this.timelineOption;
var padding = this.reformCssArray(this.timelineOption.padding);
var width = this._location.width;
var height = this._location.height;
if (timelineOption.borderWidth !== 0 || timelineOption.backgroundColor.replace(/\s/g, '') != 'rgba(0,0,0,0)') {
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._location.x - padding[3],
y: this._location.y - padding[0],
width: width + padding[1] + padding[3],
height: height + padding[0] + padding[2],
brushType: timelineOption.borderWidth === 0 ? 'fill' : 'both',
color: timelineOption.backgroundColor,
strokeColor: timelineOption.borderColor,
lineWidth: timelineOption.borderWidth
}
}));
}
},
_buildControl: function () {
var self = this;
var timelineOption = this.timelineOption;
var lineStyle = timelineOption.lineStyle;
var controlStyle = timelineOption.controlStyle;
if (timelineOption.controlPosition === 'none') {
return;
}
var iconSize = 15;
var iconGap = 5;
var x;
if (timelineOption.controlPosition === 'left') {
x = this._location.x;
this._location.x += (iconSize + iconGap) * 3;
} else {
x = this._location.x2 - ((iconSize + iconGap) * 3 - iconGap);
this._location.x2 -= (iconSize + iconGap) * 3;
}
var y = this._location.y;
var iconStyle = {
zlevel: this._zlevelBase + 1,
style: {
iconType: 'timelineControl',
symbol: 'last',
x: x,
y: y,
width: iconSize,
height: iconSize,
brushType: 'stroke',
color: controlStyle.normal.color,
strokeColor: controlStyle.normal.color,
lineWidth: lineStyle.width
},
highlightStyle: {
color: controlStyle.emphasis.color,
strokeColor: controlStyle.emphasis.color,
lineWidth: lineStyle.width + 1
},
clickable: true
};
this._ctrLastShape = new IconShape(iconStyle);
this._ctrLastShape.onclick = function () {
self.last();
};
this.shapeList.push(this._ctrLastShape);
x += iconSize + iconGap;
this._ctrPlayShape = new IconShape(zrUtil.clone(iconStyle));
this._ctrPlayShape.style.brushType = 'fill';
this._ctrPlayShape.style.symbol = 'play';
this._ctrPlayShape.style.status = this.timelineOption.autoPlay ? 'playing' : 'stop';
this._ctrPlayShape.style.x = x;
this._ctrPlayShape.onclick = function () {
if (self._ctrPlayShape.style.status === 'stop') {
self.play();
} else {
self.stop();
}
};
this.shapeList.push(this._ctrPlayShape);
x += iconSize + iconGap;
this._ctrNextShape = new IconShape(zrUtil.clone(iconStyle));
this._ctrNextShape.style.symbol = 'next';
this._ctrNextShape.style.x = x;
this._ctrNextShape.onclick = function () {
self.next();
};
this.shapeList.push(this._ctrNextShape);
},
_buildChain: function () {
var timelineOption = this.timelineOption;
var lineStyle = timelineOption.lineStyle;
this._timelineShae = {
zlevel: this._zlevelBase,
style: {
x: this._location.x,
y: this.subPixelOptimize(this._location.y, lineStyle.width),
width: this._location.x2 - this._location.x,
height: this._location.height,
chainPoint: this._chainPoint,
brushType: 'both',
strokeColor: lineStyle.color,
lineWidth: lineStyle.width,
lineType: lineStyle.type
},
hoverable: false,
clickable: true,
onclick: this._onclick
};
this._timelineShae = new ChainShape(this._timelineShae);
this.shapeList.push(this._timelineShae);
},
_buildHandle: function () {
var curPoint = this._chainPoint[this.currentIndex];
var symbolSize = curPoint.symbolSize + 1;
symbolSize = symbolSize < 5 ? 5 : symbolSize;
this._handleShape = {
zlevel: this._zlevelBase + 1,
hoverable: false,
draggable: true,
style: {
iconType: 'diamond',
n: curPoint.n,
x: curPoint.x - symbolSize,
y: this._location.y + this._location.height / 4 - symbolSize,
width: symbolSize * 2,
height: symbolSize * 2,
brushType: 'both',
textPosition: 'specific',
textX: curPoint.x,
textY: this._location.y - this._location.height / 4,
textAlign: 'center',
textBaseline: 'middle'
},
highlightStyle: {},
ondrift: this._ondrift,
ondragend: this._ondragend
};
this._handleShape = new IconShape(this._handleShape);
this.shapeList.push(this._handleShape);
},
_syncHandleShape: function () {
if (!this.timelineOption.show) {
return;
}
var timelineOption = this.timelineOption;
var cpStyle = timelineOption.checkpointStyle;
var curPoint = this._chainPoint[this.currentIndex];
this._handleShape.style.text = cpStyle.label.show ? curPoint.name : '';
this._handleShape.style.textFont = curPoint.textFont;
this._handleShape.style.n = curPoint.n;
if (cpStyle.symbol === 'auto') {
this._handleShape.style.iconType = curPoint.symbol != 'none' ? curPoint.symbol : 'diamond';
} else {
this._handleShape.style.iconType = cpStyle.symbol;
if (cpStyle.symbol.match('star')) {
this._handleShape.style.n = cpStyle.symbol.replace('star', '') - 0 || 5;
this._handleShape.style.iconType = 'star';
}
}
var symbolSize;
if (cpStyle.symbolSize === 'auto') {
symbolSize = curPoint.symbolSize + 2;
symbolSize = symbolSize < 5 ? 5 : symbolSize;
} else {
symbolSize = cpStyle.symbolSize - 0;
}
this._handleShape.style.color = cpStyle.color === 'auto' ? curPoint.color ? curPoint.color : timelineOption.controlStyle.emphasis.color : cpStyle.color;
this._handleShape.style.textColor = cpStyle.label.textStyle.color === 'auto' ? this._handleShape.style.color : cpStyle.label.textStyle.color;
this._handleShape.highlightStyle.strokeColor = this._handleShape.style.strokeColor = cpStyle.borderColor === 'auto' ? curPoint.borderColor ? curPoint.borderColor : '#fff' : cpStyle.borderColor;
this._handleShape.style.lineWidth = cpStyle.borderWidth === 'auto' ? curPoint.borderWidth ? curPoint.borderWidth : 0 : cpStyle.borderWidth - 0;
this._handleShape.highlightStyle.lineWidth = this._handleShape.style.lineWidth + 1;
this.zr.animate(this._handleShape.id, 'style').when(500, {
x: curPoint.x - symbolSize,
textX: curPoint.x,
y: this._location.y + this._location.height / 4 - symbolSize,
width: symbolSize * 2,
height: symbolSize * 2
}).start('ExponentialOut');
},
_findChainIndex: function (x) {
var chainPoint = this._chainPoint;
var len = chainPoint.length;
if (x <= chainPoint[0].x) {
return 0;
} else if (x >= chainPoint[len - 1].x) {
return len - 1;
}
for (var i = 0; i < len - 1; i++) {
if (x >= chainPoint[i].x && x <= chainPoint[i + 1].x) {
return Math.abs(x - chainPoint[i].x) < Math.abs(x - chainPoint[i + 1].x) ? i : i + 1;
}
}
},
__onclick: function (param) {
var x = zrEvent.getX(param.event);
var newIndex = this._findChainIndex(x);
if (newIndex === this.currentIndex) {
return true;
}
this.currentIndex = newIndex;
this.timelineOption.autoPlay && this.stop();
clearTimeout(this.playTicket);
this._onFrame();
},
__ondrift: function (shape, dx) {
this.timelineOption.autoPlay && this.stop();
var chainPoint = this._chainPoint;
var len = chainPoint.length;
var newIndex;
if (shape.style.x + dx <= chainPoint[0].x - chainPoint[0].symbolSize) {
shape.style.x = chainPoint[0].x - chainPoint[0].symbolSize;
newIndex = 0;
} else if (shape.style.x + dx >= chainPoint[len - 1].x - chainPoint[len - 1].symbolSize) {
shape.style.x = chainPoint[len - 1].x - chainPoint[len - 1].symbolSize;
newIndex = len - 1;
} else {
shape.style.x += dx;
newIndex = this._findChainIndex(shape.style.x);
}
var curPoint = chainPoint[newIndex];
var symbolSize = curPoint.symbolSize + 2;
shape.style.iconType = curPoint.symbol;
shape.style.n = curPoint.n;
shape.style.textX = shape.style.x + symbolSize / 2;
shape.style.y = this._location.y + this._location.height / 4 - symbolSize;
shape.style.width = symbolSize * 2;
shape.style.height = symbolSize * 2;
shape.style.text = curPoint.name;
if (newIndex === this.currentIndex) {
return true;
}
this.currentIndex = newIndex;
if (this.timelineOption.realtime) {
clearTimeout(this.playTicket);
var self = this;
this.playTicket = setTimeout(function () {
self._setCurrentOption();
}, 200);
}
return true;
},
__ondragend: function () {
this.isDragend = true;
},
ondragend: function (param, status) {
if (!this.isDragend || !param.target) {
return;
}
!this.timelineOption.realtime && this._setCurrentOption();
status.dragOut = true;
status.dragIn = true;
status.needRefresh = false;
this.isDragend = false;
this._syncHandleShape();
return;
},
last: function () {
this.timelineOption.autoPlay && this.stop();
this.currentIndex -= 1;
if (this.currentIndex < 0) {
this.currentIndex = this.timelineOption.data.length - 1;
}
this._onFrame();
return this.currentIndex;
},
next: function () {
this.timelineOption.autoPlay && this.stop();
this.currentIndex += 1;
if (this.currentIndex >= this.timelineOption.data.length) {
this.currentIndex = 0;
}
this._onFrame();
return this.currentIndex;
},
play: function (targetIndex, autoPlay) {
if (this._ctrPlayShape && this._ctrPlayShape.style.status != 'playing') {
this._ctrPlayShape.style.status = 'playing';
this.zr.modShape(this._ctrPlayShape.id);
this.zr.refresh();
}
this.timelineOption.autoPlay = autoPlay != null ? autoPlay : true;
if (!this.timelineOption.autoPlay) {
clearTimeout(this.playTicket);
}
this.currentIndex = targetIndex != null ? targetIndex : this.currentIndex + 1;
if (this.currentIndex >= this.timelineOption.data.length) {
this.currentIndex = 0;
}
this._onFrame();
return this.currentIndex;
},
stop: function () {
if (this._ctrPlayShape && this._ctrPlayShape.style.status != 'stop') {
this._ctrPlayShape.style.status = 'stop';
this.zr.modShape(this._ctrPlayShape.id);
this.zr.refresh();
}
this.timelineOption.autoPlay = false;
clearTimeout(this.playTicket);
return this.currentIndex;
},
resize: function () {
if (this.timelineOption.show) {
this.clear();
this._buildShape();
this._syncHandleShape();
}
},
setTheme: function (needRefresh) {
this.timelineOption = this.reformOption(zrUtil.clone(this.option.timeline));
this.timelineOption.label.textStyle = zrUtil.merge(this.timelineOption.label.textStyle || {}, this.ecTheme.textStyle);
this.timelineOption.checkpointStyle.label.textStyle = zrUtil.merge(this.timelineOption.checkpointStyle.label.textStyle || {}, this.ecTheme.textStyle);
if (!this.myChart.canvasSupported) {
this.timelineOption.realtime = false;
}
if (this.timelineOption.show && needRefresh) {
this.clear();
this._buildShape();
this._syncHandleShape();
}
},
onbeforDispose: function () {
clearTimeout(this.playTicket);
}
};
function timelineControl(ctx, style) {
var lineWidth = 2;
var x = style.x + lineWidth;
var y = style.y + lineWidth + 2;
var width = style.width - lineWidth;
var height = style.height - lineWidth;
var symbol = style.symbol;
if (symbol === 'last') {
ctx.moveTo(x + width - 2, y + height / 3);
ctx.lineTo(x + width - 2, y);
ctx.lineTo(x + 2, y + height / 2);
ctx.lineTo(x + width - 2, y + height);
ctx.lineTo(x + width - 2, y + height / 3 * 2);
ctx.moveTo(x, y);
ctx.lineTo(x, y);
} else if (symbol === 'next') {
ctx.moveTo(x + 2, y + height / 3);
ctx.lineTo(x + 2, y);
ctx.lineTo(x + width - 2, y + height / 2);
ctx.lineTo(x + 2, y + height);
ctx.lineTo(x + 2, y + height / 3 * 2);
ctx.moveTo(x, y);
ctx.lineTo(x, y);
} else if (symbol === 'play') {
if (style.status === 'stop') {
ctx.moveTo(x + 2, y);
ctx.lineTo(x + width - 2, y + height / 2);
ctx.lineTo(x + 2, y + height);
ctx.lineTo(x + 2, y);
} else {
var delta = style.brushType === 'both' ? 2 : 3;
ctx.rect(x + 2, y, delta, height);
ctx.rect(x + width - delta - 2, y, delta, height);
}
} else if (symbol.match('image')) {
var imageLocation = '';
imageLocation = symbol.replace(new RegExp('^image:\\/\\/'), '');
symbol = IconShape.prototype.iconLibrary.image;
symbol(ctx, {
x: x,
y: y,
width: width,
height: height,
image: imageLocation
});
}
}
IconShape.prototype.iconLibrary['timelineControl'] = timelineControl;
zrUtil.inherits(Timeline, Base);
require('../component').define('timeline', Timeline);
return Timeline;
});define('zrender/shape/Image', [
'require',
'./Base',
'../tool/util'
], function (require) {
var Base = require('./Base');
var ZImage = function (options) {
Base.call(this, options);
};
ZImage.prototype = {
type: 'image',
brush: function (ctx, isHighlight, refreshNextFrame) {
var style = this.style || {};
if (isHighlight) {
style = this.getHighlightStyle(style, this.highlightStyle || {});
}
var image = style.image;
var self = this;
if (!this._imageCache) {
this._imageCache = {};
}
if (typeof image === 'string') {
var src = image;
if (this._imageCache[src]) {
image = this._imageCache[src];
} else {
image = new Image();
image.onload = function () {
image.onload = null;
self.modSelf();
refreshNextFrame();
};
image.src = src;
this._imageCache[src] = image;
}
}
if (image) {
if (image.nodeName.toUpperCase() == 'IMG') {
if (window.ActiveXObject) {
if (image.readyState != 'complete') {
return;
}
} else {
if (!image.complete) {
return;
}
}
}
var width = style.width || image.width;
var height = style.height || image.height;
var x = style.x;
var y = style.y;
if (!image.width || !image.height) {
return;
}
ctx.save();
this.doClip(ctx);
this.setContext(ctx, style);
this.setTransform(ctx);
if (style.sWidth && style.sHeight) {
var sx = style.sx || 0;
var sy = style.sy || 0;
ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);
} else if (style.sx && style.sy) {
var sx = style.sx;
var sy = style.sy;
var sWidth = width - sx;
var sHeight = height - sy;
ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);
} else {
ctx.drawImage(image, x, y, width, height);
}
if (!style.width) {
style.width = width;
}
if (!style.height) {
style.height = height;
}
if (!this.style.width) {
this.style.width = width;
}
if (!this.style.height) {
this.style.height = height;
}
this.drawText(ctx, style, this.style);
ctx.restore();
}
},
getRect: function (style) {
return {
x: style.x,
y: style.y,
width: style.width,
height: style.height
};
},
clearCache: function () {
this._imageCache = {};
}
};
require('../tool/util').inherits(ZImage, Base);
return ZImage;
});define('zrender/loadingEffect/Bar', [
'require',
'./Base',
'../tool/util',
'../tool/color',
'../shape/Rectangle'
], function (require) {
var Base = require('./Base');
var util = require('../tool/util');
var zrColor = require('../tool/color');
var RectangleShape = require('../shape/Rectangle');
function Bar(options) {
Base.call(this, options);
}
util.inherits(Bar, Base);
Bar.prototype._start = function (addShapeHandle, refreshHandle) {
var options = util.merge(this.options, {
textStyle: { color: '#888' },
backgroundColor: 'rgba(250, 250, 250, 0.8)',
effectOption: {
x: 0,
y: this.canvasHeight / 2 - 30,
width: this.canvasWidth,
height: 5,
brushType: 'fill',
timeInterval: 100
}
});
var textShape = this.createTextShape(options.textStyle);
var background = this.createBackgroundShape(options.backgroundColor);
var effectOption = options.effectOption;
var barShape = new RectangleShape({ highlightStyle: util.clone(effectOption) });
barShape.highlightStyle.color = effectOption.color || zrColor.getLinearGradient(effectOption.x, effectOption.y, effectOption.x + effectOption.width, effectOption.y + effectOption.height, [
[
0,
'#ff6400'
],
[
0.5,
'#ffe100'
],
[
1,
'#b1ff00'
]
]);
if (options.progress != null) {
addShapeHandle(background);
barShape.highlightStyle.width = this.adjust(options.progress, [
0,
1
]) * options.effectOption.width;
addShapeHandle(barShape);
addShapeHandle(textShape);
refreshHandle();
return;
} else {
barShape.highlightStyle.width = 0;
return setInterval(function () {
addShapeHandle(background);
if (barShape.highlightStyle.width < effectOption.width) {
barShape.highlightStyle.width += 8;
} else {
barShape.highlightStyle.width = 0;
}
addShapeHandle(barShape);
addShapeHandle(textShape);
refreshHandle();
}, effectOption.timeInterval);
}
};
return Bar;
});define('zrender/loadingEffect/Bubble', [
'require',
'./Base',
'../tool/util',
'../tool/color',
'../shape/Circle'
], function (require) {
var Base = require('./Base');
var util = require('../tool/util');
var zrColor = require('../tool/color');
var CircleShape = require('../shape/Circle');
function Bubble(options) {
Base.call(this, options);
}
util.inherits(Bubble, Base);
Bubble.prototype._start = function (addShapeHandle, refreshHandle) {
var options = util.merge(this.options, {
textStyle: { color: '#888' },
backgroundColor: 'rgba(250, 250, 250, 0.8)',
effect: {
n: 50,
lineWidth: 2,
brushType: 'stroke',
color: 'random',
timeInterval: 100
}
});
var textShape = this.createTextShape(options.textStyle);
var background = this.createBackgroundShape(options.backgroundColor);
var effectOption = options.effect;
var n = effectOption.n;
var brushType = effectOption.brushType;
var lineWidth = effectOption.lineWidth;
var shapeList = [];
var canvasWidth = this.canvasWidth;
var canvasHeight = this.canvasHeight;
for (var i = 0; i < n; i++) {
var color = effectOption.color == 'random' ? zrColor.alpha(zrColor.random(), 0.3) : effectOption.color;
shapeList[i] = new CircleShape({
highlightStyle: {
x: Math.ceil(Math.random() * canvasWidth),
y: Math.ceil(Math.random() * canvasHeight),
r: Math.ceil(Math.random() * 40),
brushType: brushType,
color: color,
strokeColor: color,
lineWidth: lineWidth
},
animationY: Math.ceil(Math.random() * 20)
});
}
return setInterval(function () {
addShapeHandle(background);
for (var i = 0; i < n; i++) {
var style = shapeList[i].highlightStyle;
if (style.y - shapeList[i].animationY + style.r <= 0) {
shapeList[i].highlightStyle.y = canvasHeight + style.r;
shapeList[i].highlightStyle.x = Math.ceil(Math.random() * canvasWidth);
}
shapeList[i].highlightStyle.y -= shapeList[i].animationY;
addShapeHandle(shapeList[i]);
}
addShapeHandle(textShape);
refreshHandle();
}, effectOption.timeInterval);
};
return Bubble;
});define('zrender/loadingEffect/DynamicLine', [
'require',
'./Base',
'../tool/util',
'../tool/color',
'../shape/Line'
], function (require) {
var Base = require('./Base');
var util = require('../tool/util');
var zrColor = require('../tool/color');
var LineShape = require('../shape/Line');
function DynamicLine(options) {
Base.call(this, options);
}
util.inherits(DynamicLine, Base);
DynamicLine.prototype._start = function (addShapeHandle, refreshHandle) {
var options = util.merge(this.options, {
textStyle: { color: '#fff' },
backgroundColor: 'rgba(0, 0, 0, 0.8)',
effectOption: {
n: 30,
lineWidth: 1,
color: 'random',
timeInterval: 100
}
});
var textShape = this.createTextShape(options.textStyle);
var background = this.createBackgroundShape(options.backgroundColor);
var effectOption = options.effectOption;
var n = effectOption.n;
var lineWidth = effectOption.lineWidth;
var shapeList = [];
var canvasWidth = this.canvasWidth;
var canvasHeight = this.canvasHeight;
for (var i = 0; i < n; i++) {
var xStart = -Math.ceil(Math.random() * 1000);
var len = Math.ceil(Math.random() * 400);
var pos = Math.ceil(Math.random() * canvasHeight);
var color = effectOption.color == 'random' ? zrColor.random() : effectOption.color;
shapeList[i] = new LineShape({
highlightStyle: {
xStart: xStart,
yStart: pos,
xEnd: xStart + len,
yEnd: pos,
strokeColor: color,
lineWidth: lineWidth
},
animationX: Math.ceil(Math.random() * 100),
len: len
});
}
return setInterval(function () {
addShapeHandle(background);
for (var i = 0; i < n; i++) {
var style = shapeList[i].highlightStyle;
if (style.xStart >= canvasWidth) {
shapeList[i].len = Math.ceil(Math.random() * 400);
style.xStart = -400;
style.xEnd = -400 + shapeList[i].len;
style.yStart = Math.ceil(Math.random() * canvasHeight);
style.yEnd = style.yStart;
}
style.xStart += shapeList[i].animationX;
style.xEnd += shapeList[i].animationX;
addShapeHandle(shapeList[i]);
}
addShapeHandle(textShape);
refreshHandle();
}, effectOption.timeInterval);
};
return DynamicLine;
});define('zrender/loadingEffect/Ring', [
'require',
'./Base',
'../tool/util',
'../tool/color',
'../shape/Ring',
'../shape/Sector'
], function (require) {
var Base = require('./Base');
var util = require('../tool/util');
var zrColor = require('../tool/color');
var RingShape = require('../shape/Ring');
var SectorShape = require('../shape/Sector');
function Ring(options) {
Base.call(this, options);
}
util.inherits(Ring, Base);
Ring.prototype._start = function (addShapeHandle, refreshHandle) {
var options = util.merge(this.options, {
textStyle: { color: '#07a' },
backgroundColor: 'rgba(250, 250, 250, 0.8)',
effect: {
x: this.canvasWidth / 2,
y: this.canvasHeight / 2,
r0: 60,
r: 100,
color: '#bbdcff',
brushType: 'fill',
textPosition: 'inside',
textFont: 'normal 30px verdana',
textColor: 'rgba(30, 144, 255, 0.6)',
timeInterval: 100
}
});
var effectOption = options.effect;
var textStyle = options.textStyle;
if (textStyle.x == null) {
textStyle.x = effectOption.x;
}
if (textStyle.y == null) {
textStyle.y = effectOption.y + (effectOption.r0 + effectOption.r) / 2 - 5;
}
var textShape = this.createTextShape(options.textStyle);
var background = this.createBackgroundShape(options.backgroundColor);
var x = effectOption.x;
var y = effectOption.y;
var r0 = effectOption.r0 + 6;
var r = effectOption.r - 6;
var color = effectOption.color;
var darkColor = zrColor.lift(color, 0.1);
var shapeRing = new RingShape({ highlightStyle: util.clone(effectOption) });
var shapeList = [];
var clolrList = zrColor.getGradientColors([
'#ff6400',
'#ffe100',
'#97ff00'
], 25);
var preAngle = 15;
var endAngle = 240;
for (var i = 0; i < 16; i++) {
shapeList.push(new SectorShape({
highlightStyle: {
x: x,
y: y,
r0: r0,
r: r,
startAngle: endAngle - preAngle,
endAngle: endAngle,
brushType: 'fill',
color: darkColor
},
_color: zrColor.getLinearGradient(x + r0 * Math.cos(endAngle, true), y - r0 * Math.sin(endAngle, true), x + r0 * Math.cos(endAngle - preAngle, true), y - r0 * Math.sin(endAngle - preAngle, true), [
[
0,
clolrList[i * 2]
],
[
1,
clolrList[i * 2 + 1]
]
])
}));
endAngle -= preAngle;
}
endAngle = 360;
for (var i = 0; i < 4; i++) {
shapeList.push(new SectorShape({
highlightStyle: {
x: x,
y: y,
r0: r0,
r: r,
startAngle: endAngle - preAngle,
endAngle: endAngle,
brushType: 'fill',
color: darkColor
},
_color: zrColor.getLinearGradient(x + r0 * Math.cos(endAngle, true), y - r0 * Math.sin(endAngle, true), x + r0 * Math.cos(endAngle - preAngle, true), y - r0 * Math.sin(endAngle - preAngle, true), [
[
0,
clolrList[i * 2 + 32]
],
[
1,
clolrList[i * 2 + 33]
]
])
}));
endAngle -= preAngle;
}
var n = 0;
if (options.progress != null) {
addShapeHandle(background);
n = this.adjust(options.progress, [
0,
1
]).toFixed(2) * 100 / 5;
shapeRing.highlightStyle.text = n * 5 + '%';
addShapeHandle(shapeRing);
for (var i = 0; i < 20; i++) {
shapeList[i].highlightStyle.color = i < n ? shapeList[i]._color : darkColor;
addShapeHandle(shapeList[i]);
}
addShapeHandle(textShape);
refreshHandle();
return;
}
return setInterval(function () {
addShapeHandle(background);
n += n >= 20 ? -20 : 1;
addShapeHandle(shapeRing);
for (var i = 0; i < 20; i++) {
shapeList[i].highlightStyle.color = i < n ? shapeList[i]._color : darkColor;
addShapeHandle(shapeList[i]);
}
addShapeHandle(textShape);
refreshHandle();
}, effectOption.timeInterval);
};
return Ring;
});define('zrender/loadingEffect/Spin', [
'require',
'./Base',
'../tool/util',
'../tool/color',
'../tool/area',
'../shape/Sector'
], function (require) {
var Base = require('./Base');
var util = require('../tool/util');
var zrColor = require('../tool/color');
var zrArea = require('../tool/area');
var SectorShape = require('../shape/Sector');
function Spin(options) {
Base.call(this, options);
}
util.inherits(Spin, Base);
Spin.prototype._start = function (addShapeHandle, refreshHandle) {
var options = util.merge(this.options, {
textStyle: {
color: '#fff',
textAlign: 'start'
},
backgroundColor: 'rgba(0, 0, 0, 0.8)'
});
var textShape = this.createTextShape(options.textStyle);
var textGap = 10;
var textWidth = zrArea.getTextWidth(textShape.highlightStyle.text, textShape.highlightStyle.textFont);
var textHeight = zrArea.getTextHeight(textShape.highlightStyle.text, textShape.highlightStyle.textFont);
var effectOption = util.merge(this.options.effect || {}, {
r0: 9,
r: 15,
n: 18,
color: '#fff',
timeInterval: 100
});
var location = this.getLocation(this.options.textStyle, textWidth + textGap + effectOption.r * 2, Math.max(effectOption.r * 2, textHeight));
effectOption.x = location.x + effectOption.r;
effectOption.y = textShape.highlightStyle.y = location.y + location.height / 2;
textShape.highlightStyle.x = effectOption.x + effectOption.r + textGap;
var background = this.createBackgroundShape(options.backgroundColor);
var n = effectOption.n;
var x = effectOption.x;
var y = effectOption.y;
var r0 = effectOption.r0;
var r = effectOption.r;
var color = effectOption.color;
var shapeList = [];
var preAngle = Math.round(180 / n);
for (var i = 0; i < n; i++) {
shapeList[i] = new SectorShape({
highlightStyle: {
x: x,
y: y,
r0: r0,
r: r,
startAngle: preAngle * i * 2,
endAngle: preAngle * i * 2 + preAngle,
color: zrColor.alpha(color, (i + 1) / n),
brushType: 'fill'
}
});
}
var pos = [
0,
x,
y
];
return setInterval(function () {
addShapeHandle(background);
pos[0] -= 0.3;
for (var i = 0; i < n; i++) {
shapeList[i].rotation = pos;
addShapeHandle(shapeList[i]);
}
addShapeHandle(textShape);
refreshHandle();
}, effectOption.timeInterval);
};
return Spin;
});define('zrender/loadingEffect/Whirling', [
'require',
'./Base',
'../tool/util',
'../tool/area',
'../shape/Ring',
'../shape/Droplet',
'../shape/Circle'
], function (require) {
var Base = require('./Base');
var util = require('../tool/util');
var zrArea = require('../tool/area');
var RingShape = require('../shape/Ring');
var DropletShape = require('../shape/Droplet');
var CircleShape = require('../shape/Circle');
function Whirling(options) {
Base.call(this, options);
}
util.inherits(Whirling, Base);
Whirling.prototype._start = function (addShapeHandle, refreshHandle) {
var options = util.merge(this.options, {
textStyle: {
color: '#888',
textAlign: 'start'
},
backgroundColor: 'rgba(250, 250, 250, 0.8)'
});
var textShape = this.createTextShape(options.textStyle);
var textGap = 10;
var textWidth = zrArea.getTextWidth(textShape.highlightStyle.text, textShape.highlightStyle.textFont);
var textHeight = zrArea.getTextHeight(textShape.highlightStyle.text, textShape.highlightStyle.textFont);
var effectOption = util.merge(this.options.effect || {}, {
r: 18,
colorIn: '#fff',
colorOut: '#555',
colorWhirl: '#6cf',
timeInterval: 50
});
var location = this.getLocation(this.options.textStyle, textWidth + textGap + effectOption.r * 2, Math.max(effectOption.r * 2, textHeight));
effectOption.x = location.x + effectOption.r;
effectOption.y = textShape.highlightStyle.y = location.y + location.height / 2;
textShape.highlightStyle.x = effectOption.x + effectOption.r + textGap;
var background = this.createBackgroundShape(options.backgroundColor);
var droplet = new DropletShape({
highlightStyle: {
a: Math.round(effectOption.r / 2),
b: Math.round(effectOption.r - effectOption.r / 6),
brushType: 'fill',
color: effectOption.colorWhirl
}
});
var circleIn = new CircleShape({
highlightStyle: {
r: Math.round(effectOption.r / 6),
brushType: 'fill',
color: effectOption.colorIn
}
});
var circleOut = new RingShape({
highlightStyle: {
r0: Math.round(effectOption.r - effectOption.r / 3),
r: effectOption.r,
brushType: 'fill',
color: effectOption.colorOut
}
});
var pos = [
0,
effectOption.x,
effectOption.y
];
droplet.highlightStyle.x = circleIn.highlightStyle.x = circleOut.highlightStyle.x = pos[1];
droplet.highlightStyle.y = circleIn.highlightStyle.y = circleOut.highlightStyle.y = pos[2];
return setInterval(function () {
addShapeHandle(background);
addShapeHandle(circleOut);
pos[0] -= 0.3;
droplet.rotation = pos;
addShapeHandle(droplet);
addShapeHandle(circleIn);
addShapeHandle(textShape);
refreshHandle();
}, effectOption.timeInterval);
};
return Whirling;
});define('echarts/theme/default', [], function () {
var config = {};
return config;
});define('zrender/dep/excanvas', ['require'], function (require) {
if (!document.createElement('canvas').getContext) {
(function () {
var m = Math;
var mr = m.round;
var ms = m.sin;
var mc = m.cos;
var abs = m.abs;
var sqrt = m.sqrt;
var Z = 10;
var Z2 = Z / 2;
var IE_VERSION = +navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];
function getContext() {
return this.context_ || (this.context_ = new CanvasRenderingContext2D_(this));
}
var slice = Array.prototype.slice;
function bind(f, obj, var_args) {
var a = slice.call(arguments, 2);
return function () {
return f.apply(obj, a.concat(slice.call(arguments)));
};
}
function encodeHtmlAttribute(s) {
return String(s).replace(/&/g, '&amp;').replace(/"/g, '&quot;');
}
function addNamespace(doc, prefix, urn) {
if (!doc.namespaces[prefix]) {
doc.namespaces.add(prefix, urn, '#default#VML');
}
}
function addNamespacesAndStylesheet(doc) {
addNamespace(doc, 'g_vml_', 'urn:schemas-microsoft-com:vml');
addNamespace(doc, 'g_o_', 'urn:schemas-microsoft-com:office:office');
if (!doc.styleSheets['ex_canvas_']) {
var ss = doc.createStyleSheet();
ss.owningElement.id = 'ex_canvas_';
ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + 'text-align:left;width:300px;height:150px}';
}
}
addNamespacesAndStylesheet(document);
var G_vmlCanvasManager_ = {
init: function (opt_doc) {
var doc = opt_doc || document;
doc.createElement('canvas');
doc.attachEvent('onreadystatechange', bind(this.init_, this, doc));
},
init_: function (doc) {
var els = doc.getElementsByTagName('canvas');
for (var i = 0; i < els.length; i++) {
this.initElement(els[i]);
}
},
initElement: function (el) {
if (!el.getContext) {
el.getContext = getContext;
addNamespacesAndStylesheet(el.ownerDocument);
el.innerHTML = '';
el.attachEvent('onpropertychange', onPropertyChange);
el.attachEvent('onresize', onResize);
var attrs = el.attributes;
if (attrs.width && attrs.width.specified) {
el.style.width = attrs.width.nodeValue + 'px';
} else {
el.width = el.clientWidth;
}
if (attrs.height && attrs.height.specified) {
el.style.height = attrs.height.nodeValue + 'px';
} else {
el.height = el.clientHeight;
}
}
return el;
}
};
function onPropertyChange(e) {
var el = e.srcElement;
switch (e.propertyName) {
case 'width':
el.getContext().clearRect();
el.style.width = el.attributes.width.nodeValue + 'px';
el.firstChild.style.width = el.clientWidth + 'px';
break;
case 'height':
el.getContext().clearRect();
el.style.height = el.attributes.height.nodeValue + 'px';
el.firstChild.style.height = el.clientHeight + 'px';
break;
}
}
function onResize(e) {
var el = e.srcElement;
if (el.firstChild) {
el.firstChild.style.width = el.clientWidth + 'px';
el.firstChild.style.height = el.clientHeight + 'px';
}
}
G_vmlCanvasManager_.init();
var decToHex = [];
for (var i = 0; i < 16; i++) {
for (var j = 0; j < 16; j++) {
decToHex[i * 16 + j] = i.toString(16) + j.toString(16);
}
}
function createMatrixIdentity() {
return [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
];
}
function matrixMultiply(m1, m2) {
var result = createMatrixIdentity();
for (var x = 0; x < 3; x++) {
for (var y = 0; y < 3; y++) {
var sum = 0;
for (var z = 0; z < 3; z++) {
sum += m1[x][z] * m2[z][y];
}
result[x][y] = sum;
}
}
return result;
}
function copyState(o1, o2) {
o2.fillStyle = o1.fillStyle;
o2.lineCap = o1.lineCap;
o2.lineJoin = o1.lineJoin;
o2.lineWidth = o1.lineWidth;
o2.miterLimit = o1.miterLimit;
o2.shadowBlur = o1.shadowBlur;
o2.shadowColor = o1.shadowColor;
o2.shadowOffsetX = o1.shadowOffsetX;
o2.shadowOffsetY = o1.shadowOffsetY;
o2.strokeStyle = o1.strokeStyle;
o2.globalAlpha = o1.globalAlpha;
o2.font = o1.font;
o2.textAlign = o1.textAlign;
o2.textBaseline = o1.textBaseline;
o2.scaleX_ = o1.scaleX_;
o2.scaleY_ = o1.scaleY_;
o2.lineScale_ = o1.lineScale_;
}
var colorData = {
aliceblue: '#F0F8FF',
antiquewhite: '#FAEBD7',
aquamarine: '#7FFFD4',
azure: '#F0FFFF',
beige: '#F5F5DC',
bisque: '#FFE4C4',
black: '#000000',
blanchedalmond: '#FFEBCD',
blueviolet: '#8A2BE2',
brown: '#A52A2A',
burlywood: '#DEB887',
cadetblue: '#5F9EA0',
chartreuse: '#7FFF00',
chocolate: '#D2691E',
coral: '#FF7F50',
cornflowerblue: '#6495ED',
cornsilk: '#FFF8DC',
crimson: '#DC143C',
cyan: '#00FFFF',
darkblue: '#00008B',
darkcyan: '#008B8B',
darkgoldenrod: '#B8860B',
darkgray: '#A9A9A9',
darkgreen: '#006400',
darkgrey: '#A9A9A9',
darkkhaki: '#BDB76B',
darkmagenta: '#8B008B',
darkolivegreen: '#556B2F',
darkorange: '#FF8C00',
darkorchid: '#9932CC',
darkred: '#8B0000',
darksalmon: '#E9967A',
darkseagreen: '#8FBC8F',
darkslateblue: '#483D8B',
darkslategray: '#2F4F4F',
darkslategrey: '#2F4F4F',
darkturquoise: '#00CED1',
darkviolet: '#9400D3',
deeppink: '#FF1493',
deepskyblue: '#00BFFF',
dimgray: '#696969',
dimgrey: '#696969',
dodgerblue: '#1E90FF',
firebrick: '#B22222',
floralwhite: '#FFFAF0',
forestgreen: '#228B22',
gainsboro: '#DCDCDC',
ghostwhite: '#F8F8FF',
gold: '#FFD700',
goldenrod: '#DAA520',
grey: '#808080',
greenyellow: '#ADFF2F',
honeydew: '#F0FFF0',
hotpink: '#FF69B4',
indianred: '#CD5C5C',
indigo: '#4B0082',
ivory: '#FFFFF0',
khaki: '#F0E68C',
lavender: '#E6E6FA',
lavenderblush: '#FFF0F5',
lawngreen: '#7CFC00',
lemonchiffon: '#FFFACD',
lightblue: '#ADD8E6',
lightcoral: '#F08080',
lightcyan: '#E0FFFF',
lightgoldenrodyellow: '#FAFAD2',
lightgreen: '#90EE90',
lightgrey: '#D3D3D3',
lightpink: '#FFB6C1',
lightsalmon: '#FFA07A',
lightseagreen: '#20B2AA',
lightskyblue: '#87CEFA',
lightslategray: '#778899',
lightslategrey: '#778899',
lightsteelblue: '#B0C4DE',
lightyellow: '#FFFFE0',
limegreen: '#32CD32',
linen: '#FAF0E6',
magenta: '#FF00FF',
mediumaquamarine: '#66CDAA',
mediumblue: '#0000CD',
mediumorchid: '#BA55D3',
mediumpurple: '#9370DB',
mediumseagreen: '#3CB371',
mediumslateblue: '#7B68EE',
mediumspringgreen: '#00FA9A',
mediumturquoise: '#48D1CC',
mediumvioletred: '#C71585',
midnightblue: '#191970',
mintcream: '#F5FFFA',
mistyrose: '#FFE4E1',
moccasin: '#FFE4B5',
navajowhite: '#FFDEAD',
oldlace: '#FDF5E6',
olivedrab: '#6B8E23',
orange: '#FFA500',
orangered: '#FF4500',
orchid: '#DA70D6',
palegoldenrod: '#EEE8AA',
palegreen: '#98FB98',
paleturquoise: '#AFEEEE',
palevioletred: '#DB7093',
papayawhip: '#FFEFD5',
peachpuff: '#FFDAB9',
peru: '#CD853F',
pink: '#FFC0CB',
plum: '#DDA0DD',
powderblue: '#B0E0E6',
rosybrown: '#BC8F8F',
royalblue: '#4169E1',
saddlebrown: '#8B4513',
salmon: '#FA8072',
sandybrown: '#F4A460',
seagreen: '#2E8B57',
seashell: '#FFF5EE',
sienna: '#A0522D',
skyblue: '#87CEEB',
slateblue: '#6A5ACD',
slategray: '#708090',
slategrey: '#708090',
snow: '#FFFAFA',
springgreen: '#00FF7F',
steelblue: '#4682B4',
tan: '#D2B48C',
thistle: '#D8BFD8',
tomato: '#FF6347',
turquoise: '#40E0D0',
violet: '#EE82EE',
wheat: '#F5DEB3',
whitesmoke: '#F5F5F5',
yellowgreen: '#9ACD32'
};
function getRgbHslContent(styleString) {
var start = styleString.indexOf('(', 3);
var end = styleString.indexOf(')', start + 1);
var parts = styleString.substring(start + 1, end).split(',');
if (parts.length != 4 || styleString.charAt(3) != 'a') {
parts[3] = 1;
}
return parts;
}
function percent(s) {
return parseFloat(s) / 100;
}
function clamp(v, min, max) {
return Math.min(max, Math.max(min, v));
}
function hslToRgb(parts) {
var r, g, b, h, s, l;
h = parseFloat(parts[0]) / 360 % 360;
if (h < 0)
h++;
s = clamp(percent(parts[1]), 0, 1);
l = clamp(percent(parts[2]), 0, 1);
if (s == 0) {
r = g = b = l;
} else {
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hueToRgb(p, q, h + 1 / 3);
g = hueToRgb(p, q, h);
b = hueToRgb(p, q, h - 1 / 3);
}
return '#' + decToHex[Math.floor(r * 255)] + decToHex[Math.floor(g * 255)] + decToHex[Math.floor(b * 255)];
}
function hueToRgb(m1, m2, h) {
if (h < 0)
h++;
if (h > 1)
h--;
if (6 * h < 1)
return m1 + (m2 - m1) * 6 * h;
else if (2 * h < 1)
return m2;
else if (3 * h < 2)
return m1 + (m2 - m1) * (2 / 3 - h) * 6;
else
return m1;
}
var processStyleCache = {};
function processStyle(styleString) {
if (styleString in processStyleCache) {
return processStyleCache[styleString];
}
var str, alpha = 1;
styleString = String(styleString);
if (styleString.charAt(0) == '#') {
str = styleString;
} else if (/^rgb/.test(styleString)) {
var parts = getRgbHslContent(styleString);
var str = '#', n;
for (var i = 0; i < 3; i++) {
if (parts[i].indexOf('%') != -1) {
n = Math.floor(percent(parts[i]) * 255);
} else {
n = +parts[i];
}
str += decToHex[clamp(n, 0, 255)];
}
alpha = +parts[3];
} else if (/^hsl/.test(styleString)) {
var parts = getRgbHslContent(styleString);
str = hslToRgb(parts);
alpha = parts[3];
} else {
str = colorData[styleString] || styleString;
}
return processStyleCache[styleString] = {
color: str,
alpha: alpha
};
}
var DEFAULT_STYLE = {
style: 'normal',
variant: 'normal',
weight: 'normal',
size: 12,
family: '微软雅黑'
};
var fontStyleCache = {};
function processFontStyle(styleString) {
if (fontStyleCache[styleString]) {
return fontStyleCache[styleString];
}
var el = document.createElement('div');
var style = el.style;
var fontFamily;
try {
style.font = styleString;
fontFamily = style.fontFamily.split(',')[0];
} catch (ex) {
}
return fontStyleCache[styleString] = {
style: style.fontStyle || DEFAULT_STYLE.style,
variant: style.fontVariant || DEFAULT_STYLE.variant,
weight: style.fontWeight || DEFAULT_STYLE.weight,
size: style.fontSize || DEFAULT_STYLE.size,
family: fontFamily || DEFAULT_STYLE.family
};
}
function getComputedStyle(style, element) {
var computedStyle = {};
for (var p in style) {
computedStyle[p] = style[p];
}
var canvasFontSize = parseFloat(element.currentStyle.fontSize), fontSize = parseFloat(style.size);
if (typeof style.size == 'number') {
computedStyle.size = style.size;
} else if (style.size.indexOf('px') != -1) {
computedStyle.size = fontSize;
} else if (style.size.indexOf('em') != -1) {
computedStyle.size = canvasFontSize * fontSize;
} else if (style.size.indexOf('%') != -1) {
computedStyle.size = canvasFontSize / 100 * fontSize;
} else if (style.size.indexOf('pt') != -1) {
computedStyle.size = fontSize / 0.75;
} else {
computedStyle.size = canvasFontSize;
}
return computedStyle;
}
function buildStyle(style) {
return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + style.size + 'px \'' + style.family + '\'';
}
var lineCapMap = {
'butt': 'flat',
'round': 'round'
};
function processLineCap(lineCap) {
return lineCapMap[lineCap] || 'square';
}
function CanvasRenderingContext2D_(canvasElement) {
this.m_ = createMatrixIdentity();
this.mStack_ = [];
this.aStack_ = [];
this.currentPath_ = [];
this.strokeStyle = '#000';
this.fillStyle = '#000';
this.lineWidth = 1;
this.lineJoin = 'miter';
this.lineCap = 'butt';
this.miterLimit = Z * 1;
this.globalAlpha = 1;
this.font = '12px 微软雅黑';
this.textAlign = 'left';
this.textBaseline = 'alphabetic';
this.canvas = canvasElement;
var cssText = 'width:' + canvasElement.clientWidth + 'px;height:' + canvasElement.clientHeight + 'px;overflow:hidden;position:absolute';
var el = canvasElement.ownerDocument.createElement('div');
el.style.cssText = cssText;
canvasElement.appendChild(el);
var overlayEl = el.cloneNode(false);
overlayEl.style.backgroundColor = '#fff';
overlayEl.style.filter = 'alpha(opacity=0)';
canvasElement.appendChild(overlayEl);
this.element_ = el;
this.scaleX_ = 1;
this.scaleY_ = 1;
this.lineScale_ = 1;
}
var contextPrototype = CanvasRenderingContext2D_.prototype;
contextPrototype.clearRect = function () {
if (this.textMeasureEl_) {
this.textMeasureEl_.removeNode(true);
this.textMeasureEl_ = null;
}
this.element_.innerHTML = '';
};
contextPrototype.beginPath = function () {
this.currentPath_ = [];
};
contextPrototype.moveTo = function (aX, aY) {
var p = getCoords(this, aX, aY);
this.currentPath_.push({
type: 'moveTo',
x: p.x,
y: p.y
});
this.currentX_ = p.x;
this.currentY_ = p.y;
};
contextPrototype.lineTo = function (aX, aY) {
var p = getCoords(this, aX, aY);
this.currentPath_.push({
type: 'lineTo',
x: p.x,
y: p.y
});
this.currentX_ = p.x;
this.currentY_ = p.y;
};
contextPrototype.bezierCurveTo = function (aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {
var p = getCoords(this, aX, aY);
var cp1 = getCoords(this, aCP1x, aCP1y);
var cp2 = getCoords(this, aCP2x, aCP2y);
bezierCurveTo(this, cp1, cp2, p);
};
function bezierCurveTo(self, cp1, cp2, p) {
self.currentPath_.push({
type: 'bezierCurveTo',
cp1x: cp1.x,
cp1y: cp1.y,
cp2x: cp2.x,
cp2y: cp2.y,
x: p.x,
y: p.y
});
self.currentX_ = p.x;
self.currentY_ = p.y;
}
contextPrototype.quadraticCurveTo = function (aCPx, aCPy, aX, aY) {
var cp = getCoords(this, aCPx, aCPy);
var p = getCoords(this, aX, aY);
var cp1 = {
x: this.currentX_ + 2 / 3 * (cp.x - this.currentX_),
y: this.currentY_ + 2 / 3 * (cp.y - this.currentY_)
};
var cp2 = {
x: cp1.x + (p.x - this.currentX_) / 3,
y: cp1.y + (p.y - this.currentY_) / 3
};
bezierCurveTo(this, cp1, cp2, p);
};
contextPrototype.arc = function (aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {
aRadius *= Z;
var arcType = aClockwise ? 'at' : 'wa';
var xStart = aX + mc(aStartAngle) * aRadius - Z2;
var yStart = aY + ms(aStartAngle) * aRadius - Z2;
var xEnd = aX + mc(aEndAngle) * aRadius - Z2;
var yEnd = aY + ms(aEndAngle) * aRadius - Z2;
if (xStart == xEnd && !aClockwise) {
xStart += 0.125;
}
var p = getCoords(this, aX, aY);
var pStart = getCoords(this, xStart, yStart);
var pEnd = getCoords(this, xEnd, yEnd);
this.currentPath_.push({
type: arcType,
x: p.x,
y: p.y,
radius: aRadius,
xStart: pStart.x,
yStart: pStart.y,
xEnd: pEnd.x,
yEnd: pEnd.y
});
};
contextPrototype.rect = function (aX, aY, aWidth, aHeight) {
this.moveTo(aX, aY);
this.lineTo(aX + aWidth, aY);
this.lineTo(aX + aWidth, aY + aHeight);
this.lineTo(aX, aY + aHeight);
this.closePath();
};
contextPrototype.strokeRect = function (aX, aY, aWidth, aHeight) {
var oldPath = this.currentPath_;
this.beginPath();
this.moveTo(aX, aY);
this.lineTo(aX + aWidth, aY);
this.lineTo(aX + aWidth, aY + aHeight);
this.lineTo(aX, aY + aHeight);
this.closePath();
this.stroke();
this.currentPath_ = oldPath;
};
contextPrototype.fillRect = function (aX, aY, aWidth, aHeight) {
var oldPath = this.currentPath_;
this.beginPath();
this.moveTo(aX, aY);
this.lineTo(aX + aWidth, aY);
this.lineTo(aX + aWidth, aY + aHeight);
this.lineTo(aX, aY + aHeight);
this.closePath();
this.fill();
this.currentPath_ = oldPath;
};
contextPrototype.createLinearGradient = function (aX0, aY0, aX1, aY1) {
var gradient = new CanvasGradient_('gradient');
gradient.x0_ = aX0;
gradient.y0_ = aY0;
gradient.x1_ = aX1;
gradient.y1_ = aY1;
return gradient;
};
contextPrototype.createRadialGradient = function (aX0, aY0, aR0, aX1, aY1, aR1) {
var gradient = new CanvasGradient_('gradientradial');
gradient.x0_ = aX0;
gradient.y0_ = aY0;
gradient.r0_ = aR0;
gradient.x1_ = aX1;
gradient.y1_ = aY1;
gradient.r1_ = aR1;
return gradient;
};
contextPrototype.drawImage = function (image, var_args) {
var dx, dy, dw, dh, sx, sy, sw, sh;
var oldRuntimeWidth = image.runtimeStyle.width;
var oldRuntimeHeight = image.runtimeStyle.height;
image.runtimeStyle.width = 'auto';
image.runtimeStyle.height = 'auto';
var w = image.width;
var h = image.height;
image.runtimeStyle.width = oldRuntimeWidth;
image.runtimeStyle.height = oldRuntimeHeight;
if (arguments.length == 3) {
dx = arguments[1];
dy = arguments[2];
sx = sy = 0;
sw = dw = w;
sh = dh = h;
} else if (arguments.length == 5) {
dx = arguments[1];
dy = arguments[2];
dw = arguments[3];
dh = arguments[4];
sx = sy = 0;
sw = w;
sh = h;
} else if (arguments.length == 9) {
sx = arguments[1];
sy = arguments[2];
sw = arguments[3];
sh = arguments[4];
dx = arguments[5];
dy = arguments[6];
dw = arguments[7];
dh = arguments[8];
} else {
throw Error('Invalid number of arguments');
}
var d = getCoords(this, dx, dy);
var w2 = sw / 2;
var h2 = sh / 2;
var vmlStr = [];
var W = 10;
var H = 10;
var scaleX = scaleY = 1;
vmlStr.push(' <g_vml_:group', ' coordsize="', Z * W, ',', Z * H, '"', ' coordorigin="0,0"', ' style="width:', W, 'px;height:', H, 'px;position:absolute;');
if (this.m_[0][0] != 1 || this.m_[0][1] || this.m_[1][1] != 1 || this.m_[1][0]) {
var filter = [];
var scaleX = this.scaleX_;
var scaleY = this.scaleY_;
filter.push('M11=', this.m_[0][0] / scaleX, ',', 'M12=', this.m_[1][0] / scaleY, ',', 'M21=', this.m_[0][1] / scaleX, ',', 'M22=', this.m_[1][1] / scaleY, ',', 'Dx=', mr(d.x / Z), ',', 'Dy=', mr(d.y / Z), '');
var max = d;
var c2 = getCoords(this, dx + dw, dy);
var c3 = getCoords(this, dx, dy + dh);
var c4 = getCoords(this, dx + dw, dy + dh);
max.x = m.max(max.x, c2.x, c3.x, c4.x);
max.y = m.max(max.y, c2.y, c3.y, c4.y);
vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z), 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(', filter.join(''), ', SizingMethod=\'clip\');');
} else {
vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;');
}
vmlStr.push(' ">');
if (sx || sy) {
vmlStr.push('<div style="overflow: hidden; width:', Math.ceil((dw + sx * dw / sw) * scaleX), 'px;', ' height:', Math.ceil((dh + sy * dh / sh) * scaleY), 'px;', ' filter:progid:DxImageTransform.Microsoft.Matrix(Dx=', -sx * dw / sw * scaleX, ',Dy=', -sy * dh / sh * scaleY, ');">');
}
vmlStr.push('<div style="width:', Math.round(scaleX * w * dw / sw), 'px;', ' height:', Math.round(scaleY * h * dh / sh), 'px;', ' filter:');
if (this.globalAlpha < 1) {
vmlStr.push(' progid:DXImageTransform.Microsoft.Alpha(opacity=' + this.globalAlpha * 100 + ')');
}
vmlStr.push(' progid:DXImageTransform.Microsoft.AlphaImageLoader(src=', image.src, ',sizingMethod=scale)">');
if (sx || sy)
vmlStr.push('</div>');
vmlStr.push('</div></div>');
this.element_.insertAdjacentHTML('BeforeEnd', vmlStr.join(''));
};
contextPrototype.stroke = function (aFill) {
var lineStr = [];
var lineOpen = false;
var W = 10;
var H = 10;
lineStr.push('<g_vml_:shape', ' filled="', !!aFill, '"', ' style="position:absolute;width:', W, 'px;height:', H, 'px;"', ' coordorigin="0,0"', ' coordsize="', Z * W, ',', Z * H, '"', ' stroked="', !aFill, '"', ' path="');
var newSeq = false;
var min = {
x: null,
y: null
};
var max = {
x: null,
y: null
};
for (var i = 0; i < this.currentPath_.length; i++) {
var p = this.currentPath_[i];
var c;
switch (p.type) {
case 'moveTo':
c = p;
lineStr.push(' m ', mr(p.x), ',', mr(p.y));
break;
case 'lineTo':
lineStr.push(' l ', mr(p.x), ',', mr(p.y));
break;
case 'close':
lineStr.push(' x ');
p = null;
break;
case 'bezierCurveTo':
lineStr.push(' c ', mr(p.cp1x), ',', mr(p.cp1y), ',', mr(p.cp2x), ',', mr(p.cp2y), ',', mr(p.x), ',', mr(p.y));
break;
case 'at':
case 'wa':
lineStr.push(' ', p.type, ' ', mr(p.x - this.scaleX_ * p.radius), ',', mr(p.y - this.scaleY_ * p.radius), ' ', mr(p.x + this.scaleX_ * p.radius), ',', mr(p.y + this.scaleY_ * p.radius), ' ', mr(p.xStart), ',', mr(p.yStart), ' ', mr(p.xEnd), ',', mr(p.yEnd));
break;
}
if (p) {
if (min.x == null || p.x < min.x) {
min.x = p.x;
}
if (max.x == null || p.x > max.x) {
max.x = p.x;
}
if (min.y == null || p.y < min.y) {
min.y = p.y;
}
if (max.y == null || p.y > max.y) {
max.y = p.y;
}
}
}
lineStr.push(' ">');
if (!aFill) {
appendStroke(this, lineStr);
} else {
appendFill(this, lineStr, min, max);
}
lineStr.push('</g_vml_:shape>');
this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
};
function appendStroke(ctx, lineStr) {
var a = processStyle(ctx.strokeStyle);
var color = a.color;
var opacity = a.alpha * ctx.globalAlpha;
var lineWidth = ctx.lineScale_ * ctx.lineWidth;
if (lineWidth < 1) {
opacity *= lineWidth;
}
lineStr.push('<g_vml_:stroke', ' opacity="', opacity, '"', ' joinstyle="', ctx.lineJoin, '"', ' miterlimit="', ctx.miterLimit, '"', ' endcap="', processLineCap(ctx.lineCap), '"', ' weight="', lineWidth, 'px"', ' color="', color, '" />');
}
function appendFill(ctx, lineStr, min, max) {
var fillStyle = ctx.fillStyle;
var arcScaleX = ctx.scaleX_;
var arcScaleY = ctx.scaleY_;
var width = max.x - min.x;
var height = max.y - min.y;
if (fillStyle instanceof CanvasGradient_) {
var angle = 0;
var focus = {
x: 0,
y: 0
};
var shift = 0;
var expansion = 1;
if (fillStyle.type_ == 'gradient') {
var x0 = fillStyle.x0_ / arcScaleX;
var y0 = fillStyle.y0_ / arcScaleY;
var x1 = fillStyle.x1_ / arcScaleX;
var y1 = fillStyle.y1_ / arcScaleY;
var p0 = getCoords(ctx, x0, y0);
var p1 = getCoords(ctx, x1, y1);
var dx = p1.x - p0.x;
var dy = p1.y - p0.y;
angle = Math.atan2(dx, dy) * 180 / Math.PI;
if (angle < 0) {
angle += 360;
}
if (angle < 0.000001) {
angle = 0;
}
} else {
var p0 = getCoords(ctx, fillStyle.x0_, fillStyle.y0_);
focus = {
x: (p0.x - min.x) / width,
y: (p0.y - min.y) / height
};
width /= arcScaleX * Z;
height /= arcScaleY * Z;
var dimension = m.max(width, height);
shift = 2 * fillStyle.r0_ / dimension;
expansion = 2 * fillStyle.r1_ / dimension - shift;
}
var stops = fillStyle.colors_;
stops.sort(function (cs1, cs2) {
return cs1.offset - cs2.offset;
});
var length = stops.length;
var color1 = stops[0].color;
var color2 = stops[length - 1].color;
var opacity1 = stops[0].alpha * ctx.globalAlpha;
var opacity2 = stops[length - 1].alpha * ctx.globalAlpha;
var colors = [];
for (var i = 0; i < length; i++) {
var stop = stops[i];
colors.push(stop.offset * expansion + shift + ' ' + stop.color);
}
lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"', ' method="none" focus="100%"', ' color="', color1, '"', ' color2="', color2, '"', ' colors="', colors.join(','), '"', ' opacity="', opacity2, '"', ' g_o_:opacity2="', opacity1, '"', ' angle="', angle, '"', ' focusposition="', focus.x, ',', focus.y, '" />');
} else if (fillStyle instanceof CanvasPattern_) {
if (width && height) {
var deltaLeft = -min.x;
var deltaTop = -min.y;
lineStr.push('<g_vml_:fill', ' position="', deltaLeft / width * arcScaleX * arcScaleX, ',', deltaTop / height * arcScaleY * arcScaleY, '"', ' type="tile"', ' src="', fillStyle.src_, '" />');
}
} else {
var a = processStyle(ctx.fillStyle);
var color = a.color;
var opacity = a.alpha * ctx.globalAlpha;
lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, '" />');
}
}
contextPrototype.fill = function () {
this.stroke(true);
};
contextPrototype.closePath = function () {
this.currentPath_.push({ type: 'close' });
};
function getCoords(ctx, aX, aY) {
var m = ctx.m_;
return {
x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2,
y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2
};
}
;
contextPrototype.save = function () {
var o = {};
copyState(this, o);
this.aStack_.push(o);
this.mStack_.push(this.m_);
this.m_ = matrixMultiply(createMatrixIdentity(), this.m_);
};
contextPrototype.restore = function () {
if (this.aStack_.length) {
copyState(this.aStack_.pop(), this);
this.m_ = this.mStack_.pop();
}
};
function matrixIsFinite(m) {
return isFinite(m[0][0]) && isFinite(m[0][1]) && isFinite(m[1][0]) && isFinite(m[1][1]) && isFinite(m[2][0]) && isFinite(m[2][1]);
}
function setM(ctx, m, updateLineScale) {
if (!matrixIsFinite(m)) {
return;
}
ctx.m_ = m;
ctx.scaleX_ = Math.sqrt(m[0][0] * m[0][0] + m[0][1] * m[0][1]);
ctx.scaleY_ = Math.sqrt(m[1][0] * m[1][0] + m[1][1] * m[1][1]);
if (updateLineScale) {
var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
ctx.lineScale_ = sqrt(abs(det));
}
}
contextPrototype.translate = function (aX, aY) {
var m1 = [
[
1,
0,
0
],
[
0,
1,
0
],
[
aX,
aY,
1
]
];
setM(this, matrixMultiply(m1, this.m_), false);
};
contextPrototype.rotate = function (aRot) {
var c = mc(aRot);
var s = ms(aRot);
var m1 = [
[
c,
s,
0
],
[
-s,
c,
0
],
[
0,
0,
1
]
];
setM(this, matrixMultiply(m1, this.m_), false);
};
contextPrototype.scale = function (aX, aY) {
var m1 = [
[
aX,
0,
0
],
[
0,
aY,
0
],
[
0,
0,
1
]
];
setM(this, matrixMultiply(m1, this.m_), true);
};
contextPrototype.transform = function (m11, m12, m21, m22, dx, dy) {
var m1 = [
[
m11,
m12,
0
],
[
m21,
m22,
0
],
[
dx,
dy,
1
]
];
setM(this, matrixMultiply(m1, this.m_), true);
};
contextPrototype.setTransform = function (m11, m12, m21, m22, dx, dy) {
var m = [
[
m11,
m12,
0
],
[
m21,
m22,
0
],
[
dx,
dy,
1
]
];
setM(this, m, true);
};
contextPrototype.drawText_ = function (text, x, y, maxWidth, stroke) {
var m = this.m_, delta = 1000, left = 0, right = delta, offset = {
x: 0,
y: 0
}, lineStr = [];
var fontStyle = getComputedStyle(processFontStyle(this.font), this.element_);
var fontStyleString = buildStyle(fontStyle);
var elementStyle = this.element_.currentStyle;
var textAlign = this.textAlign.toLowerCase();
switch (textAlign) {
case 'left':
case 'center':
case 'right':
break;
case 'end':
textAlign = elementStyle.direction == 'ltr' ? 'right' : 'left';
break;
case 'start':
textAlign = elementStyle.direction == 'rtl' ? 'right' : 'left';
break;
default:
textAlign = 'left';
}
switch (this.textBaseline) {
case 'hanging':
case 'top':
offset.y = fontStyle.size / 1.75;
break;
case 'middle':
break;
default:
case null:
case 'alphabetic':
case 'ideographic':
case 'bottom':
offset.y = -fontStyle.size / 2.25;
break;
}
switch (textAlign) {
case 'right':
left = delta;
right = 0.05;
break;
case 'center':
left = right = delta / 2;
break;
}
var d = getCoords(this, x + offset.x, y + offset.y);
lineStr.push('<g_vml_:line from="', -left, ' 0" to="', right, ' 0.05" ', ' coordsize="100 100" coordorigin="0 0"', ' filled="', !stroke, '" stroked="', !!stroke, '" style="position:absolute;width:1px;height:1px;">');
if (stroke) {
appendStroke(this, lineStr);
} else {
appendFill(this, lineStr, {
x: -left,
y: 0
}, {
x: right,
y: fontStyle.size
});
}
var skewM = m[0][0].toFixed(3) + ',' + m[1][0].toFixed(3) + ',' + m[0][1].toFixed(3) + ',' + m[1][1].toFixed(3) + ',0,0';
var skewOffset = mr(d.x / Z) + ',' + mr(d.y / Z);
lineStr.push('<g_vml_:skew on="t" matrix="', skewM, '" ', ' offset="', skewOffset, '" origin="', left, ' 0" />', '<g_vml_:path textpathok="true" />', '<g_vml_:textpath on="true" string="', encodeHtmlAttribute(text), '" style="v-text-align:', textAlign, ';font:', encodeHtmlAttribute(fontStyleString), '" /></g_vml_:line>');
this.element_.insertAdjacentHTML('beforeEnd', lineStr.join(''));
};
contextPrototype.fillText = function (text, x, y, maxWidth) {
this.drawText_(text, x, y, maxWidth, false);
};
contextPrototype.strokeText = function (text, x, y, maxWidth) {
this.drawText_(text, x, y, maxWidth, true);
};
contextPrototype.measureText = function (text) {
if (!this.textMeasureEl_) {
var s = '<span style="position:absolute;' + 'top:-20000px;left:0;padding:0;margin:0;border:none;' + 'white-space:pre;"></span>';
this.element_.insertAdjacentHTML('beforeEnd', s);
this.textMeasureEl_ = this.element_.lastChild;
}
var doc = this.element_.ownerDocument;
this.textMeasureEl_.innerHTML = '';
try {
this.textMeasureEl_.style.font = this.font;
} catch (ex) {
}
this.textMeasureEl_.appendChild(doc.createTextNode(text));
return { width: this.textMeasureEl_.offsetWidth };
};
contextPrototype.clip = function () {
};
contextPrototype.arcTo = function () {
};
contextPrototype.createPattern = function (image, repetition) {
return new CanvasPattern_(image, repetition);
};
function CanvasGradient_(aType) {
this.type_ = aType;
this.x0_ = 0;
this.y0_ = 0;
this.r0_ = 0;
this.x1_ = 0;
this.y1_ = 0;
this.r1_ = 0;
this.colors_ = [];
}
CanvasGradient_.prototype.addColorStop = function (aOffset, aColor) {
aColor = processStyle(aColor);
this.colors_.push({
offset: aOffset,
color: aColor.color,
alpha: aColor.alpha
});
};
function CanvasPattern_(image, repetition) {
assertImageIsValid(image);
switch (repetition) {
case 'repeat':
case null:
case '':
this.repetition_ = 'repeat';
break;
case 'repeat-x':
case 'repeat-y':
case 'no-repeat':
this.repetition_ = repetition;
break;
default:
throwException('SYNTAX_ERR');
}
this.src_ = image.src;
this.width_ = image.width;
this.height_ = image.height;
}
function throwException(s) {
throw new DOMException_(s);
}
function assertImageIsValid(img) {
if (!img || img.nodeType != 1 || img.tagName != 'IMG') {
throwException('TYPE_MISMATCH_ERR');
}
if (img.readyState != 'complete') {
throwException('INVALID_STATE_ERR');
}
}
function DOMException_(s) {
this.code = this[s];
this.message = s + ': DOM Exception ' + this.code;
}
var p = DOMException_.prototype = new Error();
p.INDEX_SIZE_ERR = 1;
p.DOMSTRING_SIZE_ERR = 2;
p.HIERARCHY_REQUEST_ERR = 3;
p.WRONG_DOCUMENT_ERR = 4;
p.INVALID_CHARACTER_ERR = 5;
p.NO_DATA_ALLOWED_ERR = 6;
p.NO_MODIFICATION_ALLOWED_ERR = 7;
p.NOT_FOUND_ERR = 8;
p.NOT_SUPPORTED_ERR = 9;
p.INUSE_ATTRIBUTE_ERR = 10;
p.INVALID_STATE_ERR = 11;
p.SYNTAX_ERR = 12;
p.INVALID_MODIFICATION_ERR = 13;
p.NAMESPACE_ERR = 14;
p.INVALID_ACCESS_ERR = 15;
p.VALIDATION_ERR = 16;
p.TYPE_MISMATCH_ERR = 17;
G_vmlCanvasManager = G_vmlCanvasManager_;
CanvasRenderingContext2D = CanvasRenderingContext2D_;
CanvasGradient = CanvasGradient_;
CanvasPattern = CanvasPattern_;
DOMException = DOMException_;
}());
} else {
G_vmlCanvasManager = false;
}
return G_vmlCanvasManager;
});define('zrender/mixin/Eventful', ['require'], function (require) {
var Eventful = function () {
this._handlers = {};
};
Eventful.prototype.one = function (event, handler, context) {
var _h = this._handlers;
if (!handler || !event) {
return this;
}
if (!_h[event]) {
_h[event] = [];
}
_h[event].push({
h: handler,
one: true,
ctx: context || this
});
return this;
};
Eventful.prototype.bind = function (event, handler, context) {
var _h = this._handlers;
if (!handler || !event) {
return this;
}
if (!_h[event]) {
_h[event] = [];
}
_h[event].push({
h: handler,
one: false,
ctx: context || this
});
return this;
};
Eventful.prototype.unbind = function (event, handler) {
var _h = this._handlers;
if (!event) {
this._handlers = {};
return this;
}
if (handler) {
if (_h[event]) {
var newList = [];
for (var i = 0, l = _h[event].length; i < l; i++) {
if (_h[event][i]['h'] != handler) {
newList.push(_h[event][i]);
}
}
_h[event] = newList;
}
if (_h[event] && _h[event].length === 0) {
delete _h[event];
}
} else {
delete _h[event];
}
return this;
};
Eventful.prototype.dispatch = function (type) {
if (this._handlers[type]) {
var args = arguments;
var argLen = args.length;
if (argLen > 3) {
args = Array.prototype.slice.call(args, 1);
}
var _h = this._handlers[type];
var len = _h.length;
for (var i = 0; i < len;) {
switch (argLen) {
case 1:
_h[i]['h'].call(_h[i]['ctx']);
break;
case 2:
_h[i]['h'].call(_h[i]['ctx'], args[1]);
break;
case 3:
_h[i]['h'].call(_h[i]['ctx'], args[1], args[2]);
break;
default:
_h[i]['h'].apply(_h[i]['ctx'], args);
break;
}
if (_h[i]['one']) {
_h.splice(i, 1);
len--;
} else {
i++;
}
}
}
return this;
};
Eventful.prototype.dispatchWithContext = function (type) {
if (this._handlers[type]) {
var args = arguments;
var argLen = args.length;
if (argLen > 4) {
args = Array.prototype.slice.call(args, 1, args.length - 1);
}
var ctx = args[args.length - 1];
var _h = this._handlers[type];
var len = _h.length;
for (var i = 0; i < len;) {
switch (argLen) {
case 1:
_h[i]['h'].call(ctx);
break;
case 2:
_h[i]['h'].call(ctx, args[1]);
break;
case 3:
_h[i]['h'].call(ctx, args[1], args[2]);
break;
default:
_h[i]['h'].apply(ctx, args);
break;
}
if (_h[i]['one']) {
_h.splice(i, 1);
len--;
} else {
i++;
}
}
}
return this;
};
return Eventful;
});define('zrender/tool/log', [
'require',
'../config'
], function (require) {
var config = require('../config');
return function () {
if (config.debugMode === 0) {
return;
} else if (config.debugMode == 1) {
for (var k in arguments) {
throw new Error(arguments[k]);
}
} else if (config.debugMode > 1) {
for (var k in arguments) {
console.log(arguments[k]);
}
}
};
});define('zrender/tool/guid', [], function () {
var idStart = 2311;
return function () {
return 'zrender__' + idStart++;
};
});define('zrender/Handler', [
'require',
'./config',
'./tool/env',
'./tool/event',
'./tool/util',
'./tool/vector',
'./tool/matrix',
'./mixin/Eventful'
], function (require) {
'use strict';
var config = require('./config');
var env = require('./tool/env');
var eventTool = require('./tool/event');
var util = require('./tool/util');
var vec2 = require('./tool/vector');
var mat2d = require('./tool/matrix');
var EVENT = config.EVENT;
var Eventful = require('./mixin/Eventful');
var domHandlerNames = [
'resize',
'click',
'dblclick',
'mousewheel',
'mousemove',
'mouseout',
'mouseup',
'mousedown',
'touchstart',
'touchend',
'touchmove'
];
var domHandlers = {
resize: function (event) {
event = event || window.event;
this._lastHover = null;
this._isMouseDown = 0;
this.dispatch(EVENT.RESIZE, event);
},
click: function (event) {
event = this._zrenderEventFixed(event);
var _lastHover = this._lastHover;
if (_lastHover && _lastHover.clickable || !_lastHover) {
if (this._clickThreshold < 5) {
this._dispatchAgency(_lastHover, EVENT.CLICK, event);
}
}
this._mousemoveHandler(event);
},
dblclick: function (event) {
event = event || window.event;
event = this._zrenderEventFixed(event);
var _lastHover = this._lastHover;
if (_lastHover && _lastHover.clickable || !_lastHover) {
if (this._clickThreshold < 5) {
this._dispatchAgency(_lastHover, EVENT.DBLCLICK, event);
}
}
this._mousemoveHandler(event);
},
mousewheel: function (event) {
event = this._zrenderEventFixed(event);
var delta = event.wheelDelta || -event.detail;
var scale = delta > 0 ? 1.1 : 1 / 1.1;
var layers = this.painter.getLayers();
var needsRefresh = false;
for (var z in layers) {
if (z !== 'hover') {
var layer = layers[z];
var pos = layer.position;
if (layer.zoomable) {
layer.__zoom = layer.__zoom || 1;
var newZoom = layer.__zoom;
newZoom *= scale;
newZoom = Math.max(Math.min(layer.maxZoom, newZoom), layer.minZoom);
scale = newZoom / layer.__zoom;
layer.__zoom = newZoom;
pos[0] -= (this._mouseX - pos[0]) * (scale - 1);
pos[1] -= (this._mouseY - pos[1]) * (scale - 1);
layer.scale[0] *= scale;
layer.scale[1] *= scale;
layer.dirty = true;
needsRefresh = true;
eventTool.stop(event);
}
}
}
if (needsRefresh) {
this.painter.refresh();
}
this._dispatchAgency(this._lastHover, EVENT.MOUSEWHEEL, event);
this._mousemoveHandler(event);
},
mousemove: function (event) {
if (this.painter.isLoading()) {
return;
}
this._clickThreshold++;
event = this._zrenderEventFixed(event);
this._lastX = this._mouseX;
this._lastY = this._mouseY;
this._mouseX = eventTool.getX(event);
this._mouseY = eventTool.getY(event);
var dx = this._mouseX - this._lastX;
var dy = this._mouseY - this._lastY;
this._processDragStart(event);
this._hasfound = 0;
this._event = event;
this._iterateAndFindHover();
if (!this._hasfound) {
if (!this._draggingTarget || this._lastHover && this._lastHover != this._draggingTarget) {
this._processOutShape(event);
this._processDragLeave(event);
}
this._lastHover = null;
this.storage.delHover();
this.painter.clearHover();
}
var cursor = 'default';
if (this._draggingTarget) {
this.storage.drift(this._draggingTarget.id, dx, dy);
this._draggingTarget.modSelf();
this.storage.addHover(this._draggingTarget);
} else if (this._isMouseDown) {
var layers = this.painter.getLayers();
var needsRefresh = false;
for (var z in layers) {
if (z !== 'hover') {
var layer = layers[z];
if (layer.panable) {
cursor = 'move';
layer.position[0] += dx;
layer.position[1] += dy;
needsRefresh = true;
layer.dirty = true;
}
}
}
if (needsRefresh) {
this.painter.refresh();
}
}
if (this._draggingTarget || this._hasfound && this._lastHover.draggable) {
cursor = 'move';
} else if (this._hasfound && this._lastHover.clickable) {
cursor = 'pointer';
}
this.root.style.cursor = cursor;
this._dispatchAgency(this._lastHover, EVENT.MOUSEMOVE, event);
if (this._draggingTarget || this._hasfound || this.storage.hasHoverShape()) {
this.painter.refreshHover();
}
},
mouseout: function (event) {
event = this._zrenderEventFixed(event);
var element = event.toElement || event.relatedTarget;
if (element != this.root) {
while (element && element.nodeType != 9) {
if (element == this.root) {
this._mousemoveHandler(event);
return;
}
element = element.parentNode;
}
}
event.zrenderX = this._lastX;
event.zrenderY = this._lastY;
this.root.style.cursor = 'default';
this._isMouseDown = 0;
this._processOutShape(event);
this._processDrop(event);
this._processDragEnd(event);
if (!this.painter.isLoading()) {
this.painter.refreshHover();
}
this.dispatch(EVENT.GLOBALOUT, event);
},
mousedown: function (event) {
this._clickThreshold = 0;
if (this._lastDownButton == 2) {
this._lastDownButton = event.button;
this._mouseDownTarget = null;
return;
}
this._lastMouseDownMoment = new Date();
event = this._zrenderEventFixed(event);
this._isMouseDown = 1;
this._mouseDownTarget = this._lastHover;
this._dispatchAgency(this._lastHover, EVENT.MOUSEDOWN, event);
this._lastDownButton = event.button;
},
mouseup: function (event) {
event = this._zrenderEventFixed(event);
this.root.style.cursor = 'default';
this._isMouseDown = 0;
this._clickThreshold = 0;
this._mouseDownTarget = null;
this._dispatchAgency(this._lastHover, EVENT.MOUSEUP, event);
this._processDrop(event);
this._processDragEnd(event);
},
touchstart: function (event) {
event = this._zrenderEventFixed(event, true);
this._lastTouchMoment = new Date();
this._mobildFindFixed(event);
this._mousedownHandler(event);
},
touchmove: function (event) {
event = this._zrenderEventFixed(event, true);
this._mousemoveHandler(event);
if (this._isDragging) {
eventTool.stop(event);
}
},
touchend: function (event) {
event = this._zrenderEventFixed(event, true);
this._mouseupHandler(event);
var now = new Date();
if (now - this._lastTouchMoment < EVENT.touchClickDelay) {
this._mobildFindFixed(event);
this._clickHandler(event);
if (now - this._lastClickMoment < EVENT.touchClickDelay / 2) {
this._dblclickHandler(event);
if (this._lastHover && this._lastHover.clickable) {
eventTool.stop(event);
}
}
this._lastClickMoment = now;
}
this.painter.clearHover();
}
};
function bind1Arg(handler, context) {
return function (e) {
return handler.call(context, e);
};
}
function bind3Arg(handler, context) {
return function (arg1, arg2, arg3) {
return handler.call(context, arg1, arg2, arg3);
};
}
function initDomHandler(instance) {
var len = domHandlerNames.length;
while (len--) {
var name = domHandlerNames[len];
instance['_' + name + 'Handler'] = bind1Arg(domHandlers[name], instance);
}
}
var Handler = function (root, storage, painter) {
Eventful.call(this);
this.root = root;
this.storage = storage;
this.painter = painter;
this._lastX = this._lastY = this._mouseX = this._mouseY = 0;
this._findHover = bind3Arg(findHover, this);
this._domHover = painter.getDomHover();
initDomHandler(this);
if (window.addEventListener) {
window.addEventListener('resize', this._resizeHandler);
if (env.os.tablet || env.os.phone) {
root.addEventListener('touchstart', this._touchstartHandler);
root.addEventListener('touchmove', this._touchmoveHandler);
root.addEventListener('touchend', this._touchendHandler);
} else {
root.addEventListener('click', this._clickHandler);
root.addEventListener('dblclick', this._dblclickHandler);
root.addEventListener('mousewheel', this._mousewheelHandler);
root.addEventListener('mousemove', this._mousemoveHandler);
root.addEventListener('mousedown', this._mousedownHandler);
root.addEventListener('mouseup', this._mouseupHandler);
}
root.addEventListener('DOMMouseScroll', this._mousewheelHandler);
root.addEventListener('mouseout', this._mouseoutHandler);
} else {
window.attachEvent('onresize', this._resizeHandler);
root.attachEvent('onclick', this._clickHandler);
root.ondblclick = this._dblclickHandler;
root.attachEvent('onmousewheel', this._mousewheelHandler);
root.attachEvent('onmousemove', this._mousemoveHandler);
root.attachEvent('onmouseout', this._mouseoutHandler);
root.attachEvent('onmousedown', this._mousedownHandler);
root.attachEvent('onmouseup', this._mouseupHandler);
}
};
Handler.prototype.on = function (eventName, handler) {
this.bind(eventName, handler);
return this;
};
Handler.prototype.un = function (eventName, handler) {
this.unbind(eventName, handler);
return this;
};
Handler.prototype.trigger = function (eventName, eventArgs) {
switch (eventName) {
case EVENT.RESIZE:
case EVENT.CLICK:
case EVENT.DBLCLICK:
case EVENT.MOUSEWHEEL:
case EVENT.MOUSEMOVE:
case EVENT.MOUSEDOWN:
case EVENT.MOUSEUP:
case EVENT.MOUSEOUT:
this['_' + eventName + 'Handler'](eventArgs);
break;
}
};
Handler.prototype.dispose = function () {
var root = this.root;
if (window.removeEventListener) {
window.removeEventListener('resize', this._resizeHandler);
if (env.os.tablet || env.os.phone) {
root.removeEventListener('touchstart', this._touchstartHandler);
root.removeEventListener('touchmove', this._touchmoveHandler);
root.removeEventListener('touchend', this._touchendHandler);
} else {
root.removeEventListener('click', this._clickHandler);
root.removeEventListener('dblclick', this._dblclickHandler);
root.removeEventListener('mousewheel', this._mousewheelHandler);
root.removeEventListener('mousemove', this._mousemoveHandler);
root.removeEventListener('mousedown', this._mousedownHandler);
root.removeEventListener('mouseup', this._mouseupHandler);
}
root.removeEventListener('DOMMouseScroll', this._mousewheelHandler);
root.removeEventListener('mouseout', this._mouseoutHandler);
} else {
window.detachEvent('onresize', this._resizeHandler);
root.detachEvent('onclick', this._clickHandler);
root.detachEvent('dblclick', this._dblclickHandler);
root.detachEvent('onmousewheel', this._mousewheelHandler);
root.detachEvent('onmousemove', this._mousemoveHandler);
root.detachEvent('onmouseout', this._mouseoutHandler);
root.detachEvent('onmousedown', this._mousedownHandler);
root.detachEvent('onmouseup', this._mouseupHandler);
}
this.root = this._domHover = this.storage = this.painter = null;
this.un();
};
Handler.prototype._processDragStart = function (event) {
var _lastHover = this._lastHover;
if (this._isMouseDown && _lastHover && _lastHover.draggable && !this._draggingTarget && this._mouseDownTarget == _lastHover) {
if (_lastHover.dragEnableTime && new Date() - this._lastMouseDownMoment < _lastHover.dragEnableTime) {
return;
}
var _draggingTarget = _lastHover;
this._draggingTarget = _draggingTarget;
this._isDragging = 1;
_draggingTarget.invisible = true;
this.storage.mod(_draggingTarget.id);
this._dispatchAgency(_draggingTarget, EVENT.DRAGSTART, event);
this.painter.refresh();
}
};
Handler.prototype._processDragEnter = function (event) {
if (this._draggingTarget) {
this._dispatchAgency(this._lastHover, EVENT.DRAGENTER, event, this._draggingTarget);
}
};
Handler.prototype._processDragOver = function (event) {
if (this._draggingTarget) {
this._dispatchAgency(this._lastHover, EVENT.DRAGOVER, event, this._draggingTarget);
}
};
Handler.prototype._processDragLeave = function (event) {
if (this._draggingTarget) {
this._dispatchAgency(this._lastHover, EVENT.DRAGLEAVE, event, this._draggingTarget);
}
};
Handler.prototype._processDrop = function (event) {
if (this._draggingTarget) {
this._draggingTarget.invisible = false;
this.storage.mod(this._draggingTarget.id);
this.painter.refresh();
this._dispatchAgency(this._lastHover, EVENT.DROP, event, this._draggingTarget);
}
};
Handler.prototype._processDragEnd = function (event) {
if (this._draggingTarget) {
this._dispatchAgency(this._draggingTarget, EVENT.DRAGEND, event);
this._lastHover = null;
}
this._isDragging = 0;
this._draggingTarget = null;
};
Handler.prototype._processOverShape = function (event) {
this._dispatchAgency(this._lastHover, EVENT.MOUSEOVER, event);
};
Handler.prototype._processOutShape = function (event) {
this._dispatchAgency(this._lastHover, EVENT.MOUSEOUT, event);
};
Handler.prototype._dispatchAgency = function (targetShape, eventName, event, draggedShape) {
var eventHandler = 'on' + eventName;
var eventPacket = {
type: eventName,
event: event,
target: targetShape,
cancelBubble: false
};
var el = targetShape;
if (draggedShape) {
eventPacket.dragged = draggedShape;
}
while (el) {
el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler](eventPacket));
el.dispatch(eventName, eventPacket);
el = el.parent;
if (eventPacket.cancelBubble) {
break;
}
}
if (targetShape) {
if (!eventPacket.cancelBubble) {
this.dispatch(eventName, eventPacket);
}
} else if (!draggedShape) {
this.dispatch(eventName, {
type: eventName,
event: event
});
}
};
Handler.prototype._iterateAndFindHover = function () {
var invTransform = mat2d.create();
return function () {
var list = this.storage.getShapeList();
var currentZLevel;
var currentLayer;
var tmp = [
0,
0
];
for (var i = list.length - 1; i >= 0; i--) {
var shape = list[i];
if (currentZLevel !== shape.zlevel) {
currentLayer = this.painter.getLayer(shape.zlevel, currentLayer);
tmp[0] = this._mouseX;
tmp[1] = this._mouseY;
if (currentLayer.needTransform) {
mat2d.invert(invTransform, currentLayer.transform);
vec2.applyTransform(tmp, tmp, invTransform);
}
}
if (this._findHover(shape, tmp[0], tmp[1])) {
break;
}
}
};
}();
var MOBILE_TOUCH_OFFSETS = [
{ x: 10 },
{ x: -20 },
{
x: 10,
y: 10
},
{ y: -20 }
];
Handler.prototype._mobildFindFixed = function (event) {
this._lastHover = null;
this._mouseX = event.zrenderX;
this._mouseY = event.zrenderY;
this._event = event;
this._iterateAndFindHover();
for (var i = 0; !this._lastHover && i < MOBILE_TOUCH_OFFSETS.length; i++) {
var offset = MOBILE_TOUCH_OFFSETS[i];
offset.x && (this._mouseX += offset.x);
offset.y && (this._mouseX += offset.y);
this._iterateAndFindHover();
}
if (this._lastHover) {
event.zrenderX = this._mouseX;
event.zrenderY = this._mouseY;
}
};
function findHover(shape, x, y) {
if (this._draggingTarget && this._draggingTarget.id == shape.id || shape.isSilent()) {
return false;
}
var event = this._event;
if (shape.isCover(x, y)) {
if (shape.hoverable) {
this.storage.addHover(shape);
}
var p = shape.parent;
while (p) {
if (p.clipShape && !p.clipShape.isCover(this._mouseX, this._mouseY)) {
return false;
}
p = p.parent;
}
if (this._lastHover != shape) {
this._processOutShape(event);
this._processDragLeave(event);
this._lastHover = shape;
this._processDragEnter(event);
}
this._processOverShape(event);
this._processDragOver(event);
this._hasfound = 1;
return true;
}
return false;
}
Handler.prototype._zrenderEventFixed = function (event, isTouch) {
if (event.zrenderFixed) {
return event;
}
if (!isTouch) {
event = event || window.event;
var target = event.toElement || event.relatedTarget || event.srcElement || event.target;
if (target && target != this._domHover) {
event.zrenderX = (typeof event.offsetX != 'undefined' ? event.offsetX : event.layerX) + target.offsetLeft;
event.zrenderY = (typeof event.offsetY != 'undefined' ? event.offsetY : event.layerY) + target.offsetTop;
}
} else {
var touch = event.type != 'touchend' ? event.targetTouches[0] : event.changedTouches[0];
if (touch) {
var rBounding = this.root.getBoundingClientRect();
event.zrenderX = touch.clientX - rBounding.left;
event.zrenderY = touch.clientY - rBounding.top;
}
}
event.zrenderFixed = 1;
return event;
};
util.merge(Handler.prototype, Eventful.prototype, true);
return Handler;
});define('zrender/Painter', [
'require',
'./config',
'./tool/util',
'./tool/log',
'./tool/matrix',
'./loadingEffect/Base',
'./mixin/Transformable',
'./shape/Image'
], function (require) {
'use strict';
var config = require('./config');
var util = require('./tool/util');
var log = require('./tool/log');
var matrix = require('./tool/matrix');
var BaseLoadingEffect = require('./loadingEffect/Base');
var Transformable = require('./mixin/Transformable');
var devicePixelRatio = window.devicePixelRatio || 1;
devicePixelRatio = Math.max(devicePixelRatio, 1);
var vmlCanvasManager = window['G_vmlCanvasManager'];
function returnFalse() {
return false;
}
function doNothing() {
}
var Painter = function (root, storage) {
this.root = root;
this.storage = storage;
root.innerHTML = '';
this._width = this._getWidth();
this._height = this._getHeight();
var domRoot = document.createElement('div');
this._domRoot = domRoot;
domRoot.style.position = 'relative';
domRoot.style.overflow = 'hidden';
domRoot.style.width = this._width + 'px';
domRoot.style.height = this._height + 'px';
root.appendChild(domRoot);
this._layers = {};
this._zlevelList = [];
this._layerConfig = {};
this._loadingEffect = new BaseLoadingEffect({});
this.shapeToImage = this._createShapeToImageProcessor();
this._bgDom = createDom('bg', 'div', this);
domRoot.appendChild(this._bgDom);
this._bgDom.onselectstart = returnFalse;
this._bgDom.style['-webkit-user-select'] = 'none';
this._bgDom.style['user-select'] = 'none';
this._bgDom.style['-webkit-touch-callout'] = 'none';
var hoverLayer = new Layer('_zrender_hover_', this);
this._layers['hover'] = hoverLayer;
domRoot.appendChild(hoverLayer.dom);
hoverLayer.initContext();
hoverLayer.dom.onselectstart = returnFalse;
hoverLayer.dom.style['-webkit-user-select'] = 'none';
hoverLayer.dom.style['user-select'] = 'none';
hoverLayer.dom.style['-webkit-touch-callout'] = 'none';
this.refreshNextFrame = null;
};
Painter.prototype.render = function (callback) {
if (this.isLoading()) {
this.hideLoading();
}
this.refresh(callback, true);
return this;
};
Painter.prototype.refresh = function (callback, paintAll) {
var list = this.storage.getShapeList(true);
this._paintList(list, paintAll);
if (typeof callback == 'function') {
callback();
}
return this;
};
Painter.prototype._paintList = function (list, paintAll) {
if (typeof paintAll == 'undefined') {
paintAll = false;
}
this._updateLayerStatus(list);
var currentLayer;
var currentZLevel;
var ctx;
for (var id in this._layers) {
if (id !== 'hover') {
this._layers[id].unusedCount++;
this._layers[id].updateTransform();
}
}
var invTransform = [];
for (var i = 0, l = list.length; i < l; i++) {
var shape = list[i];
if (currentZLevel !== shape.zlevel) {
if (currentLayer) {
if (currentLayer.needTransform) {
ctx.restore();
}
ctx.flush && ctx.flush();
}
currentLayer = this.getLayer(shape.zlevel);
ctx = currentLayer.ctx;
currentZLevel = shape.zlevel;
currentLayer.unusedCount = 0;
if (currentLayer.dirty || paintAll) {
currentLayer.clear();
}
if (currentLayer.needTransform) {
ctx.save();
currentLayer.setTransform(ctx);
}
}
if (shape.__startClip && !vmlCanvasManager) {
var clipShape = shape.__startClip;
ctx.save();
if (clipShape.needTransform) {
var m = clipShape.transform;
matrix.invert(invTransform, m);
ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);
}
ctx.beginPath();
clipShape.buildPath(ctx, clipShape.style);
ctx.clip();
if (clipShape.needTransform) {
var m = invTransform;
ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);
}
}
if ((currentLayer.dirty || paintAll) && !shape.invisible) {
if (!shape.onbrush || shape.onbrush && !shape.onbrush(ctx, false)) {
if (config.catchBrushException) {
try {
shape.brush(ctx, false, this.refreshNextFrame);
} catch (error) {
log(error, 'brush error of ' + shape.type, shape);
}
} else {
shape.brush(ctx, false, this.refreshNextFrame);
}
}
}
if (shape.__stopClip && !vmlCanvasManager) {
ctx.restore();
}
shape.__dirty = false;
}
if (currentLayer) {
if (currentLayer.needTransform) {
ctx.restore();
}
ctx.flush && ctx.flush();
}
for (var id in this._layers) {
if (id !== 'hover') {
var layer = this._layers[id];
layer.dirty = false;
if (layer.unusedCount == 1) {
layer.clear();
}
}
}
};
Painter.prototype.getLayer = function (zlevel) {
var currentLayer = this._layers[zlevel];
if (!currentLayer) {
var len = this._zlevelList.length;
var prevLayer = null;
var i = -1;
if (len > 0 && zlevel > this._zlevelList[0]) {
for (i = 0; i < len - 1; i++) {
if (this._zlevelList[i] < zlevel && this._zlevelList[i + 1] > zlevel) {
break;
}
}
prevLayer = this._layers[this._zlevelList[i]];
}
this._zlevelList.splice(i + 1, 0, zlevel);
currentLayer = new Layer(zlevel, this);
var prevDom = prevLayer ? prevLayer.dom : this._bgDom;
if (prevDom.nextSibling) {
prevDom.parentNode.insertBefore(currentLayer.dom, prevDom.nextSibling);
} else {
prevDom.parentNode.appendChild(currentLayer.dom);
}
currentLayer.initContext();
this._layers[zlevel] = currentLayer;
if (this._layerConfig[zlevel]) {
util.merge(currentLayer, this._layerConfig[zlevel], true);
}
currentLayer.updateTransform();
}
return currentLayer;
};
Painter.prototype.getLayers = function () {
return this._layers;
};
Painter.prototype._updateLayerStatus = function (list) {
var layers = this._layers;
var elCounts = {};
for (var z in layers) {
if (z !== 'hover') {
elCounts[z] = layers[z].elCount;
layers[z].elCount = 0;
}
}
for (var i = 0, l = list.length; i < l; i++) {
var shape = list[i];
var zlevel = shape.zlevel;
var layer = layers[zlevel];
if (layer) {
layer.elCount++;
if (layer.dirty) {
continue;
}
layer.dirty = shape.__dirty;
}
}
for (var z in layers) {
if (z !== 'hover') {
if (elCounts[z] !== layers[z].elCount) {
layers[z].dirty = true;
}
}
}
};
Painter.prototype.refreshShapes = function (shapeList, callback) {
for (var i = 0, l = shapeList.length; i < l; i++) {
var shape = shapeList[i];
shape.modSelf();
}
this.refresh(callback);
return this;
};
Painter.prototype.setLoadingEffect = function (loadingEffect) {
this._loadingEffect = loadingEffect;
return this;
};
Painter.prototype.clear = function () {
for (var k in this._layers) {
if (k == 'hover') {
continue;
}
this._layers[k].clear();
}
return this;
};
Painter.prototype.modLayer = function (zlevel, config) {
if (config) {
if (!this._layerConfig[zlevel]) {
this._layerConfig[zlevel] = config;
} else {
util.merge(this._layerConfig[zlevel], config, true);
}
var layer = this._layers[zlevel];
if (layer) {
util.merge(layer, this._layerConfig[zlevel], true);
}
}
};
Painter.prototype.delLayer = function (zlevel) {
var layer = this._layers[zlevel];
if (!layer) {
return;
}
this.modLayer(zlevel, {
position: layer.position,
rotation: layer.rotation,
scale: layer.scale
});
layer.dom.parentNode.removeChild(layer.dom);
delete this._layers[zlevel];
this._zlevelList.splice(util.indexOf(this._zlevelList, zlevel), 1);
};
Painter.prototype.refreshHover = function () {
this.clearHover();
var list = this.storage.getHoverShapes(true);
for (var i = 0, l = list.length; i < l; i++) {
this._brushHover(list[i]);
}
var ctx = this._layers.hover.ctx;
ctx.flush && ctx.flush();
this.storage.delHover();
return this;
};
Painter.prototype.clearHover = function () {
var hover = this._layers.hover;
hover && hover.clear();
return this;
};
Painter.prototype.showLoading = function (loadingEffect) {
this._loadingEffect && this._loadingEffect.stop();
loadingEffect && this.setLoadingEffect(loadingEffect);
this._loadingEffect.start(this);
this.loading = true;
return this;
};
Painter.prototype.hideLoading = function () {
this._loadingEffect.stop();
this.clearHover();
this.loading = false;
return this;
};
Painter.prototype.isLoading = function () {
return this.loading;
};
Painter.prototype.resize = function () {
var domRoot = this._domRoot;
domRoot.style.display = 'none';
var width = this._getWidth();
var height = this._getHeight();
domRoot.style.display = '';
if (this._width != width || height != this._height) {
this._width = width;
this._height = height;
domRoot.style.width = width + 'px';
domRoot.style.height = height + 'px';
for (var id in this._layers) {
this._layers[id].resize(width, height);
}
this.refresh(null, true);
}
return this;
};
Painter.prototype.clearLayer = function (zLevel) {
var layer = this._layers[zLevel];
if (layer) {
layer.clear();
}
};
Painter.prototype.dispose = function () {
if (this.isLoading()) {
this.hideLoading();
}
this.root.innerHTML = '';
this.root = this.storage = this._domRoot = this._layers = null;
};
Painter.prototype.getDomHover = function () {
return this._layers.hover.dom;
};
Painter.prototype.toDataURL = function (type, backgroundColor, args) {
if (vmlCanvasManager) {
return null;
}
var imageDom = createDom('image', 'canvas', this);
this._bgDom.appendChild(imageDom);
var ctx = imageDom.getContext('2d');
devicePixelRatio != 1 && ctx.scale(devicePixelRatio, devicePixelRatio);
ctx.fillStyle = backgroundColor || '#fff';
ctx.rect(0, 0, this._width * devicePixelRatio, this._height * devicePixelRatio);
ctx.fill();
var self = this;
this.storage.iterShape(function (shape) {
if (!shape.invisible) {
if (!shape.onbrush || shape.onbrush && !shape.onbrush(ctx, false)) {
if (config.catchBrushException) {
try {
shape.brush(ctx, false, self.refreshNextFrame);
} catch (error) {
log(error, 'brush error of ' + shape.type, shape);
}
} else {
shape.brush(ctx, false, self.refreshNextFrame);
}
}
}
}, {
normal: 'up',
update: true
});
var image = imageDom.toDataURL(type, args);
ctx = null;
this._bgDom.removeChild(imageDom);
return image;
};
Painter.prototype.getWidth = function () {
return this._width;
};
Painter.prototype.getHeight = function () {
return this._height;
};
Painter.prototype._getWidth = function () {
var root = this.root;
var stl = root.currentStyle || document.defaultView.getComputedStyle(root);
return ((root.clientWidth || parseInt(stl.width, 10)) - parseInt(stl.paddingLeft, 10) - parseInt(stl.paddingRight, 10)).toFixed(0) - 0;
};
Painter.prototype._getHeight = function () {
var root = this.root;
var stl = root.currentStyle || document.defaultView.getComputedStyle(root);
return ((root.clientHeight || parseInt(stl.height, 10)) - parseInt(stl.paddingTop, 10) - parseInt(stl.paddingBottom, 10)).toFixed(0) - 0;
};
Painter.prototype._brushHover = function (shape) {
var ctx = this._layers.hover.ctx;
if (!shape.onbrush || shape.onbrush && !shape.onbrush(ctx, true)) {
var layer = this.getLayer(shape.zlevel);
if (layer.needTransform) {
ctx.save();
layer.setTransform(ctx);
}
if (config.catchBrushException) {
try {
shape.brush(ctx, true, this.refreshNextFrame);
} catch (error) {
log(error, 'hoverBrush error of ' + shape.type, shape);
}
} else {
shape.brush(ctx, true, this.refreshNextFrame);
}
if (layer.needTransform) {
ctx.restore();
}
}
};
Painter.prototype._shapeToImage = function (id, shape, width, height, devicePixelRatio) {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var devicePixelRatio = window.devicePixelRatio || 1;
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
canvas.setAttribute('width', width * devicePixelRatio);
canvas.setAttribute('height', height * devicePixelRatio);
ctx.clearRect(0, 0, width * devicePixelRatio, height * devicePixelRatio);
var shapeTransform = {
position: shape.position,
rotation: shape.rotation,
scale: shape.scale
};
shape.position = [
0,
0,
0
];
shape.rotation = 0;
shape.scale = [
1,
1
];
if (shape) {
shape.brush(ctx, false);
}
var ImageShape = require('./shape/Image');
var imgShape = new ImageShape({
id: id,
style: {
x: 0,
y: 0,
image: canvas
}
});
if (shapeTransform.position != null) {
imgShape.position = shape.position = shapeTransform.position;
}
if (shapeTransform.rotation != null) {
imgShape.rotation = shape.rotation = shapeTransform.rotation;
}
if (shapeTransform.scale != null) {
imgShape.scale = shape.scale = shapeTransform.scale;
}
return imgShape;
};
Painter.prototype._createShapeToImageProcessor = function () {
if (vmlCanvasManager) {
return doNothing;
}
var me = this;
return function (id, e, width, height) {
return me._shapeToImage(id, e, width, height, devicePixelRatio);
};
};
function createDom(id, type, painter) {
var newDom = document.createElement(type);
var width = painter._width;
var height = painter._height;
newDom.style.position = 'absolute';
newDom.style.left = 0;
newDom.style.top = 0;
newDom.style.width = width + 'px';
newDom.style.height = height + 'px';
newDom.setAttribute('width', width * devicePixelRatio);
newDom.setAttribute('height', height * devicePixelRatio);
newDom.setAttribute('data-zr-dom-id', id);
return newDom;
}
var Layer = function (id, painter) {
this.dom = createDom(id, 'canvas', painter);
this.dom.onselectstart = returnFalse;
this.dom.style['-webkit-user-select'] = 'none';
this.dom.style['user-select'] = 'none';
this.dom.style['-webkit-touch-callout'] = 'none';
vmlCanvasManager && vmlCanvasManager.initElement(this.dom);
this.domBack = null;
this.ctxBack = null;
this.painter = painter;
this.unusedCount = 0;
this.config = null;
this.dirty = true;
this.elCount = 0;
this.clearColor = 0;
this.motionBlur = false;
this.lastFrameAlpha = 0.7;
this.zoomable = false;
this.panable = false;
this.maxZoom = Infinity;
this.minZoom = 0;
Transformable.call(this);
};
Layer.prototype.initContext = function () {
this.ctx = this.dom.getContext('2d');
if (devicePixelRatio != 1) {
this.ctx.scale(devicePixelRatio, devicePixelRatio);
}
};
Layer.prototype.createBackBuffer = function () {
if (vmlCanvasManager) {
return;
}
this.domBack = createDom('back-' + this.id, 'canvas', this.painter);
this.ctxBack = this.domBack.getContext('2d');
if (devicePixelRatio != 1) {
this.ctxBack.scale(devicePixelRatio, devicePixelRatio);
}
};
Layer.prototype.resize = function (width, height) {
this.dom.style.width = width + 'px';
this.dom.style.height = height + 'px';
this.dom.setAttribute('width', width * devicePixelRatio);
this.dom.setAttribute('height', height * devicePixelRatio);
if (devicePixelRatio != 1) {
this.ctx.scale(devicePixelRatio, devicePixelRatio);
}
if (this.domBack) {
this.domBack.setAttribute('width', width * devicePixelRatio);
this.domBack.setAttribute('height', height * devicePixelRatio);
if (devicePixelRatio != 1) {
this.ctxBack.scale(devicePixelRatio, devicePixelRatio);
}
}
};
Layer.prototype.clear = function () {
var dom = this.dom;
var ctx = this.ctx;
var width = dom.width;
var height = dom.height;
var haveClearColor = this.clearColor && !vmlCanvasManager;
var haveMotionBLur = this.motionBlur && !vmlCanvasManager;
var lastFrameAlpha = this.lastFrameAlpha;
if (haveMotionBLur) {
if (!this.domBack) {
this.createBackBuffer();
}
this.ctxBack.globalCompositeOperation = 'copy';
this.ctxBack.drawImage(dom, 0, 0, width / devicePixelRatio, height / devicePixelRatio);
}
if (haveClearColor) {
ctx.save();
ctx.fillStyle = this.config.clearColor;
ctx.fillRect(0, 0, width / devicePixelRatio, height / devicePixelRatio);
ctx.restore();
} else {
ctx.clearRect(0, 0, width / devicePixelRatio, height / devicePixelRatio);
}
if (haveMotionBLur) {
var domBack = this.domBack;
ctx.save();
ctx.globalAlpha = lastFrameAlpha;
ctx.drawImage(domBack, 0, 0, width / devicePixelRatio, height / devicePixelRatio);
ctx.restore();
}
};
util.merge(Layer.prototype, Transformable.prototype);
return Painter;
});define('zrender/Storage', [
'require',
'./tool/util',
'./Group'
], function (require) {
'use strict';
var util = require('./tool/util');
var Group = require('./Group');
var defaultIterateOption = {
hover: false,
normal: 'down',
update: false
};
function shapeCompareFunc(a, b) {
if (a.zlevel == b.zlevel) {
if (a.z == b.z) {
return a.__renderidx - b.__renderidx;
}
return a.z - b.z;
}
return a.zlevel - b.zlevel;
}
var Storage = function () {
this._elements = {};
this._hoverElements = [];
this._roots = [];
this._shapeList = [];
this._shapeListOffset = 0;
};
Storage.prototype.iterShape = function (fun, option) {
if (!option) {
option = defaultIterateOption;
}
if (option.hover) {
for (var i = 0, l = this._hoverElements.length; i < l; i++) {
var el = this._hoverElements[i];
el.updateTransform();
if (fun(el)) {
return this;
}
}
}
if (option.update) {
this.updateShapeList();
}
switch (option.normal) {
case 'down':
var l = this._shapeList.length;
while (l--) {
if (fun(this._shapeList[l])) {
return this;
}
}
break;
default:
for (var i = 0, l = this._shapeList.length; i < l; i++) {
if (fun(this._shapeList[i])) {
return this;
}
}
break;
}
return this;
};
Storage.prototype.getHoverShapes = function (update) {
var hoverElements = [];
for (var i = 0, l = this._hoverElements.length; i < l; i++) {
hoverElements.push(this._hoverElements[i]);
var target = this._hoverElements[i].hoverConnect;
if (target) {
var shape;
target = target instanceof Array ? target : [target];
for (var j = 0, k = target.length; j < k; j++) {
shape = target[j].id ? target[j] : this.get(target[j]);
if (shape) {
hoverElements.push(shape);
}
}
}
}
hoverElements.sort(shapeCompareFunc);
if (update) {
for (var i = 0, l = hoverElements.length; i < l; i++) {
hoverElements[i].updateTransform();
}
}
return hoverElements;
};
Storage.prototype.getShapeList = function (update) {
if (update) {
this.updateShapeList();
}
return this._shapeList;
};
Storage.prototype.updateShapeList = function () {
this._shapeListOffset = 0;
for (var i = 0, len = this._roots.length; i < len; i++) {
var root = this._roots[i];
this._updateAndAddShape(root);
}
this._shapeList.length = this._shapeListOffset;
for (var i = 0, len = this._shapeList.length; i < len; i++) {
this._shapeList[i].__renderidx = i;
}
this._shapeList.sort(shapeCompareFunc);
};
Storage.prototype._updateAndAddShape = function (el, clipShapes) {
if (el.ignore) {
return;
}
el.updateTransform();
if (el.type == 'group') {
if (el.clipShape) {
el.clipShape.parent = el;
el.clipShape.updateTransform();
if (clipShapes) {
clipShapes = clipShapes.slice();
clipShapes.push(el.clipShape);
} else {
clipShapes = [el.clipShape];
}
}
for (var i = 0; i < el._children.length; i++) {
var child = el._children[i];
child.__dirty = el.__dirty || child.__dirty;
this._updateAndAddShape(child, clipShapes);
}
el.__dirty = false;
} else {
el.__clipShapes = clipShapes;
this._shapeList[this._shapeListOffset++] = el;
}
};
Storage.prototype.mod = function (elId, params) {
var el = this._elements[elId];
if (el) {
el.modSelf();
if (params) {
if (params.parent || params._storage || params.__startClip) {
var target = {};
for (var name in params) {
if (name == 'parent' || name == '_storage' || name == '__startClip') {
continue;
}
if (params.hasOwnProperty(name)) {
target[name] = params[name];
}
}
util.merge(el, target, true);
} else {
util.merge(el, params, true);
}
}
}
return this;
};
Storage.prototype.drift = function (shapeId, dx, dy) {
var shape = this._elements[shapeId];
if (shape) {
shape.needTransform = true;
if (shape.draggable === 'horizontal') {
dy = 0;
} else if (shape.draggable === 'vertical') {
dx = 0;
}
if (!shape.ondrift || shape.ondrift && !shape.ondrift(dx, dy)) {
shape.drift(dx, dy);
}
}
return this;
};
Storage.prototype.addHover = function (shape) {
shape.updateNeedTransform();
this._hoverElements.push(shape);
return this;
};
Storage.prototype.delHover = function () {
this._hoverElements = [];
return this;
};
Storage.prototype.hasHoverShape = function () {
return this._hoverElements.length > 0;
};
Storage.prototype.addRoot = function (el) {
if (el instanceof Group) {
el.addChildrenToStorage(this);
}
this.addToMap(el);
this._roots.push(el);
};
Storage.prototype.delRoot = function (elId) {
if (typeof elId == 'undefined') {
for (var i = 0; i < this._roots.length; i++) {
var root = this._roots[i];
if (root instanceof Group) {
root.delChildrenFromStorage(this);
}
}
this._elements = {};
this._hoverElements = [];
this._roots = [];
this._shapeList = [];
this._shapeListOffset = 0;
return;
}
if (elId instanceof Array) {
for (var i = 0, l = elId.length; i < l; i++) {
this.delRoot(elId[i]);
}
return;
}
var el;
if (typeof elId == 'string') {
el = this._elements[elId];
} else {
el = elId;
}
var idx = util.indexOf(this._roots, el);
if (idx >= 0) {
this.delFromMap(el.id);
this._roots.splice(idx, 1);
if (el instanceof Group) {
el.delChildrenFromStorage(this);
}
}
};
Storage.prototype.addToMap = function (el) {
if (el instanceof Group) {
el._storage = this;
}
el.modSelf();
this._elements[el.id] = el;
return this;
};
Storage.prototype.get = function (elId) {
return this._elements[elId];
};
Storage.prototype.delFromMap = function (elId) {
var el = this._elements[elId];
if (el) {
delete this._elements[elId];
if (el instanceof Group) {
el._storage = null;
}
}
return this;
};
Storage.prototype.dispose = function () {
this._elements = this._renderList = this._roots = this._hoverElements = null;
};
return Storage;
});define('zrender/animation/Animation', [
'require',
'./Clip',
'../tool/color',
'../tool/util',
'../tool/event'
], function (require) {
'use strict';
var Clip = require('./Clip');
var color = require('../tool/color');
var util = require('../tool/util');
var Dispatcher = require('../tool/event').Dispatcher;
var requestAnimationFrame = window.requestAnimationFrame || window.msRequestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (func) {
setTimeout(func, 16);
};
var arraySlice = Array.prototype.slice;
var Animation = function (options) {
options = options || {};
this.stage = options.stage || {};
this.onframe = options.onframe || function () {
};
this._clips = [];
this._running = false;
this._time = 0;
Dispatcher.call(this);
};
Animation.prototype = {
add: function (clip) {
this._clips.push(clip);
},
remove: function (clip) {
var idx = util.indexOf(this._clips, clip);
if (idx >= 0) {
this._clips.splice(idx, 1);
}
},
_update: function () {
var time = new Date().getTime();
var delta = time - this._time;
var clips = this._clips;
var len = clips.length;
var deferredEvents = [];
var deferredClips = [];
for (var i = 0; i < len; i++) {
var clip = clips[i];
var e = clip.step(time);
if (e) {
deferredEvents.push(e);
deferredClips.push(clip);
}
}
if (this.stage.update) {
this.stage.update();
}
for (var i = 0; i < len;) {
if (clips[i]._needsRemove) {
clips[i] = clips[len - 1];
clips.pop();
len--;
} else {
i++;
}
}
len = deferredEvents.length;
for (var i = 0; i < len; i++) {
deferredClips[i].fire(deferredEvents[i]);
}
this._time = time;
this.onframe(delta);
this.dispatch('frame', delta);
},
start: function () {
var self = this;
this._running = true;
function step() {
if (self._running) {
self._update();
requestAnimationFrame(step);
}
}
this._time = new Date().getTime();
requestAnimationFrame(step);
},
stop: function () {
this._running = false;
},
clear: function () {
this._clips = [];
},
animate: function (target, options) {
options = options || {};
var deferred = new Animator(target, options.loop, options.getter, options.setter);
deferred.animation = this;
return deferred;
},
constructor: Animation
};
util.merge(Animation.prototype, Dispatcher.prototype, true);
function _defaultGetter(target, key) {
return target[key];
}
function _defaultSetter(target, key, value) {
target[key] = value;
}
function _interpolateNumber(p0, p1, percent) {
return (p1 - p0) * percent + p0;
}
function _interpolateArray(p0, p1, percent, out, arrDim) {
var len = p0.length;
if (arrDim == 1) {
for (var i = 0; i < len; i++) {
out[i] = _interpolateNumber(p0[i], p1[i], percent);
}
} else {
var len2 = p0[0].length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len2; j++) {
out[i][j] = _interpolateNumber(p0[i][j], p1[i][j], percent);
}
}
}
}
function _isArrayLike(data) {
switch (typeof data) {
case 'undefined':
case 'string':
return false;
}
return typeof data.length !== 'undefined';
}
function _catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {
var len = p0.length;
if (arrDim == 1) {
for (var i = 0; i < len; i++) {
out[i] = _catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);
}
} else {
var len2 = p0[0].length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len2; j++) {
out[i][j] = _catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);
}
}
}
}
function _catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {
var v0 = (p2 - p0) * 0.5;
var v1 = (p3 - p1) * 0.5;
return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;
}
function _cloneValue(value) {
if (_isArrayLike(value)) {
var len = value.length;
if (_isArrayLike(value[0])) {
var ret = [];
for (var i = 0; i < len; i++) {
ret.push(arraySlice.call(value[i]));
}
return ret;
} else {
return arraySlice.call(value);
}
} else {
return value;
}
}
function rgba2String(rgba) {
rgba[0] = Math.floor(rgba[0]);
rgba[1] = Math.floor(rgba[1]);
rgba[2] = Math.floor(rgba[2]);
return 'rgba(' + rgba.join(',') + ')';
}
var Animator = function (target, loop, getter, setter) {
this._tracks = {};
this._target = target;
this._loop = loop || false;
this._getter = getter || _defaultGetter;
this._setter = setter || _defaultSetter;
this._clipCount = 0;
this._delay = 0;
this._doneList = [];
this._onframeList = [];
this._clipList = [];
};
Animator.prototype = {
when: function (time, props) {
for (var propName in props) {
if (!this._tracks[propName]) {
this._tracks[propName] = [];
if (time !== 0) {
this._tracks[propName].push({
time: 0,
value: _cloneValue(this._getter(this._target, propName))
});
}
}
this._tracks[propName].push({
time: parseInt(time, 10),
value: props[propName]
});
}
return this;
},
during: function (callback) {
this._onframeList.push(callback);
return this;
},
start: function (easing) {
var self = this;
var setter = this._setter;
var getter = this._getter;
var useSpline = easing === 'spline';
var ondestroy = function () {
self._clipCount--;
if (self._clipCount === 0) {
self._tracks = {};
var len = self._doneList.length;
for (var i = 0; i < len; i++) {
self._doneList[i].call(self);
}
}
};
var createTrackClip = function (keyframes, propName) {
var trackLen = keyframes.length;
if (!trackLen) {
return;
}
var firstVal = keyframes[0].value;
var isValueArray = _isArrayLike(firstVal);
var isValueColor = false;
var arrDim = isValueArray && _isArrayLike(firstVal[0]) ? 2 : 1;
keyframes.sort(function (a, b) {
return a.time - b.time;
});
var trackMaxTime;
if (trackLen) {
trackMaxTime = keyframes[trackLen - 1].time;
} else {
return;
}
var kfPercents = [];
var kfValues = [];
for (var i = 0; i < trackLen; i++) {
kfPercents.push(keyframes[i].time / trackMaxTime);
var value = keyframes[i].value;
if (typeof value == 'string') {
value = color.toArray(value);
if (value.length === 0) {
value[0] = value[1] = value[2] = 0;
value[3] = 1;
}
isValueColor = true;
}
kfValues.push(value);
}
var cacheKey = 0;
var cachePercent = 0;
var start;
var i;
var w;
var p0;
var p1;
var p2;
var p3;
if (isValueColor) {
var rgba = [
0,
0,
0,
0
];
}
var onframe = function (target, percent) {
if (percent < cachePercent) {
start = Math.min(cacheKey + 1, trackLen - 1);
for (i = start; i >= 0; i--) {
if (kfPercents[i] <= percent) {
break;
}
}
i = Math.min(i, trackLen - 2);
} else {
for (i = cacheKey; i < trackLen; i++) {
if (kfPercents[i] > percent) {
break;
}
}
i = Math.min(i - 1, trackLen - 2);
}
cacheKey = i;
cachePercent = percent;
var range = kfPercents[i + 1] - kfPercents[i];
if (range === 0) {
return;
} else {
w = (percent - kfPercents[i]) / range;
}
if (useSpline) {
p1 = kfValues[i];
p0 = kfValues[i === 0 ? i : i - 1];
p2 = kfValues[i > trackLen - 2 ? trackLen - 1 : i + 1];
p3 = kfValues[i > trackLen - 3 ? trackLen - 1 : i + 2];
if (isValueArray) {
_catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);
} else {
var value;
if (isValueColor) {
value = _catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);
value = rgba2String(rgba);
} else {
value = _catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);
}
setter(target, propName, value);
}
} else {
if (isValueArray) {
_interpolateArray(kfValues[i], kfValues[i + 1], w, getter(target, propName), arrDim);
} else {
var value;
if (isValueColor) {
_interpolateArray(kfValues[i], kfValues[i + 1], w, rgba, 1);
value = rgba2String(rgba);
} else {
value = _interpolateNumber(kfValues[i], kfValues[i + 1], w);
}
setter(target, propName, value);
}
}
for (i = 0; i < self._onframeList.length; i++) {
self._onframeList[i](target, percent);
}
};
var clip = new Clip({
target: self._target,
life: trackMaxTime,
loop: self._loop,
delay: self._delay,
onframe: onframe,
ondestroy: ondestroy
});
if (easing && easing !== 'spline') {
clip.easing = easing;
}
self._clipList.push(clip);
self._clipCount++;
self.animation.add(clip);
};
for (var propName in this._tracks) {
createTrackClip(this._tracks[propName], propName);
}
return this;
},
stop: function () {
for (var i = 0; i < this._clipList.length; i++) {
var clip = this._clipList[i];
this.animation.remove(clip);
}
this._clipList = [];
},
delay: function (time) {
this._delay = time;
return this;
},
done: function (cb) {
if (cb) {
this._doneList.push(cb);
}
return this;
}
};
return Animation;
});define('zrender/tool/vector', [], function () {
var ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;
var vector = {
create: function (x, y) {
var out = new ArrayCtor(2);
out[0] = x || 0;
out[1] = y || 0;
return out;
},
copy: function (out, v) {
out[0] = v[0];
out[1] = v[1];
return out;
},
set: function (out, a, b) {
out[0] = a;
out[1] = b;
return out;
},
add: function (out, v1, v2) {
out[0] = v1[0] + v2[0];
out[1] = v1[1] + v2[1];
return out;
},
scaleAndAdd: function (out, v1, v2, a) {
out[0] = v1[0] + v2[0] * a;
out[1] = v1[1] + v2[1] * a;
return out;
},
sub: function (out, v1, v2) {
out[0] = v1[0] - v2[0];
out[1] = v1[1] - v2[1];
return out;
},
len: function (v) {
return Math.sqrt(this.lenSquare(v));
},
lenSquare: function (v) {
return v[0] * v[0] + v[1] * v[1];
},
mul: function (out, v1, v2) {
out[0] = v1[0] * v2[0];
out[1] = v1[1] * v2[1];
return out;
},
div: function (out, v1, v2) {
out[0] = v1[0] / v2[0];
out[1] = v1[1] / v2[1];
return out;
},
dot: function (v1, v2) {
return v1[0] * v2[0] + v1[1] * v2[1];
},
scale: function (out, v, s) {
out[0] = v[0] * s;
out[1] = v[1] * s;
return out;
},
normalize: function (out, v) {
var d = vector.len(v);
if (d === 0) {
out[0] = 0;
out[1] = 0;
} else {
out[0] = v[0] / d;
out[1] = v[1] / d;
}
return out;
},
distance: function (v1, v2) {
return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));
},
distanceSquare: function (v1, v2) {
return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);
},
negate: function (out, v) {
out[0] = -v[0];
out[1] = -v[1];
return out;
},
lerp: function (out, v1, v2, t) {
out[0] = v1[0] + t * (v2[0] - v1[0]);
out[1] = v1[1] + t * (v2[1] - v1[1]);
return out;
},
applyTransform: function (out, v, m) {
var x = v[0];
var y = v[1];
out[0] = m[0] * x + m[2] * y + m[4];
out[1] = m[1] * x + m[3] * y + m[5];
return out;
},
min: function (out, v1, v2) {
out[0] = Math.min(v1[0], v2[0]);
out[1] = Math.min(v1[1], v2[1]);
return out;
},
max: function (out, v1, v2) {
out[0] = Math.max(v1[0], v2[0]);
out[1] = Math.max(v1[1], v2[1]);
return out;
}
};
vector.length = vector.len;
vector.lengthSquare = vector.lenSquare;
vector.dist = vector.distance;
vector.distSquare = vector.distanceSquare;
return vector;
});define('zrender/tool/matrix', [], function () {
var ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;
var matrix = {
create: function () {
var out = new ArrayCtor(6);
matrix.identity(out);
return out;
},
identity: function (out) {
out[0] = 1;
out[1] = 0;
out[2] = 0;
out[3] = 1;
out[4] = 0;
out[5] = 0;
return out;
},
copy: function (out, m) {
out[0] = m[0];
out[1] = m[1];
out[2] = m[2];
out[3] = m[3];
out[4] = m[4];
out[5] = m[5];
return out;
},
mul: function (out, m1, m2) {
out[0] = m1[0] * m2[0] + m1[2] * m2[1];
out[1] = m1[1] * m2[0] + m1[3] * m2[1];
out[2] = m1[0] * m2[2] + m1[2] * m2[3];
out[3] = m1[1] * m2[2] + m1[3] * m2[3];
out[4] = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];
out[5] = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];
return out;
},
translate: function (out, a, v) {
out[0] = a[0];
out[1] = a[1];
out[2] = a[2];
out[3] = a[3];
out[4] = a[4] + v[0];
out[5] = a[5] + v[1];
return out;
},
rotate: function (out, a, rad) {
var aa = a[0];
var ac = a[2];
var atx = a[4];
var ab = a[1];
var ad = a[3];
var aty = a[5];
var st = Math.sin(rad);
var ct = Math.cos(rad);
out[0] = aa * ct + ab * st;
out[1] = -aa * st + ab * ct;
out[2] = ac * ct + ad * st;
out[3] = -ac * st + ct * ad;
out[4] = ct * atx + st * aty;
out[5] = ct * aty - st * atx;
return out;
},
scale: function (out, a, v) {
var vx = v[0];
var vy = v[1];
out[0] = a[0] * vx;
out[1] = a[1] * vy;
out[2] = a[2] * vx;
out[3] = a[3] * vy;
out[4] = a[4] * vx;
out[5] = a[5] * vy;
return out;
},
invert: function (out, a) {
var aa = a[0];
var ac = a[2];
var atx = a[4];
var ab = a[1];
var ad = a[3];
var aty = a[5];
var det = aa * ad - ab * ac;
if (!det) {
return null;
}
det = 1 / det;
out[0] = ad * det;
out[1] = -ab * det;
out[2] = -ac * det;
out[3] = aa * det;
out[4] = (ac * aty - ad * atx) * det;
out[5] = (ab * atx - aa * aty) * det;
return out;
},
mulVector: function (out, a, v) {
var aa = a[0];
var ac = a[2];
var atx = a[4];
var ab = a[1];
var ad = a[3];
var aty = a[5];
out[0] = v[0] * aa + v[1] * ac + atx;
out[1] = v[0] * ab + v[1] * ad + aty;
return out;
}
};
return matrix;
});define('zrender/loadingEffect/Base', [
'require',
'../tool/util',
'../shape/Text',
'../shape/Rectangle'
], function (require) {
var util = require('../tool/util');
var TextShape = require('../shape/Text');
var RectangleShape = require('../shape/Rectangle');
var DEFAULT_TEXT = 'Loading...';
var DEFAULT_TEXT_FONT = 'normal 16px Arial';
function Base(options) {
this.setOptions(options);
}
Base.prototype.createTextShape = function (textStyle) {
return new TextShape({
highlightStyle: util.merge({
x: this.canvasWidth / 2,
y: this.canvasHeight / 2,
text: DEFAULT_TEXT,
textAlign: 'center',
textBaseline: 'middle',
textFont: DEFAULT_TEXT_FONT,
color: '#333',
brushType: 'fill'
}, textStyle, true)
});
};
Base.prototype.createBackgroundShape = function (color) {
return new RectangleShape({
highlightStyle: {
x: 0,
y: 0,
width: this.canvasWidth,
height: this.canvasHeight,
brushType: 'fill',
color: color
}
});
};
Base.prototype.start = function (painter) {
this.canvasWidth = painter._width;
this.canvasHeight = painter._height;
function addShapeHandle(param) {
painter.storage.addHover(param);
}
function refreshHandle() {
painter.refreshHover();
}
this.loadingTimer = this._start(addShapeHandle, refreshHandle);
};
Base.prototype._start = function () {
return setInterval(function () {
}, 10000);
};
Base.prototype.stop = function () {
clearInterval(this.loadingTimer);
};
Base.prototype.setOptions = function (options) {
this.options = options || {};
};
Base.prototype.adjust = function (value, region) {
if (value <= region[0]) {
value = region[0];
} else if (value >= region[1]) {
value = region[1];
}
return value;
};
Base.prototype.getLocation = function (loc, totalWidth, totalHeight) {
var x = loc.x != null ? loc.x : 'center';
switch (x) {
case 'center':
x = Math.floor((this.canvasWidth - totalWidth) / 2);
break;
case 'left':
x = 0;
break;
case 'right':
x = this.canvasWidth - totalWidth;
break;
}
var y = loc.y != null ? loc.y : 'center';
switch (y) {
case 'center':
y = Math.floor((this.canvasHeight - totalHeight) / 2);
break;
case 'top':
y = 0;
break;
case 'bottom':
y = this.canvasHeight - totalHeight;
break;
}
return {
x: x,
y: y,
width: totalWidth,
height: totalHeight
};
};
return Base;
});define('zrender/mixin/Transformable', [
'require',
'../tool/matrix',
'../tool/vector'
], function (require) {
'use strict';
var matrix = require('../tool/matrix');
var vector = require('../tool/vector');
var origin = [
0,
0
];
var EPSILON = 0.00005;
function isAroundZero(val) {
return val > -EPSILON && val < EPSILON;
}
function isNotAroundZero(val) {
return val > EPSILON || val < -EPSILON;
}
var Transformable = function () {
if (!this.position) {
this.position = [
0,
0
];
}
if (typeof this.rotation == 'undefined') {
this.rotation = [
0,
0,
0
];
}
if (!this.scale) {
this.scale = [
1,
1,
0,
0
];
}
this.needLocalTransform = false;
this.needTransform = false;
};
Transformable.prototype = {
constructor: Transformable,
updateNeedTransform: function () {
this.needLocalTransform = isNotAroundZero(this.rotation[0]) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);
},
updateTransform: function () {
this.updateNeedTransform();
if (this.parent) {
this.needTransform = this.needLocalTransform || this.parent.needTransform;
} else {
this.needTransform = this.needLocalTransform;
}
if (!this.needTransform) {
return;
}
var m = this.transform || matrix.create();
matrix.identity(m);
if (this.needLocalTransform) {
if (isNotAroundZero(this.scale[0]) || isNotAroundZero(this.scale[1])) {
origin[0] = -this.scale[2] || 0;
origin[1] = -this.scale[3] || 0;
var haveOrigin = isNotAroundZero(origin[0]) || isNotAroundZero(origin[1]);
if (haveOrigin) {
matrix.translate(m, m, origin);
}
matrix.scale(m, m, this.scale);
if (haveOrigin) {
origin[0] = -origin[0];
origin[1] = -origin[1];
matrix.translate(m, m, origin);
}
}
if (this.rotation instanceof Array) {
if (this.rotation[0] !== 0) {
origin[0] = -this.rotation[1] || 0;
origin[1] = -this.rotation[2] || 0;
var haveOrigin = isNotAroundZero(origin[0]) || isNotAroundZero(origin[1]);
if (haveOrigin) {
matrix.translate(m, m, origin);
}
matrix.rotate(m, m, this.rotation[0]);
if (haveOrigin) {
origin[0] = -origin[0];
origin[1] = -origin[1];
matrix.translate(m, m, origin);
}
}
} else {
if (this.rotation !== 0) {
matrix.rotate(m, m, this.rotation);
}
}
if (isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1])) {
matrix.translate(m, m, this.position);
}
}
this.transform = m;
if (this.parent && this.parent.needTransform) {
if (this.needLocalTransform) {
matrix.mul(this.transform, this.parent.transform, this.transform);
} else {
matrix.copy(this.transform, this.parent.transform);
}
}
},
setTransform: function (ctx) {
if (this.needTransform) {
var m = this.transform;
ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);
}
},
lookAt: function () {
var v = vector.create();
return function (target) {
if (!this.transform) {
this.transform = matrix.create();
}
var m = this.transform;
vector.sub(v, target, this.position);
if (isAroundZero(v[0]) && isAroundZero(v[1])) {
return;
}
vector.normalize(v, v);
m[2] = v[0] * this.scale[1];
m[3] = v[1] * this.scale[1];
m[0] = v[1] * this.scale[0];
m[1] = -v[0] * this.scale[0];
m[4] = this.position[0];
m[5] = this.position[1];
this.decomposeTransform();
};
}(),
decomposeTransform: function () {
if (!this.transform) {
return;
}
var m = this.transform;
var sx = m[0] * m[0] + m[1] * m[1];
var position = this.position;
var scale = this.scale;
var rotation = this.rotation;
if (isNotAroundZero(sx - 1)) {
sx = Math.sqrt(sx);
}
var sy = m[2] * m[2] + m[3] * m[3];
if (isNotAroundZero(sy - 1)) {
sy = Math.sqrt(sy);
}
position[0] = m[4];
position[1] = m[5];
scale[0] = sx;
scale[1] = sy;
scale[2] = scale[3] = 0;
rotation[0] = Math.atan2(-m[1] / sy, m[0] / sx);
rotation[1] = rotation[2] = 0;
}
};
return Transformable;
});define('zrender/shape/Text', [
'require',
'../tool/area',
'./Base',
'../tool/util'
], function (require) {
var area = require('../tool/area');
var Base = require('./Base');
var Text = function (options) {
Base.call(this, options);
};
Text.prototype = {
type: 'text',
brush: function (ctx, isHighlight) {
var style = this.style;
if (isHighlight) {
style = this.getHighlightStyle(style, this.highlightStyle || {});
}
if (typeof style.text == 'undefined' || style.text === false) {
return;
}
ctx.save();
this.doClip(ctx);
this.setContext(ctx, style);
this.setTransform(ctx);
if (style.textFont) {
ctx.font = style.textFont;
}
ctx.textAlign = style.textAlign || 'start';
ctx.textBaseline = style.textBaseline || 'middle';
var text = (style.text + '').split('\n');
var lineHeight = area.getTextHeight('国', style.textFont);
var rect = this.getRect(style);
var x = style.x;
var y;
if (style.textBaseline == 'top') {
y = rect.y;
} else if (style.textBaseline == 'bottom') {
y = rect.y + lineHeight;
} else {
y = rect.y + lineHeight / 2;
}
for (var i = 0, l = text.length; i < l; i++) {
if (style.maxWidth) {
switch (style.brushType) {
case 'fill':
ctx.fillText(text[i], x, y, style.maxWidth);
break;
case 'stroke':
ctx.strokeText(text[i], x, y, style.maxWidth);
break;
case 'both':
ctx.fillText(text[i], x, y, style.maxWidth);
ctx.strokeText(text[i], x, y, style.maxWidth);
break;
default:
ctx.fillText(text[i], x, y, style.maxWidth);
}
} else {
switch (style.brushType) {
case 'fill':
ctx.fillText(text[i], x, y);
break;
case 'stroke':
ctx.strokeText(text[i], x, y);
break;
case 'both':
ctx.fillText(text[i], x, y);
ctx.strokeText(text[i], x, y);
break;
default:
ctx.fillText(text[i], x, y);
}
}
y += lineHeight;
}
ctx.restore();
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var width = area.getTextWidth(style.text, style.textFont);
var height = area.getTextHeight(style.text, style.textFont);
var textX = style.x;
if (style.textAlign == 'end' || style.textAlign == 'right') {
textX -= width;
} else if (style.textAlign == 'center') {
textX -= width / 2;
}
var textY;
if (style.textBaseline == 'top') {
textY = style.y;
} else if (style.textBaseline == 'bottom') {
textY = style.y - height;
} else {
textY = style.y - height / 2;
}
style.__rect = {
x: textX,
y: textY,
width: width,
height: height
};
return style.__rect;
}
};
require('../tool/util').inherits(Text, Base);
return Text;
});define('zrender/shape/Rectangle', [
'require',
'./Base',
'../tool/util'
], function (require) {
var Base = require('./Base');
var Rectangle = function (options) {
Base.call(this, options);
};
Rectangle.prototype = {
type: 'rectangle',
_buildRadiusPath: function (ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
var r = style.radius;
var r1;
var r2;
var r3;
var r4;
if (typeof r === 'number') {
r1 = r2 = r3 = r4 = r;
} else if (r instanceof Array) {
if (r.length === 1) {
r1 = r2 = r3 = r4 = r[0];
} else if (r.length === 2) {
r1 = r3 = r[0];
r2 = r4 = r[1];
} else if (r.length === 3) {
r1 = r[0];
r2 = r4 = r[1];
r3 = r[2];
} else {
r1 = r[0];
r2 = r[1];
r3 = r[2];
r4 = r[3];
}
} else {
r1 = r2 = r3 = r4 = 0;
}
var total;
if (r1 + r2 > width) {
total = r1 + r2;
r1 *= width / total;
r2 *= width / total;
}
if (r3 + r4 > width) {
total = r3 + r4;
r3 *= width / total;
r4 *= width / total;
}
if (r2 + r3 > height) {
total = r2 + r3;
r2 *= height / total;
r3 *= height / total;
}
if (r1 + r4 > height) {
total = r1 + r4;
r1 *= height / total;
r4 *= height / total;
}
ctx.moveTo(x + r1, y);
ctx.lineTo(x + width - r2, y);
r2 !== 0 && ctx.quadraticCurveTo(x + width, y, x + width, y + r2);
ctx.lineTo(x + width, y + height - r3);
r3 !== 0 && ctx.quadraticCurveTo(x + width, y + height, x + width - r3, y + height);
ctx.lineTo(x + r4, y + height);
r4 !== 0 && ctx.quadraticCurveTo(x, y + height, x, y + height - r4);
ctx.lineTo(x, y + r1);
r1 !== 0 && ctx.quadraticCurveTo(x, y, x + r1, y);
},
buildPath: function (ctx, style) {
if (!style.radius) {
ctx.moveTo(style.x, style.y);
ctx.lineTo(style.x + style.width, style.y);
ctx.lineTo(style.x + style.width, style.y + style.height);
ctx.lineTo(style.x, style.y + style.height);
ctx.lineTo(style.x, style.y);
} else {
this._buildRadiusPath(ctx, style);
}
ctx.closePath();
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
style.__rect = {
x: Math.round(style.x - lineWidth / 2),
y: Math.round(style.y - lineWidth / 2),
width: style.width + lineWidth,
height: style.height + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Rectangle, Base);
return Rectangle;
});define('zrender/tool/area', [
'require',
'./util',
'./curve'
], function (require) {
'use strict';
var util = require('./util');
var curve = require('./curve');
var _ctx;
var _textWidthCache = {};
var _textHeightCache = {};
var _textWidthCacheCounter = 0;
var _textHeightCacheCounter = 0;
var TEXT_CACHE_MAX = 5000;
var PI2 = Math.PI * 2;
function normalizeRadian(angle) {
angle %= PI2;
if (angle < 0) {
angle += PI2;
}
return angle;
}
function isInside(shape, area, x, y) {
if (!area || !shape) {
return false;
}
var zoneType = shape.type;
_ctx = _ctx || util.getContext();
var _mathReturn = _mathMethod(shape, area, x, y);
if (typeof _mathReturn != 'undefined') {
return _mathReturn;
}
if (shape.buildPath && _ctx.isPointInPath) {
return _buildPathMethod(shape, _ctx, area, x, y);
}
switch (zoneType) {
case 'ellipse':
return true;
case 'trochoid':
var _r = area.location == 'out' ? area.r1 + area.r2 + area.d : area.r1 - area.r2 + area.d;
return isInsideCircle(area, x, y, _r);
case 'rose':
return isInsideCircle(area, x, y, area.maxr);
default:
return false;
}
}
function _mathMethod(shape, area, x, y) {
var zoneType = shape.type;
switch (zoneType) {
case 'bezier-curve':
if (typeof area.cpX2 === 'undefined') {
return isInsideQuadraticStroke(area.xStart, area.yStart, area.cpX1, area.cpY1, area.xEnd, area.yEnd, area.lineWidth, x, y);
}
return isInsideCubicStroke(area.xStart, area.yStart, area.cpX1, area.cpY1, area.cpX2, area.cpY2, area.xEnd, area.yEnd, area.lineWidth, x, y);
case 'line':
return isInsideLine(area.xStart, area.yStart, area.xEnd, area.yEnd, area.lineWidth, x, y);
case 'broken-line':
return isInsideBrokenLine(area.pointList, area.lineWidth, x, y);
case 'ring':
return isInsideRing(area.x, area.y, area.r0, area.r, x, y);
case 'circle':
return isInsideCircle(area.x, area.y, area.r, x, y);
case 'sector':
var startAngle = area.startAngle * Math.PI / 180;
var endAngle = area.endAngle * Math.PI / 180;
if (!area.clockWise) {
startAngle = -startAngle;
endAngle = -endAngle;
}
return isInsideSector(area.x, area.y, area.r0, area.r, startAngle, endAngle, !area.clockWise, x, y);
case 'path':
return isInsidePath(area.pathArray, Math.max(area.lineWidth, 5), area.brushType, x, y);
case 'polygon':
case 'star':
case 'isogon':
return isInsidePolygon(area.pointList, x, y);
case 'text':
var rect = area.__rect || shape.getRect(area);
return isInsideRect(rect.x, rect.y, rect.width, rect.height, x, y);
case 'rectangle':
case 'image':
return isInsideRect(area.x, area.y, area.width, area.height, x, y);
}
}
function _buildPathMethod(shape, context, area, x, y) {
context.beginPath();
shape.buildPath(context, area);
context.closePath();
return context.isPointInPath(x, y);
}
function isOutside(shape, area, x, y) {
return !isInside(shape, area, x, y);
}
function isInsideLine(x0, y0, x1, y1, lineWidth, x, y) {
if (lineWidth === 0) {
return false;
}
var _l = Math.max(lineWidth, 5);
var _a = 0;
var _b = x0;
if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {
return false;
}
if (x0 !== x1) {
_a = (y0 - y1) / (x0 - x1);
_b = (x0 * y1 - x1 * y0) / (x0 - x1);
} else {
return Math.abs(x - x0) <= _l / 2;
}
var tmp = _a * x - y + _b;
var _s = tmp * tmp / (_a * _a + 1);
return _s <= _l / 2 * _l / 2;
}
function isInsideCubicStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {
if (lineWidth === 0) {
return false;
}
var _l = Math.max(lineWidth, 5);
if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {
return false;
}
var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);
return d <= _l / 2;
}
function isInsideQuadraticStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {
if (lineWidth === 0) {
return false;
}
var _l = Math.max(lineWidth, 5);
if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {
return false;
}
var d = curve.quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);
return d <= _l / 2;
}
function isInsideArcStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {
if (lineWidth === 0) {
return false;
}
var _l = Math.max(lineWidth, 5);
x -= cx;
y -= cy;
var d = Math.sqrt(x * x + y * y);
if (d - _l > r || d + _l < r) {
return false;
}
if (Math.abs(startAngle - endAngle) >= PI2) {
return true;
}
if (anticlockwise) {
var tmp = startAngle;
startAngle = normalizeRadian(endAngle);
endAngle = normalizeRadian(tmp);
} else {
startAngle = normalizeRadian(startAngle);
endAngle = normalizeRadian(endAngle);
}
if (startAngle > endAngle) {
endAngle += PI2;
}
var angle = Math.atan2(y, x);
if (angle < 0) {
angle += PI2;
}
return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;
}
function isInsideBrokenLine(points, lineWidth, x, y) {
var lineWidth = Math.max(lineWidth, 10);
for (var i = 0, l = points.length - 1; i < l; i++) {
var x0 = points[i][0];
var y0 = points[i][1];
var x1 = points[i + 1][0];
var y1 = points[i + 1][1];
if (isInsideLine(x0, y0, x1, y1, lineWidth, x, y)) {
return true;
}
}
return false;
}
function isInsideRing(cx, cy, r0, r, x, y) {
var d = (x - cx) * (x - cx) + (y - cy) * (y - cy);
return d < r * r && d > r0 * r0;
}
function isInsideRect(x0, y0, width, height, x, y) {
return x >= x0 && x <= x0 + width && y >= y0 && y <= y0 + height;
}
function isInsideCircle(x0, y0, r, x, y) {
return (x - x0) * (x - x0) + (y - y0) * (y - y0) < r * r;
}
function isInsideSector(cx, cy, r0, r, startAngle, endAngle, anticlockwise, x, y) {
return isInsideArcStroke(cx, cy, (r0 + r) / 2, startAngle, endAngle, anticlockwise, r - r0, x, y);
}
function isInsidePolygon(points, x, y) {
var N = points.length;
var w = 0;
for (var i = 0, j = N - 1; i < N; i++) {
var x0 = points[j][0];
var y0 = points[j][1];
var x1 = points[i][0];
var y1 = points[i][1];
w += windingLine(x0, y0, x1, y1, x, y);
j = i;
}
return w !== 0;
}
function windingLine(x0, y0, x1, y1, x, y) {
if (y > y0 && y > y1 || y < y0 && y < y1) {
return 0;
}
if (y1 == y0) {
return 0;
}
var dir = y1 < y0 ? 1 : -1;
var t = (y - y0) / (y1 - y0);
var x_ = t * (x1 - x0) + x0;
return x_ > x ? dir : 0;
}
var roots = [
-1,
-1,
-1
];
var extrema = [
-1,
-1
];
function swapExtrema() {
var tmp = extrema[0];
extrema[0] = extrema[1];
extrema[1] = tmp;
}
function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {
if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {
return 0;
}
var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);
if (nRoots === 0) {
return 0;
} else {
var w = 0;
var nExtrema = -1;
var y0_, y1_;
for (var i = 0; i < nRoots; i++) {
var t = roots[i];
var x_ = curve.cubicAt(x0, x1, x2, x3, t);
if (x_ < x) {
continue;
}
if (nExtrema < 0) {
nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);
if (extrema[1] < extrema[0] && nExtrema > 1) {
swapExtrema();
}
y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);
if (nExtrema > 1) {
y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);
}
}
if (nExtrema == 2) {
if (t < extrema[0]) {
w += y0_ < y0 ? 1 : -1;
} else if (t < extrema[1]) {
w += y1_ < y0_ ? 1 : -1;
} else {
w += y3 < y1_ ? 1 : -1;
}
} else {
if (t < extrema[0]) {
w += y0_ < y0 ? 1 : -1;
} else {
w += y3 < y0_ ? 1 : -1;
}
}
}
return w;
}
}
function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {
if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {
return 0;
}
var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);
if (nRoots === 0) {
return 0;
} else {
var t = curve.quadraticExtremum(y0, y1, y2);
if (t >= 0 && t <= 1) {
var w = 0;
var y_ = curve.quadraticAt(y0, y1, y2, t);
for (var i = 0; i < nRoots; i++) {
var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);
if (x_ > x) {
continue;
}
if (roots[i] < t) {
w += y_ < y0 ? 1 : -1;
} else {
w += y2 < y_ ? 1 : -1;
}
}
return w;
} else {
var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);
if (x_ > x) {
return 0;
}
return y2 < y0 ? 1 : -1;
}
}
}
function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {
y -= cy;
if (y > r || y < -r) {
return 0;
}
var tmp = Math.sqrt(r * r - y * y);
roots[0] = -tmp;
roots[1] = tmp;
if (Math.abs(startAngle - endAngle) >= PI2) {
startAngle = 0;
endAngle = PI2;
var dir = anticlockwise ? 1 : -1;
if (x >= roots[0] + cx && x <= roots[1] + cx) {
return dir;
} else {
return 0;
}
}
if (anticlockwise) {
var tmp = startAngle;
startAngle = normalizeRadian(endAngle);
endAngle = normalizeRadian(tmp);
} else {
startAngle = normalizeRadian(startAngle);
endAngle = normalizeRadian(endAngle);
}
if (startAngle > endAngle) {
endAngle += PI2;
}
var w = 0;
for (var i = 0; i < 2; i++) {
var x_ = roots[i];
if (x_ + cx > x) {
var angle = Math.atan2(y, x_);
var dir = anticlockwise ? 1 : -1;
if (angle < 0) {
angle = PI2 + angle;
}
if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {
if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {
dir = -dir;
}
w += dir;
}
}
}
return w;
}
function isInsidePath(pathArray, lineWidth, brushType, x, y) {
var w = 0;
var xi = 0;
var yi = 0;
var x0 = 0;
var y0 = 0;
var beginSubpath = true;
var firstCmd = true;
brushType = brushType || 'fill';
var hasStroke = brushType === 'stroke' || brushType === 'both';
var hasFill = brushType === 'fill' || brushType === 'both';
for (var i = 0; i < pathArray.length; i++) {
var seg = pathArray[i];
var p = seg.points;
if (beginSubpath || seg.command === 'M') {
if (i > 0) {
if (hasFill) {
w += windingLine(xi, yi, x0, y0, x, y);
}
if (w !== 0) {
return true;
}
}
x0 = p[p.length - 2];
y0 = p[p.length - 1];
beginSubpath = false;
if (firstCmd && seg.command !== 'A') {
firstCmd = false;
xi = x0;
yi = y0;
}
}
switch (seg.command) {
case 'M':
xi = p[0];
yi = p[1];
break;
case 'L':
if (hasStroke) {
if (isInsideLine(xi, yi, p[0], p[1], lineWidth, x, y)) {
return true;
}
}
if (hasFill) {
w += windingLine(xi, yi, p[0], p[1], x, y);
}
xi = p[0];
yi = p[1];
break;
case 'C':
if (hasStroke) {
if (isInsideCubicStroke(xi, yi, p[0], p[1], p[2], p[3], p[4], p[5], lineWidth, x, y)) {
return true;
}
}
if (hasFill) {
w += windingCubic(xi, yi, p[0], p[1], p[2], p[3], p[4], p[5], x, y);
}
xi = p[4];
yi = p[5];
break;
case 'Q':
if (hasStroke) {
if (isInsideQuadraticStroke(xi, yi, p[0], p[1], p[2], p[3], lineWidth, x, y)) {
return true;
}
}
if (hasFill) {
w += windingQuadratic(xi, yi, p[0], p[1], p[2], p[3], x, y);
}
xi = p[2];
yi = p[3];
break;
case 'A':
var cx = p[0];
var cy = p[1];
var rx = p[2];
var ry = p[3];
var theta = p[4];
var dTheta = p[5];
var x1 = Math.cos(theta) * rx + cx;
var y1 = Math.sin(theta) * ry + cy;
if (!firstCmd) {
w += windingLine(xi, yi, x1, y1);
} else {
firstCmd = false;
x0 = x1;
y0 = y1;
}
var _x = (x - cx) * ry / rx + cx;
if (hasStroke) {
if (isInsideArcStroke(cx, cy, ry, theta, theta + dTheta, 1 - p[7], lineWidth, _x, y)) {
return true;
}
}
if (hasFill) {
w += windingArc(cx, cy, ry, theta, theta + dTheta, 1 - p[7], _x, y);
}
xi = Math.cos(theta + dTheta) * rx + cx;
yi = Math.sin(theta + dTheta) * ry + cy;
break;
case 'z':
if (hasStroke) {
if (isInsideLine(xi, yi, x0, y0, lineWidth, x, y)) {
return true;
}
}
beginSubpath = true;
break;
}
}
if (hasFill) {
w += windingLine(xi, yi, x0, y0, x, y);
}
return w !== 0;
}
function getTextWidth(text, textFont) {
var key = text + ':' + textFont;
if (_textWidthCache[key]) {
return _textWidthCache[key];
}
_ctx = _ctx || util.getContext();
_ctx.save();
if (textFont) {
_ctx.font = textFont;
}
text = (text + '').split('\n');
var width = 0;
for (var i = 0, l = text.length; i < l; i++) {
width = Math.max(_ctx.measureText(text[i]).width, width);
}
_ctx.restore();
_textWidthCache[key] = width;
if (++_textWidthCacheCounter > TEXT_CACHE_MAX) {
_textWidthCacheCounter = 0;
_textWidthCache = {};
}
return width;
}
function getTextHeight(text, textFont) {
var key = text + ':' + textFont;
if (_textHeightCache[key]) {
return _textHeightCache[key];
}
_ctx = _ctx || util.getContext();
_ctx.save();
if (textFont) {
_ctx.font = textFont;
}
text = (text + '').split('\n');
var height = (_ctx.measureText('国').width + 2) * text.length;
_ctx.restore();
_textHeightCache[key] = height;
if (++_textHeightCacheCounter > TEXT_CACHE_MAX) {
_textHeightCacheCounter = 0;
_textHeightCache = {};
}
return height;
}
return {
isInside: isInside,
isOutside: isOutside,
getTextWidth: getTextWidth,
getTextHeight: getTextHeight,
isInsidePath: isInsidePath,
isInsidePolygon: isInsidePolygon,
isInsideSector: isInsideSector,
isInsideCircle: isInsideCircle,
isInsideLine: isInsideLine,
isInsideRect: isInsideRect,
isInsideBrokenLine: isInsideBrokenLine,
isInsideCubicStroke: isInsideCubicStroke,
isInsideQuadraticStroke: isInsideQuadraticStroke
};
});define('zrender/shape/Base', [
'require',
'../tool/matrix',
'../tool/guid',
'../tool/util',
'../tool/log',
'../mixin/Transformable',
'../mixin/Eventful',
'../tool/area',
'../tool/color'
], function (require) {
var vmlCanvasManager = window['G_vmlCanvasManager'];
var matrix = require('../tool/matrix');
var guid = require('../tool/guid');
var util = require('../tool/util');
var log = require('../tool/log');
var Transformable = require('../mixin/Transformable');
var Eventful = require('../mixin/Eventful');
function _fillText(ctx, text, x, y, textFont, textAlign, textBaseline) {
if (textFont) {
ctx.font = textFont;
}
ctx.textAlign = textAlign;
ctx.textBaseline = textBaseline;
var rect = _getTextRect(text, x, y, textFont, textAlign, textBaseline);
text = (text + '').split('\n');
var lineHeight = require('../tool/area').getTextHeight('国', textFont);
switch (textBaseline) {
case 'top':
y = rect.y;
break;
case 'bottom':
y = rect.y + lineHeight;
break;
default:
y = rect.y + lineHeight / 2;
}
for (var i = 0, l = text.length; i < l; i++) {
ctx.fillText(text[i], x, y);
y += lineHeight;
}
}
function _getTextRect(text, x, y, textFont, textAlign, textBaseline) {
var area = require('../tool/area');
var width = area.getTextWidth(text, textFont);
var lineHeight = area.getTextHeight('国', textFont);
text = (text + '').split('\n');
switch (textAlign) {
case 'end':
case 'right':
x -= width;
break;
case 'center':
x -= width / 2;
break;
}
switch (textBaseline) {
case 'top':
break;
case 'bottom':
y -= lineHeight * text.length;
break;
default:
y -= lineHeight * text.length / 2;
}
return {
x: x,
y: y,
width: width,
height: lineHeight * text.length
};
}
var Base = function (options) {
options = options || {};
this.id = options.id || guid();
for (var key in options) {
this[key] = options[key];
}
this.style = this.style || {};
this.highlightStyle = this.highlightStyle || null;
this.parent = null;
this.__dirty = true;
this.__clipShapes = [];
Transformable.call(this);
Eventful.call(this);
};
Base.prototype.invisible = false;
Base.prototype.ignore = false;
Base.prototype.zlevel = 0;
Base.prototype.draggable = false;
Base.prototype.clickable = false;
Base.prototype.hoverable = true;
Base.prototype.z = 0;
Base.prototype.brush = function (ctx, isHighlight) {
var style = this.beforeBrush(ctx, isHighlight);
ctx.beginPath();
this.buildPath(ctx, style);
switch (style.brushType) {
case 'both':
ctx.fill();
case 'stroke':
style.lineWidth > 0 && ctx.stroke();
break;
default:
ctx.fill();
}
this.drawText(ctx, style, this.style);
this.afterBrush(ctx);
};
Base.prototype.beforeBrush = function (ctx, isHighlight) {
var style = this.style;
if (this.brushTypeOnly) {
style.brushType = this.brushTypeOnly;
}
if (isHighlight) {
style = this.getHighlightStyle(style, this.highlightStyle || {}, this.brushTypeOnly);
}
if (this.brushTypeOnly == 'stroke') {
style.strokeColor = style.strokeColor || style.color;
}
ctx.save();
this.doClip(ctx);
this.setContext(ctx, style);
this.setTransform(ctx);
return style;
};
Base.prototype.afterBrush = function (ctx) {
ctx.restore();
};
var STYLE_CTX_MAP = [
[
'color',
'fillStyle'
],
[
'strokeColor',
'strokeStyle'
],
[
'opacity',
'globalAlpha'
],
[
'lineCap',
'lineCap'
],
[
'lineJoin',
'lineJoin'
],
[
'miterLimit',
'miterLimit'
],
[
'lineWidth',
'lineWidth'
],
[
'shadowBlur',
'shadowBlur'
],
[
'shadowColor',
'shadowColor'
],
[
'shadowOffsetX',
'shadowOffsetX'
],
[
'shadowOffsetY',
'shadowOffsetY'
]
];
Base.prototype.setContext = function (ctx, style) {
for (var i = 0, len = STYLE_CTX_MAP.length; i < len; i++) {
var styleProp = STYLE_CTX_MAP[i][0];
var styleValue = style[styleProp];
var ctxProp = STYLE_CTX_MAP[i][1];
if (typeof styleValue != 'undefined') {
ctx[ctxProp] = styleValue;
}
}
};
var clipShapeInvTransform = matrix.create();
Base.prototype.doClip = function (ctx) {
if (this.__clipShapes && !vmlCanvasManager) {
for (var i = 0; i < this.__clipShapes.length; i++) {
var clipShape = this.__clipShapes[i];
if (clipShape.needTransform) {
var m = clipShape.transform;
matrix.invert(clipShapeInvTransform, m);
ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);
}
ctx.beginPath();
clipShape.buildPath(ctx, clipShape.style);
ctx.clip();
if (clipShape.needTransform) {
var m = clipShapeInvTransform;
ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);
}
}
}
};
Base.prototype.getHighlightStyle = function (style, highlightStyle, brushTypeOnly) {
var newStyle = {};
for (var k in style) {
newStyle[k] = style[k];
}
var color = require('../tool/color');
var highlightColor = color.getHighlightColor();
if (style.brushType != 'stroke') {
newStyle.strokeColor = highlightColor;
newStyle.lineWidth = (style.lineWidth || 1) + this.getHighlightZoom();
newStyle.brushType = 'both';
} else {
if (brushTypeOnly != 'stroke') {
newStyle.strokeColor = highlightColor;
newStyle.lineWidth = (style.lineWidth || 1) + this.getHighlightZoom();
} else {
newStyle.strokeColor = highlightStyle.strokeColor || color.mix(style.strokeColor, color.toRGB(highlightColor));
}
}
for (var k in highlightStyle) {
if (typeof highlightStyle[k] != 'undefined') {
newStyle[k] = highlightStyle[k];
}
}
return newStyle;
};
Base.prototype.getHighlightZoom = function () {
return this.type != 'text' ? 6 : 2;
};
Base.prototype.drift = function (dx, dy) {
this.position[0] += dx;
this.position[1] += dy;
};
Base.prototype.getTansform = function () {
var invTransform = [];
return function (x, y) {
var originPos = [
x,
y
];
if (this.needTransform && this.transform) {
matrix.invert(invTransform, this.transform);
matrix.mulVector(originPos, invTransform, [
x,
y,
1
]);
if (x == originPos[0] && y == originPos[1]) {
this.updateNeedTransform();
}
}
return originPos;
};
}();
Base.prototype.buildPath = function (ctx, style) {
log('buildPath not implemented in ' + this.type);
};
Base.prototype.getRect = function (style) {
log('getRect not implemented in ' + this.type);
};
Base.prototype.isCover = function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.style.__rect;
if (!rect) {
rect = this.style.__rect = this.getRect(this.style);
}
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return require('../tool/area').isInside(this, this.style, x, y);
}
return false;
};
Base.prototype.drawText = function (ctx, style, normalStyle) {
if (typeof style.text == 'undefined' || style.text === false) {
return;
}
var textColor = style.textColor || style.color || style.strokeColor;
ctx.fillStyle = textColor;
var dd = 10;
var al;
var bl;
var tx;
var ty;
var textPosition = style.textPosition || this.textPosition || 'top';
switch (textPosition) {
case 'inside':
case 'top':
case 'bottom':
case 'left':
case 'right':
if (this.getRect) {
var rect = (normalStyle || style).__rect || this.getRect(normalStyle || style);
switch (textPosition) {
case 'inside':
tx = rect.x + rect.width / 2;
ty = rect.y + rect.height / 2;
al = 'center';
bl = 'middle';
if (style.brushType != 'stroke' && textColor == style.color) {
ctx.fillStyle = '#fff';
}
break;
case 'left':
tx = rect.x - dd;
ty = rect.y + rect.height / 2;
al = 'end';
bl = 'middle';
break;
case 'right':
tx = rect.x + rect.width + dd;
ty = rect.y + rect.height / 2;
al = 'start';
bl = 'middle';
break;
case 'top':
tx = rect.x + rect.width / 2;
ty = rect.y - dd;
al = 'center';
bl = 'bottom';
break;
case 'bottom':
tx = rect.x + rect.width / 2;
ty = rect.y + rect.height + dd;
al = 'center';
bl = 'top';
break;
}
}
break;
case 'start':
case 'end':
var xStart;
var xEnd;
var yStart;
var yEnd;
if (typeof style.pointList != 'undefined') {
var pointList = style.pointList;
if (pointList.length < 2) {
return;
}
var length = pointList.length;
switch (textPosition) {
case 'start':
xStart = pointList[0][0];
xEnd = pointList[1][0];
yStart = pointList[0][1];
yEnd = pointList[1][1];
break;
case 'end':
xStart = pointList[length - 2][0];
xEnd = pointList[length - 1][0];
yStart = pointList[length - 2][1];
yEnd = pointList[length - 1][1];
break;
}
} else {
xStart = style.xStart || 0;
xEnd = style.xEnd || 0;
yStart = style.yStart || 0;
yEnd = style.yEnd || 0;
}
switch (textPosition) {
case 'start':
al = xStart < xEnd ? 'end' : 'start';
bl = yStart < yEnd ? 'bottom' : 'top';
tx = xStart;
ty = yStart;
break;
case 'end':
al = xStart < xEnd ? 'start' : 'end';
bl = yStart < yEnd ? 'top' : 'bottom';
tx = xEnd;
ty = yEnd;
break;
}
dd -= 4;
if (xStart != xEnd) {
tx -= al == 'end' ? dd : -dd;
} else {
al = 'center';
}
if (yStart != yEnd) {
ty -= bl == 'bottom' ? dd : -dd;
} else {
bl = 'middle';
}
break;
case 'specific':
tx = style.textX || 0;
ty = style.textY || 0;
al = 'start';
bl = 'middle';
break;
}
if (tx != null && ty != null) {
_fillText(ctx, style.text, tx, ty, style.textFont, style.textAlign || al, style.textBaseline || bl);
}
};
Base.prototype.modSelf = function () {
this.__dirty = true;
if (this.style) {
this.style.__rect = null;
}
if (this.highlightStyle) {
this.highlightStyle.__rect = null;
}
};
Base.prototype.isSilent = function () {
return !(this.hoverable || this.draggable || this.clickable || this.onmousemove || this.onmouseover || this.onmouseout || this.onmousedown || this.onmouseup || this.onclick || this.ondragenter || this.ondragover || this.ondragleave || this.ondrop);
};
util.merge(Base.prototype, Transformable.prototype, true);
util.merge(Base.prototype, Eventful.prototype, true);
return Base;
});define('zrender/tool/curve', [
'require',
'./vector'
], function (require) {
var vector = require('./vector');
'use strict';
var EPSILON = 0.0001;
var THREE_SQRT = Math.sqrt(3);
var ONE_THIRD = 1 / 3;
var _v0 = vector.create();
var _v1 = vector.create();
var _v2 = vector.create();
function isAroundZero(val) {
return val > -EPSILON && val < EPSILON;
}
function isNotAroundZero(val) {
return val > EPSILON || val < -EPSILON;
}
function cubicAt(p0, p1, p2, p3, t) {
var onet = 1 - t;
return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);
}
function cubicDerivativeAt(p0, p1, p2, p3, t) {
var onet = 1 - t;
return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);
}
function cubicRootAt(p0, p1, p2, p3, val, roots) {
var a = p3 + 3 * (p1 - p2) - p0;
var b = 3 * (p2 - p1 * 2 + p0);
var c = 3 * (p1 - p0);
var d = p0 - val;
var A = b * b - 3 * a * c;
var B = b * c - 9 * a * d;
var C = c * c - 3 * b * d;
var n = 0;
if (isAroundZero(A) && isAroundZero(B)) {
if (isAroundZero(b)) {
roots[0] = 0;
} else {
var t1 = -c / b;
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
}
} else {
var disc = B * B - 4 * A * C;
if (isAroundZero(disc)) {
var K = B / A;
var t1 = -b / a + K;
var t2 = -K / 2;
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
roots[n++] = t2;
}
} else if (disc > 0) {
var discSqrt = Math.sqrt(disc);
var Y1 = A * b + 1.5 * a * (-B + discSqrt);
var Y2 = A * b + 1.5 * a * (-B - discSqrt);
if (Y1 < 0) {
Y1 = -Math.pow(-Y1, ONE_THIRD);
} else {
Y1 = Math.pow(Y1, ONE_THIRD);
}
if (Y2 < 0) {
Y2 = -Math.pow(-Y2, ONE_THIRD);
} else {
Y2 = Math.pow(Y2, ONE_THIRD);
}
var t1 = (-b - (Y1 + Y2)) / (3 * a);
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
} else {
var T = (2 * A * b - 3 * a * B) / (2 * Math.sqrt(A * A * A));
var theta = Math.acos(T) / 3;
var ASqrt = Math.sqrt(A);
var tmp = Math.cos(theta);
var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);
var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);
var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
roots[n++] = t2;
}
if (t3 >= 0 && t3 <= 1) {
roots[n++] = t3;
}
}
}
return n;
}
function cubicExtrema(p0, p1, p2, p3, extrema) {
var b = 6 * p2 - 12 * p1 + 6 * p0;
var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;
var c = 3 * p1 - 3 * p0;
var n = 0;
if (isAroundZero(a)) {
if (isNotAroundZero(b)) {
var t1 = -c / b;
if (t1 >= 0 && t1 <= 1) {
extrema[n++] = t1;
}
}
} else {
var disc = b * b - 4 * a * c;
if (isAroundZero(disc)) {
extrema[0] = -b / (2 * a);
} else if (disc > 0) {
var discSqrt = Math.sqrt(disc);
var t1 = (-b + discSqrt) / (2 * a);
var t2 = (-b - discSqrt) / (2 * a);
if (t1 >= 0 && t1 <= 1) {
extrema[n++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
extrema[n++] = t2;
}
}
}
return n;
}
function cubicSubdivide(p0, p1, p2, p3, t, out) {
var p01 = (p1 - p0) * t + p0;
var p12 = (p2 - p1) * t + p1;
var p23 = (p3 - p2) * t + p2;
var p012 = (p12 - p01) * t + p01;
var p123 = (p23 - p12) * t + p12;
var p0123 = (p123 - p012) * t + p012;
out[0] = p0;
out[1] = p01;
out[2] = p012;
out[3] = p0123;
out[4] = p0123;
out[5] = p123;
out[6] = p23;
out[7] = p3;
}
function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {
var t;
var interval = 0.005;
var d = Infinity;
_v0[0] = x;
_v0[1] = y;
for (var _t = 0; _t < 1; _t += 0.05) {
_v1[0] = cubicAt(x0, x1, x2, x3, _t);
_v1[1] = cubicAt(y0, y1, y2, y3, _t);
var d1 = vector.distSquare(_v0, _v1);
if (d1 < d) {
t = _t;
d = d1;
}
}
d = Infinity;
for (var i = 0; i < 32; i++) {
if (interval < EPSILON) {
break;
}
var prev = t - interval;
var next = t + interval;
_v1[0] = cubicAt(x0, x1, x2, x3, prev);
_v1[1] = cubicAt(y0, y1, y2, y3, prev);
var d1 = vector.distSquare(_v1, _v0);
if (prev >= 0 && d1 < d) {
t = prev;
d = d1;
} else {
_v2[0] = cubicAt(x0, x1, x2, x3, next);
_v2[1] = cubicAt(y0, y1, y2, y3, next);
var d2 = vector.distSquare(_v2, _v0);
if (next <= 1 && d2 < d) {
t = next;
d = d2;
} else {
interval *= 0.5;
}
}
}
if (out) {
out[0] = cubicAt(x0, x1, x2, x3, t);
out[1] = cubicAt(y0, y1, y2, y3, t);
}
return Math.sqrt(d);
}
function quadraticAt(p0, p1, p2, t) {
var onet = 1 - t;
return onet * (onet * p0 + 2 * t * p1) + t * t * p2;
}
function quadraticDerivativeAt(p0, p1, p2, t) {
return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));
}
function quadraticRootAt(p0, p1, p2, val, roots) {
var a = p0 - 2 * p1 + p2;
var b = 2 * (p1 - p0);
var c = p0 - val;
var n = 0;
if (isAroundZero(a)) {
if (isNotAroundZero(b)) {
var t1 = -c / b;
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
}
} else {
var disc = b * b - 4 * a * c;
if (isAroundZero(disc)) {
var t1 = -b / (2 * a);
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
} else if (disc > 0) {
var discSqrt = Math.sqrt(disc);
var t1 = (-b + discSqrt) / (2 * a);
var t2 = (-b - discSqrt) / (2 * a);
if (t1 >= 0 && t1 <= 1) {
roots[n++] = t1;
}
if (t2 >= 0 && t2 <= 1) {
roots[n++] = t2;
}
}
}
return n;
}
function quadraticExtremum(p0, p1, p2) {
var divider = p0 + p2 - 2 * p1;
if (divider === 0) {
return 0.5;
} else {
return (p0 - p1) / divider;
}
}
function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {
var t;
var interval = 0.005;
var d = Infinity;
_v0[0] = x;
_v0[1] = y;
for (var _t = 0; _t < 1; _t += 0.05) {
_v1[0] = quadraticAt(x0, x1, x2, _t);
_v1[1] = quadraticAt(y0, y1, y2, _t);
var d1 = vector.distSquare(_v0, _v1);
if (d1 < d) {
t = _t;
d = d1;
}
}
d = Infinity;
for (var i = 0; i < 32; i++) {
if (interval < EPSILON) {
break;
}
var prev = t - interval;
var next = t + interval;
_v1[0] = quadraticAt(x0, x1, x2, prev);
_v1[1] = quadraticAt(y0, y1, y2, prev);
var d1 = vector.distSquare(_v1, _v0);
if (prev >= 0 && d1 < d) {
t = prev;
d = d1;
} else {
_v2[0] = quadraticAt(x0, x1, x2, next);
_v2[1] = quadraticAt(y0, y1, y2, next);
var d2 = vector.distSquare(_v2, _v0);
if (next <= 1 && d2 < d) {
t = next;
d = d2;
} else {
interval *= 0.5;
}
}
}
if (out) {
out[0] = quadraticAt(x0, x1, x2, t);
out[1] = quadraticAt(y0, y1, y2, t);
}
return Math.sqrt(d);
}
return {
cubicAt: cubicAt,
cubicDerivativeAt: cubicDerivativeAt,
cubicRootAt: cubicRootAt,
cubicExtrema: cubicExtrema,
cubicSubdivide: cubicSubdivide,
cubicProjectPoint: cubicProjectPoint,
quadraticAt: quadraticAt,
quadraticDerivativeAt: quadraticDerivativeAt,
quadraticRootAt: quadraticRootAt,
quadraticExtremum: quadraticExtremum,
quadraticProjectPoint: quadraticProjectPoint
};
});define('zrender/Group', [
'require',
'./tool/guid',
'./tool/util',
'./mixin/Transformable',
'./mixin/Eventful'
], function (require) {
var guid = require('./tool/guid');
var util = require('./tool/util');
var Transformable = require('./mixin/Transformable');
var Eventful = require('./mixin/Eventful');
var Group = function (options) {
options = options || {};
this.id = options.id || guid();
for (var key in options) {
this[key] = options[key];
}
this.type = 'group';
this.clipShape = null;
this._children = [];
this._storage = null;
this.__dirty = true;
Transformable.call(this);
Eventful.call(this);
};
Group.prototype.ignore = false;
Group.prototype.children = function () {
return this._children.slice();
};
Group.prototype.childAt = function (idx) {
return this._children[idx];
};
Group.prototype.addChild = function (child) {
if (child == this) {
return;
}
if (child.parent == this) {
return;
}
if (child.parent) {
child.parent.removeChild(child);
}
this._children.push(child);
child.parent = this;
if (this._storage && this._storage !== child._storage) {
this._storage.addToMap(child);
if (child instanceof Group) {
child.addChildrenToStorage(this._storage);
}
}
};
Group.prototype.removeChild = function (child) {
var idx = util.indexOf(this._children, child);
this._children.splice(idx, 1);
child.parent = null;
if (this._storage) {
this._storage.delFromMap(child.id);
if (child instanceof Group) {
child.delChildrenFromStorage(this._storage);
}
}
};
Group.prototype.eachChild = function (cb, context) {
var haveContext = !!context;
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
if (haveContext) {
cb.call(context, child);
} else {
cb(child);
}
}
};
Group.prototype.traverse = function (cb, context) {
var haveContext = !!context;
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
if (haveContext) {
cb.call(context, child);
} else {
cb(child);
}
if (child.type === 'group') {
child.traverse(cb, context);
}
}
};
Group.prototype.addChildrenToStorage = function (storage) {
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
storage.addToMap(child);
if (child.type === 'group') {
child.addChildrenToStorage(storage);
}
}
};
Group.prototype.delChildrenFromStorage = function (storage) {
for (var i = 0; i < this._children.length; i++) {
var child = this._children[i];
storage.delFromMap(child.id);
if (child.type === 'group') {
child.delChildrenFromStorage(storage);
}
}
};
Group.prototype.modSelf = function () {
this.__dirty = true;
};
util.merge(Group.prototype, Transformable.prototype, true);
util.merge(Group.prototype, Eventful.prototype, true);
return Group;
});define('zrender/animation/Clip', [
'require',
'./easing'
], function (require) {
var Easing = require('./easing');
function Clip(options) {
this._targetPool = options.target || {};
if (!(this._targetPool instanceof Array)) {
this._targetPool = [this._targetPool];
}
this._life = options.life || 1000;
this._delay = options.delay || 0;
this._startTime = new Date().getTime() + this._delay;
this._endTime = this._startTime + this._life * 1000;
this.loop = typeof options.loop == 'undefined' ? false : options.loop;
this.gap = options.gap || 0;
this.easing = options.easing || 'Linear';
this.onframe = options.onframe;
this.ondestroy = options.ondestroy;
this.onrestart = options.onrestart;
}
Clip.prototype = {
step: function (time) {
var percent = (time - this._startTime) / this._life;
if (percent < 0) {
return;
}
percent = Math.min(percent, 1);
var easingFunc = typeof this.easing == 'string' ? Easing[this.easing] : this.easing;
var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;
this.fire('frame', schedule);
if (percent == 1) {
if (this.loop) {
this.restart();
return 'restart';
}
this._needsRemove = true;
return 'destroy';
}
return null;
},
restart: function () {
var time = new Date().getTime();
var remainder = (time - this._startTime) % this._life;
this._startTime = new Date().getTime() - remainder + this.gap;
this._needsRemove = false;
},
fire: function (eventType, arg) {
for (var i = 0, len = this._targetPool.length; i < len; i++) {
if (this['on' + eventType]) {
this['on' + eventType](this._targetPool[i], arg);
}
}
},
constructor: Clip
};
return Clip;
});define('zrender/animation/easing', [], function () {
var easing = {
Linear: function (k) {
return k;
},
QuadraticIn: function (k) {
return k * k;
},
QuadraticOut: function (k) {
return k * (2 - k);
},
QuadraticInOut: function (k) {
if ((k *= 2) < 1) {
return 0.5 * k * k;
}
return -0.5 * (--k * (k - 2) - 1);
},
CubicIn: function (k) {
return k * k * k;
},
CubicOut: function (k) {
return --k * k * k + 1;
},
CubicInOut: function (k) {
if ((k *= 2) < 1) {
return 0.5 * k * k * k;
}
return 0.5 * ((k -= 2) * k * k + 2);
},
QuarticIn: function (k) {
return k * k * k * k;
},
QuarticOut: function (k) {
return 1 - --k * k * k * k;
},
QuarticInOut: function (k) {
if ((k *= 2) < 1) {
return 0.5 * k * k * k * k;
}
return -0.5 * ((k -= 2) * k * k * k - 2);
},
QuinticIn: function (k) {
return k * k * k * k * k;
},
QuinticOut: function (k) {
return --k * k * k * k * k + 1;
},
QuinticInOut: function (k) {
if ((k *= 2) < 1) {
return 0.5 * k * k * k * k * k;
}
return 0.5 * ((k -= 2) * k * k * k * k + 2);
},
SinusoidalIn: function (k) {
return 1 - Math.cos(k * Math.PI / 2);
},
SinusoidalOut: function (k) {
return Math.sin(k * Math.PI / 2);
},
SinusoidalInOut: function (k) {
return 0.5 * (1 - Math.cos(Math.PI * k));
},
ExponentialIn: function (k) {
return k === 0 ? 0 : Math.pow(1024, k - 1);
},
ExponentialOut: function (k) {
return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);
},
ExponentialInOut: function (k) {
if (k === 0) {
return 0;
}
if (k === 1) {
return 1;
}
if ((k *= 2) < 1) {
return 0.5 * Math.pow(1024, k - 1);
}
return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);
},
CircularIn: function (k) {
return 1 - Math.sqrt(1 - k * k);
},
CircularOut: function (k) {
return Math.sqrt(1 - --k * k);
},
CircularInOut: function (k) {
if ((k *= 2) < 1) {
return -0.5 * (Math.sqrt(1 - k * k) - 1);
}
return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);
},
ElasticIn: function (k) {
var s;
var a = 0.1;
var p = 0.4;
if (k === 0) {
return 0;
}
if (k === 1) {
return 1;
}
if (!a || a < 1) {
a = 1;
s = p / 4;
} else {
s = p * Math.asin(1 / a) / (2 * Math.PI);
}
return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
},
ElasticOut: function (k) {
var s;
var a = 0.1;
var p = 0.4;
if (k === 0) {
return 0;
}
if (k === 1) {
return 1;
}
if (!a || a < 1) {
a = 1;
s = p / 4;
} else {
s = p * Math.asin(1 / a) / (2 * Math.PI);
}
return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;
},
ElasticInOut: function (k) {
var s;
var a = 0.1;
var p = 0.4;
if (k === 0) {
return 0;
}
if (k === 1) {
return 1;
}
if (!a || a < 1) {
a = 1;
s = p / 4;
} else {
s = p * Math.asin(1 / a) / (2 * Math.PI);
}
if ((k *= 2) < 1) {
return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
}
return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;
},
BackIn: function (k) {
var s = 1.70158;
return k * k * ((s + 1) * k - s);
},
BackOut: function (k) {
var s = 1.70158;
return --k * k * ((s + 1) * k + s) + 1;
},
BackInOut: function (k) {
var s = 1.70158 * 1.525;
if ((k *= 2) < 1) {
return 0.5 * (k * k * ((s + 1) * k - s));
}
return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
},
BounceIn: function (k) {
return 1 - easing.BounceOut(1 - k);
},
BounceOut: function (k) {
if (k < 1 / 2.75) {
return 7.5625 * k * k;
} else if (k < 2 / 2.75) {
return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;
} else if (k < 2.5 / 2.75) {
return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;
} else {
return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;
}
},
BounceInOut: function (k) {
if (k < 0.5) {
return easing.BounceIn(k * 2) * 0.5;
}
return easing.BounceOut(k * 2 - 1) * 0.5 + 0.5;
}
};
return easing;
});define('echarts/component/base', [
'require',
'../config',
'../util/ecData',
'../util/ecQuery',
'../util/number',
'zrender/tool/util',
'zrender/tool/env'
], function (require) {
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var ecQuery = require('../util/ecQuery');
var number = require('../util/number');
var zrUtil = require('zrender/tool/util');
function Base(ecTheme, messageCenter, zr, option, myChart) {
this.ecTheme = ecTheme;
this.messageCenter = messageCenter;
this.zr = zr;
this.option = option;
this.series = option.series;
this.myChart = myChart;
this.component = myChart.component;
this._zlevelBase = this.getZlevelBase();
this.shapeList = [];
this.effectList = [];
var self = this;
self._onlegendhoverlink = function (param) {
if (self.legendHoverLink) {
var targetName = param.target;
var name;
for (var i = self.shapeList.length - 1; i >= 0; i--) {
name = self.type == ecConfig.CHART_TYPE_PIE || self.type == ecConfig.CHART_TYPE_FUNNEL ? ecData.get(self.shapeList[i], 'name') : (ecData.get(self.shapeList[i], 'series') || {}).name;
if (name == targetName && !self.shapeList[i].invisible) {
self.zr.addHoverShape(self.shapeList[i]);
}
}
}
};
messageCenter && messageCenter.bind(ecConfig.EVENT.LEGEND_HOVERLINK, this._onlegendhoverlink);
}
Base.prototype = {
canvasSupported: require('zrender/tool/env').canvasSupported,
getZlevelBase: function (contentType) {
contentType = contentType || this.type + '';
switch (contentType) {
case ecConfig.COMPONENT_TYPE_GRID:
case ecConfig.COMPONENT_TYPE_AXIS_CATEGORY:
case ecConfig.COMPONENT_TYPE_AXIS_VALUE:
case ecConfig.COMPONENT_TYPE_POLAR:
return 0;
case ecConfig.CHART_TYPE_LINE:
case ecConfig.CHART_TYPE_BAR:
case ecConfig.CHART_TYPE_SCATTER:
case ecConfig.CHART_TYPE_PIE:
case ecConfig.CHART_TYPE_RADAR:
case ecConfig.CHART_TYPE_MAP:
case ecConfig.CHART_TYPE_K:
case ecConfig.CHART_TYPE_CHORD:
case ecConfig.CHART_TYPE_GUAGE:
case ecConfig.CHART_TYPE_FUNNEL:
case ecConfig.CHART_TYPE_EVENTRIVER:
return 2;
case ecConfig.COMPONENT_TYPE_LEGEND:
case ecConfig.COMPONENT_TYPE_DATARANGE:
case ecConfig.COMPONENT_TYPE_DATAZOOM:
case ecConfig.COMPONENT_TYPE_TIMELINE:
case ecConfig.COMPONENT_TYPE_ROAMCONTROLLER:
return 4;
case ecConfig.CHART_TYPE_ISLAND:
return 5;
case ecConfig.COMPONENT_TYPE_TOOLBOX:
case ecConfig.COMPONENT_TYPE_TITLE:
return 6;
case ecConfig.COMPONENT_TYPE_TOOLTIP:
return 8;
default:
return 0;
}
},
reformOption: function (opt) {
return zrUtil.merge(opt || {}, zrUtil.clone(this.ecTheme[this.type] || {}));
},
reformCssArray: function (p) {
if (p instanceof Array) {
switch (p.length + '') {
case '4':
return p;
case '3':
return [
p[0],
p[1],
p[2],
p[1]
];
case '2':
return [
p[0],
p[1],
p[0],
p[1]
];
case '1':
return [
p[0],
p[0],
p[0],
p[0]
];
case '0':
return [
0,
0,
0,
0
];
}
} else {
return [
p,
p,
p,
p
];
}
},
getShapeById: function (id) {
for (var i = 0, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i].id === id) {
return this.shapeList[i];
}
}
return null;
},
getFont: function (textStyle) {
var finalTextStyle = zrUtil.merge(zrUtil.clone(textStyle) || {}, this.ecTheme.textStyle);
return finalTextStyle.fontStyle + ' ' + finalTextStyle.fontWeight + ' ' + finalTextStyle.fontSize + 'px ' + finalTextStyle.fontFamily;
},
getItemStyleColor: function (itemColor, seriesIndex, dataIndex, data) {
return typeof itemColor === 'function' ? itemColor.call(this.myChart, {
seriesIndex: seriesIndex,
series: this.series[seriesIndex],
dataIndex: dataIndex,
data: data
}) : itemColor;
},
subPixelOptimize: function (position, lineWidth) {
if (lineWidth % 2 === 1) {
position = Math.floor(position) + 0.5;
} else {
position = Math.round(position);
}
return position;
},
resize: function () {
this.refresh && this.refresh();
this.clearEffectShape && this.clearEffectShape(true);
var self = this;
setTimeout(function () {
self.animationEffect && self.animationEffect();
}, 200);
},
clear: function () {
this.clearEffectShape && this.clearEffectShape();
this.zr && this.zr.delShape(this.shapeList);
this.shapeList = [];
},
dispose: function () {
this.onbeforDispose && this.onbeforDispose();
this.clear();
this.shapeList = null;
this.effectList = null;
this.messageCenter && this.messageCenter.unbind(ecConfig.EVENT.LEGEND_HOVERLINK, this._onlegendhoverlink);
this.onafterDispose && this.onafterDispose();
},
query: ecQuery.query,
deepQuery: ecQuery.deepQuery,
deepMerge: ecQuery.deepMerge,
parsePercent: number.parsePercent,
parseCenter: number.parseCenter,
parseRadius: number.parseRadius,
numAddCommas: number.addCommas
};
return Base;
});define('echarts/chart/base', [
'require',
'zrender/shape/Image',
'../util/shape/Icon',
'../util/shape/MarkLine',
'../util/shape/Symbol',
'../config',
'../util/ecData',
'../util/ecAnimation',
'../util/ecEffect',
'../util/accMath',
'zrender/tool/util',
'zrender/tool/area'
], function (require) {
var ImageShape = require('zrender/shape/Image');
var IconShape = require('../util/shape/Icon');
var MarkLineShape = require('../util/shape/MarkLine');
var SymbolShape = require('../util/shape/Symbol');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var ecAnimation = require('../util/ecAnimation');
var ecEffect = require('../util/ecEffect');
var accMath = require('../util/accMath');
var zrUtil = require('zrender/tool/util');
var zrArea = require('zrender/tool/area');
function Base() {
var self = this;
this.selectedMap = {};
this.lastShapeList = [];
this.shapeHandler = {
onclick: function () {
self.isClick = true;
},
ondragover: function (param) {
var calculableShape = param.target;
calculableShape.highlightStyle = calculableShape.highlightStyle || {};
var highlightStyle = calculableShape.highlightStyle;
var brushType = highlightStyle.brushTyep;
var strokeColor = highlightStyle.strokeColor;
var lineWidth = highlightStyle.lineWidth;
highlightStyle.brushType = 'stroke';
highlightStyle.strokeColor = self.ecTheme.calculableColor;
highlightStyle.lineWidth = calculableShape.type === 'icon' ? 30 : 10;
self.zr.addHoverShape(calculableShape);
setTimeout(function () {
if (calculableShape.highlightStyle) {
calculableShape.highlightStyle.brushType = brushType;
calculableShape.highlightStyle.strokeColor = strokeColor;
calculableShape.highlightStyle.lineWidth = lineWidth;
}
}, 20);
},
ondrop: function (param) {
if (ecData.get(param.dragged, 'data') != null) {
self.isDrop = true;
}
},
ondragend: function () {
self.isDragend = true;
}
};
}
Base.prototype = {
setCalculable: function (shape) {
shape.dragEnableTime = this.ecTheme.DRAG_ENABLE_TIME;
shape.ondragover = this.shapeHandler.ondragover;
shape.ondragend = this.shapeHandler.ondragend;
shape.ondrop = this.shapeHandler.ondrop;
return shape;
},
ondrop: function (param, status) {
if (!this.isDrop || !param.target || status.dragIn) {
return;
}
var target = param.target;
var dragged = param.dragged;
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var series = this.series;
var data;
var legend = this.component.legend;
if (dataIndex === -1) {
if (ecData.get(dragged, 'seriesIndex') == seriesIndex) {
status.dragOut = status.dragIn = status.needRefresh = true;
this.isDrop = false;
return;
}
data = {
value: ecData.get(dragged, 'value'),
name: ecData.get(dragged, 'name')
};
if (this.type === ecConfig.CHART_TYPE_PIE && data.value < 0) {
data.value = 0;
}
var hasFind = false;
var sData = series[seriesIndex].data;
for (var i = 0, l = sData.length; i < l; i++) {
if (sData[i].name === data.name && sData[i].value === '-') {
series[seriesIndex].data[i].value = data.value;
hasFind = true;
}
}
!hasFind && series[seriesIndex].data.push(data);
legend && legend.add(data.name, dragged.style.color || dragged.style.strokeColor);
} else {
data = this.option.series[seriesIndex].data[dataIndex] || '-';
if (data.value != null) {
if (data.value != '-') {
this.option.series[seriesIndex].data[dataIndex].value = accMath.accAdd(this.option.series[seriesIndex].data[dataIndex].value, ecData.get(dragged, 'value'));
} else {
this.option.series[seriesIndex].data[dataIndex].value = ecData.get(dragged, 'value');
}
if (this.type === ecConfig.CHART_TYPE_FUNNEL || this.type === ecConfig.CHART_TYPE_PIE) {
legend && legend.getRelatedAmount(data.name) === 1 && this.component.legend.del(data.name);
data.name += this.option.nameConnector + ecData.get(dragged, 'name');
legend && legend.add(data.name, dragged.style.color || dragged.style.strokeColor);
}
} else {
if (data != '-') {
this.option.series[seriesIndex].data[dataIndex] = accMath.accAdd(this.option.series[seriesIndex].data[dataIndex], ecData.get(dragged, 'value'));
} else {
this.option.series[seriesIndex].data[dataIndex] = ecData.get(dragged, 'value');
}
}
}
status.dragIn = status.dragIn || true;
this.isDrop = false;
var self = this;
setTimeout(function () {
self.zr.trigger('mousemove', param.event);
}, 300);
return;
},
ondragend: function (param, status) {
if (!this.isDragend || !param.target || status.dragOut) {
return;
}
var target = param.target;
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var series = this.series;
if (series[seriesIndex].data[dataIndex].value != null) {
series[seriesIndex].data[dataIndex].value = '-';
var name = series[seriesIndex].data[dataIndex].name;
if (this.component.legend && this.component.legend.getRelatedAmount(name) === 0) {
this.component.legend.del(name);
}
} else {
series[seriesIndex].data[dataIndex] = '-';
}
status.dragOut = true;
status.needRefresh = true;
this.isDragend = false;
return;
},
onlegendSelected: function (param, status) {
var legendSelected = param.selected;
for (var itemName in this.selectedMap) {
if (this.selectedMap[itemName] != legendSelected[itemName]) {
status.needRefresh = true;
}
this.selectedMap[itemName] = legendSelected[itemName];
}
return;
},
_bulidPosition: function () {
this._symbol = this.option.symbolList;
this._sIndex2ShapeMap = {};
this._sIndex2ColorMap = {};
this.selectedMap = {};
this.xMarkMap = {};
var series = this.series;
var _position2sIndexMap = {
top: [],
bottom: [],
left: [],
right: [],
other: []
};
var xAxisIndex;
var yAxisIndex;
var xAxis;
var yAxis;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === this.type) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
xAxisIndex = series[i].xAxisIndex;
yAxisIndex = series[i].yAxisIndex;
xAxis = this.component.xAxis.getAxis(xAxisIndex);
yAxis = this.component.yAxis.getAxis(yAxisIndex);
if (xAxis.type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY) {
_position2sIndexMap[xAxis.getPosition()].push(i);
} else if (yAxis.type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY) {
_position2sIndexMap[yAxis.getPosition()].push(i);
} else {
_position2sIndexMap.other.push(i);
}
}
}
for (var position in _position2sIndexMap) {
if (_position2sIndexMap[position].length > 0) {
this._buildSinglePosition(position, _position2sIndexMap[position]);
}
}
this.addShapeList();
},
_buildSinglePosition: function (position, seriesArray) {
var mapData = this._mapData(seriesArray);
var locationMap = mapData.locationMap;
var maxDataLength = mapData.maxDataLength;
if (maxDataLength === 0 || locationMap.length === 0) {
return;
}
switch (position) {
case 'bottom':
case 'top':
this._buildHorizontal(seriesArray, maxDataLength, locationMap, this.xMarkMap);
break;
case 'left':
case 'right':
this._buildVertical(seriesArray, maxDataLength, locationMap, this.xMarkMap);
break;
case 'other':
this._buildOther(seriesArray, maxDataLength, locationMap, this.xMarkMap);
break;
}
for (var i = 0, l = seriesArray.length; i < l; i++) {
this.buildMark(seriesArray[i]);
}
},
_mapData: function (seriesArray) {
var series = this.series;
var serie;
var dataIndex = 0;
var stackMap = {};
var magicStackKey = '__kener__stack__';
var stackKey;
var serieName;
var legend = this.component.legend;
var locationMap = [];
var maxDataLength = 0;
var iconShape;
for (var i = 0, l = seriesArray.length; i < l; i++) {
serie = series[seriesArray[i]];
serieName = serie.name;
this._sIndex2ShapeMap[seriesArray[i]] = this._sIndex2ShapeMap[seriesArray[i]] || this.query(serie, 'symbol') || this._symbol[i % this._symbol.length];
if (legend) {
this.selectedMap[serieName] = legend.isSelected(serieName);
this._sIndex2ColorMap[seriesArray[i]] = legend.getColor(serieName);
iconShape = legend.getItemShape(serieName);
if (iconShape) {
if (this.type == ecConfig.CHART_TYPE_LINE) {
iconShape.style.iconType = 'legendLineIcon';
iconShape.style.symbol = this._sIndex2ShapeMap[seriesArray[i]];
} else if (serie.itemStyle.normal.barBorderWidth > 0) {
iconShape.style.x += 1;
iconShape.style.y += 1;
iconShape.style.width -= 2;
iconShape.style.height -= 2;
iconShape.style.strokeColor = iconShape.highlightStyle.strokeColor = serie.itemStyle.normal.barBorderColor;
iconShape.highlightStyle.lineWidth = 3;
iconShape.style.brushType = 'both';
}
legend.setItemShape(serieName, iconShape);
}
} else {
this.selectedMap[serieName] = true;
this._sIndex2ColorMap[seriesArray[i]] = this.zr.getColor(seriesArray[i]);
}
if (this.selectedMap[serieName]) {
stackKey = serie.stack || magicStackKey + seriesArray[i];
if (stackMap[stackKey] == null) {
stackMap[stackKey] = dataIndex;
locationMap[dataIndex] = [seriesArray[i]];
dataIndex++;
} else {
locationMap[stackMap[stackKey]].push(seriesArray[i]);
}
}
maxDataLength = Math.max(maxDataLength, serie.data.length);
}
return {
locationMap: locationMap,
maxDataLength: maxDataLength
};
},
_calculMarkMapXY: function (xMarkMap, locationMap, xy) {
var series = this.series;
for (var j = 0, k = locationMap.length; j < k; j++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
var seriesIndex = locationMap[j][m];
var valueIndex = xy == 'xy' ? 0 : '';
if (xy.indexOf('x') != '-1') {
if (xMarkMap[seriesIndex]['counter' + valueIndex] > 0) {
xMarkMap[seriesIndex]['average' + valueIndex] = (xMarkMap[seriesIndex]['sum' + valueIndex] / xMarkMap[seriesIndex]['counter' + valueIndex]).toFixed(2) - 0;
}
var x = this.component.xAxis.getAxis(series[seriesIndex].xAxisIndex || 0).getCoord(xMarkMap[seriesIndex]['average' + valueIndex]);
xMarkMap[seriesIndex]['averageLine' + valueIndex] = [
[
x,
this.component.grid.getYend()
],
[
x,
this.component.grid.getY()
]
];
xMarkMap[seriesIndex]['minLine' + valueIndex] = [
[
xMarkMap[seriesIndex]['minX' + valueIndex],
this.component.grid.getYend()
],
[
xMarkMap[seriesIndex]['minX' + valueIndex],
this.component.grid.getY()
]
];
xMarkMap[seriesIndex]['maxLine' + valueIndex] = [
[
xMarkMap[seriesIndex]['maxX' + valueIndex],
this.component.grid.getYend()
],
[
xMarkMap[seriesIndex]['maxX' + valueIndex],
this.component.grid.getY()
]
];
xMarkMap[seriesIndex].isHorizontal = false;
}
valueIndex = xy == 'xy' ? 1 : '';
if (xy.indexOf('y') != '-1') {
if (xMarkMap[seriesIndex]['counter' + valueIndex] > 0) {
xMarkMap[seriesIndex]['average' + valueIndex] = (xMarkMap[seriesIndex]['sum' + valueIndex] / xMarkMap[seriesIndex]['counter' + valueIndex]).toFixed(2) - 0;
}
var y = this.component.yAxis.getAxis(series[seriesIndex].yAxisIndex || 0).getCoord(xMarkMap[seriesIndex]['average' + valueIndex]);
xMarkMap[seriesIndex]['averageLine' + valueIndex] = [
[
this.component.grid.getX(),
y
],
[
this.component.grid.getXend(),
y
]
];
xMarkMap[seriesIndex]['minLine' + valueIndex] = [
[
this.component.grid.getX(),
xMarkMap[seriesIndex]['minY' + valueIndex]
],
[
this.component.grid.getXend(),
xMarkMap[seriesIndex]['minY' + valueIndex]
]
];
xMarkMap[seriesIndex]['maxLine' + valueIndex] = [
[
this.component.grid.getX(),
xMarkMap[seriesIndex]['maxY' + valueIndex]
],
[
this.component.grid.getXend(),
xMarkMap[seriesIndex]['maxY' + valueIndex]
]
];
xMarkMap[seriesIndex].isHorizontal = true;
}
}
}
},
addLabel: function (tarShape, serie, data, name, orient) {
var queryTarget = [
data,
serie
];
var nLabel = this.deepMerge(queryTarget, 'itemStyle.normal.label');
var eLabel = this.deepMerge(queryTarget, 'itemStyle.emphasis.label');
var nTextStyle = nLabel.textStyle || {};
var eTextStyle = eLabel.textStyle || {};
if (nLabel.show) {
tarShape.style.text = this._getLabelText(serie, data, name, 'normal');
tarShape.style.textPosition = nLabel.position == null ? orient === 'horizontal' ? 'right' : 'top' : nLabel.position;
tarShape.style.textColor = nTextStyle.color;
tarShape.style.textFont = this.getFont(nTextStyle);
}
if (eLabel.show) {
tarShape.highlightStyle.text = this._getLabelText(serie, data, name, 'emphasis');
tarShape.highlightStyle.textPosition = nLabel.show ? tarShape.style.textPosition : eLabel.position == null ? orient === 'horizontal' ? 'right' : 'top' : eLabel.position;
tarShape.highlightStyle.textColor = eTextStyle.color;
tarShape.highlightStyle.textFont = this.getFont(eTextStyle);
}
return tarShape;
},
_getLabelText: function (serie, data, name, status) {
var formatter = this.deepQuery([
data,
serie
], 'itemStyle.' + status + '.label.formatter');
if (!formatter && status === 'emphasis') {
formatter = this.deepQuery([
data,
serie
], 'itemStyle.normal.label.formatter');
}
var value = data != null ? data.value != null ? data.value : data : '-';
if (formatter) {
if (typeof formatter === 'function') {
return formatter.call(this.myChart, serie.name, name, value);
} else if (typeof formatter === 'string') {
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}');
formatter = formatter.replace('{a0}', serie.name).replace('{b0}', name).replace('{c0}', this.numAddCommas(value));
return formatter;
}
} else {
return this.numAddCommas(value);
}
},
buildMark: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (this.selectedMap[serie.name]) {
serie.markPoint && this._buildMarkPoint(seriesIndex);
serie.markLine && this._buildMarkLine(seriesIndex);
}
},
_buildMarkPoint: function (seriesIndex) {
var attachStyle = (this.markAttachStyle || {})[seriesIndex];
var serie = this.series[seriesIndex];
var _zlevelBase = this.getZlevelBase();
var mpData;
var pos;
var markPoint = zrUtil.clone(serie.markPoint);
for (var i = 0, l = markPoint.data.length; i < l; i++) {
mpData = markPoint.data[i];
pos = this.getMarkCoord(seriesIndex, mpData);
markPoint.data[i].x = mpData.x != null ? mpData.x : pos[0];
markPoint.data[i].y = mpData.y != null ? mpData.y : pos[1];
if (mpData.type && (mpData.type === 'max' || mpData.type === 'min')) {
markPoint.data[i].value = pos[3];
markPoint.data[i].name = mpData.name || mpData.type;
markPoint.data[i].symbolSize = markPoint.data[i].symbolSize || zrArea.getTextWidth(pos[3], this.getFont()) / 2 + 5;
}
}
var shapeList = this._markPoint(seriesIndex, markPoint);
for (var i = 0, l = shapeList.length; i < l; i++) {
shapeList[i].zlevel = _zlevelBase + 1;
for (var key in attachStyle) {
shapeList[i][key] = zrUtil.clone(attachStyle[key]);
}
this.shapeList.push(shapeList[i]);
}
if (this.type === ecConfig.CHART_TYPE_FORCE || this.type === ecConfig.CHART_TYPE_CHORD) {
for (var i = 0, l = shapeList.length; i < l; i++) {
this.zr.addShape(shapeList[i]);
}
}
},
_buildMarkLine: function (seriesIndex) {
var attachStyle = (this.markAttachStyle || {})[seriesIndex];
var serie = this.series[seriesIndex];
var _zlevelBase = this.getZlevelBase();
var mlData;
var pos;
var markLine = zrUtil.clone(serie.markLine);
for (var i = 0, l = markLine.data.length; i < l; i++) {
mlData = markLine.data[i];
if (mlData.type && (mlData.type === 'max' || mlData.type === 'min' || mlData.type === 'average')) {
pos = this.getMarkCoord(seriesIndex, mlData);
markLine.data[i] = [
zrUtil.clone(mlData),
{}
];
markLine.data[i][0].name = mlData.name || mlData.type;
markLine.data[i][0].value = pos[3];
pos = pos[2];
mlData = [
{},
{}
];
} else {
pos = [
this.getMarkCoord(seriesIndex, mlData[0]),
this.getMarkCoord(seriesIndex, mlData[1])
];
}
if (pos == null || pos[0] == null || pos[1] == null) {
continue;
}
markLine.data[i][0].x = mlData[0].x != null ? mlData[0].x : pos[0][0];
markLine.data[i][0].y = mlData[0].y != null ? mlData[0].y : pos[0][1];
markLine.data[i][1].x = mlData[1].x != null ? mlData[1].x : pos[1][0];
markLine.data[i][1].y = mlData[1].y != null ? mlData[1].y : pos[1][1];
}
var shapeList = this._markLine(seriesIndex, markLine);
for (var i = 0, l = shapeList.length; i < l; i++) {
shapeList[i].zlevel = _zlevelBase + 1;
for (var key in attachStyle) {
shapeList[i][key] = zrUtil.clone(attachStyle[key]);
}
this.shapeList.push(shapeList[i]);
}
if (this.type === ecConfig.CHART_TYPE_FORCE || this.type === ecConfig.CHART_TYPE_CHORD) {
for (var i = 0, l = shapeList.length; i < l; i++) {
this.zr.addShape(shapeList[i]);
}
}
},
_markPoint: function (seriesIndex, mpOption) {
var serie = this.series[seriesIndex];
var component = this.component;
zrUtil.merge(mpOption, this.ecTheme.markPoint);
mpOption.name = serie.name;
var pList = [];
var data = mpOption.data;
var itemShape;
var dataRange = component.dataRange;
var legend = component.legend;
var color;
var value;
var queryTarget;
var nColor;
var eColor;
var effect;
var zrWidth = this.zr.getWidth();
var zrHeight = this.zr.getHeight();
if (!mpOption.large) {
for (var i = 0, l = data.length; i < l; i++) {
if (data[i].x == null || data[i].y == null) {
continue;
}
value = data[i] != null && data[i].value != null ? data[i].value : '';
if (legend) {
color = legend.getColor(serie.name);
}
if (dataRange) {
color = isNaN(value) ? color : dataRange.getColor(value);
queryTarget = [
data[i],
mpOption
];
nColor = this.deepQuery(queryTarget, 'itemStyle.normal.color') || color;
eColor = this.deepQuery(queryTarget, 'itemStyle.emphasis.color') || nColor;
if (nColor == null && eColor == null) {
continue;
}
}
color = color == null ? this.zr.getColor(seriesIndex) : color;
data[i].tooltip = data[i].tooltip || mpOption.tooltip || { trigger: 'item' };
data[i].name = data[i].name != null ? data[i].name : '';
data[i].value = value;
itemShape = this.getSymbolShape(mpOption, seriesIndex, data[i], i, data[i].name, this.parsePercent(data[i].x, zrWidth), this.parsePercent(data[i].y, zrHeight), 'pin', color, 'rgba(0,0,0,0)', 'horizontal');
itemShape._mark = 'point';
effect = this.deepMerge([
data[i],
mpOption
], 'effect');
if (effect.show) {
itemShape.effect = effect;
}
if (serie.type === ecConfig.CHART_TYPE_MAP) {
itemShape._geo = this.getMarkGeo(data[i]);
}
ecData.pack(itemShape, serie, seriesIndex, data[i], i, data[i].name, value);
pList.push(itemShape);
}
} else {
itemShape = this.getLargeMarkPoingShape(seriesIndex, mpOption);
itemShape._mark = 'largePoint';
itemShape && pList.push(itemShape);
}
return pList;
},
_markLine: function (seriesIndex, mlOption) {
var serie = this.series[seriesIndex];
var component = this.component;
zrUtil.merge(mlOption, this.ecTheme.markLine);
mlOption.symbol = mlOption.symbol instanceof Array ? mlOption.symbol.length > 1 ? mlOption.symbol : [
mlOption.symbol[0],
mlOption.symbol[0]
] : [
mlOption.symbol,
mlOption.symbol
];
mlOption.symbolSize = mlOption.symbolSize instanceof Array ? mlOption.symbolSize.length > 1 ? mlOption.symbolSize : [
mlOption.symbolSize[0],
mlOption.symbolSize[0]
] : [
mlOption.symbolSize,
mlOption.symbolSize
];
mlOption.symbolRotate = mlOption.symbolRotate instanceof Array ? mlOption.symbolRotate.length > 1 ? mlOption.symbolRotate : [
mlOption.symbolRotate[0],
mlOption.symbolRotate[0]
] : [
mlOption.symbolRotate,
mlOption.symbolRotate
];
mlOption.name = serie.name;
var pList = [];
var data = mlOption.data;
var itemShape;
var dataRange = component.dataRange;
var legend = component.legend;
var color;
var value;
var queryTarget;
var nColor;
var eColor;
var effect;
var zrWidth = this.zr.getWidth();
var zrHeight = this.zr.getHeight();
var mergeData;
for (var i = 0, l = data.length; i < l; i++) {
if (data[i][0].x == null || data[i][0].y == null || data[i][1].x == null || data[i][1].y == null) {
continue;
}
color = legend ? legend.getColor(serie.name) : this.zr.getColor(seriesIndex);
mergeData = this.deepMerge(data[i]);
value = mergeData != null && mergeData.value != null ? mergeData.value : '';
if (dataRange) {
color = isNaN(value) ? color : dataRange.getColor(value);
queryTarget = [
mergeData,
mlOption
];
nColor = this.deepQuery(queryTarget, 'itemStyle.normal.color') || color;
eColor = this.deepQuery(queryTarget, 'itemStyle.emphasis.color') || nColor;
if (nColor == null && eColor == null) {
continue;
}
}
data[i][0].tooltip = mergeData.tooltip || { trigger: 'item' };
data[i][0].name = data[i][0].name != null ? data[i][0].name : '';
data[i][1].name = data[i][1].name != null ? data[i][1].name : '';
data[i][0].value = data[i][0].value != null ? data[i][0].value : '';
itemShape = this.getLineMarkShape(mlOption, seriesIndex, data[i], i, this.parsePercent(data[i][0].x, zrWidth), this.parsePercent(data[i][0].y, zrHeight), this.parsePercent(data[i][1].x, zrWidth), this.parsePercent(data[i][1].y, zrHeight), color);
itemShape._mark = 'line';
effect = this.deepMerge([
mergeData,
mlOption
], 'effect');
if (effect.show) {
itemShape.effect = effect;
}
if (serie.type === ecConfig.CHART_TYPE_MAP) {
itemShape._geo = [
this.getMarkGeo(data[i][0]),
this.getMarkGeo(data[i][1])
];
}
ecData.pack(itemShape, serie, seriesIndex, data[i][0], i, data[i][0].name + (data[i][1].name !== '' ? ' > ' + data[i][1].name : ''), value);
pList.push(itemShape);
}
return pList;
},
getMarkCoord: function () {
return [
0,
0
];
},
getSymbolShape: function (serie, seriesIndex, data, dataIndex, name, x, y, symbol, color, emptyColor, orient) {
var queryTarget = [
data,
serie
];
var value = data != null ? data.value != null ? data.value : data : '-';
symbol = this.deepQuery(queryTarget, 'symbol') || symbol;
var symbolSize = this.deepQuery(queryTarget, 'symbolSize');
symbolSize = typeof symbolSize === 'function' ? symbolSize(value) : symbolSize;
var symbolRotate = this.deepQuery(queryTarget, 'symbolRotate');
var normal = this.deepMerge(queryTarget, 'itemStyle.normal');
var emphasis = this.deepMerge(queryTarget, 'itemStyle.emphasis');
var nBorderWidth = normal.borderWidth != null ? normal.borderWidth : normal.lineStyle && normal.lineStyle.width;
if (nBorderWidth == null) {
nBorderWidth = symbol.match('empty') ? 2 : 0;
}
var eBorderWidth = emphasis.borderWidth != null ? emphasis.borderWidth : emphasis.lineStyle && emphasis.lineStyle.width;
if (eBorderWidth == null) {
eBorderWidth = nBorderWidth + 2;
}
var itemShape = new IconShape({
style: {
iconType: symbol.replace('empty', '').toLowerCase(),
x: x - symbolSize,
y: y - symbolSize,
width: symbolSize * 2,
height: symbolSize * 2,
brushType: 'both',
color: symbol.match('empty') ? emptyColor : this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data) || color,
strokeColor: normal.borderColor || this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data) || color,
lineWidth: nBorderWidth
},
highlightStyle: {
color: symbol.match('empty') ? emptyColor : this.getItemStyleColor(emphasis.color, seriesIndex, dataIndex, data),
strokeColor: emphasis.borderColor || normal.borderColor || this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data) || color,
lineWidth: eBorderWidth
},
clickable: this.deepQuery(queryTarget, 'clickable')
});
if (symbol.match('image')) {
itemShape.style.image = symbol.replace(new RegExp('^image:\\/\\/'), '');
itemShape = new ImageShape({
style: itemShape.style,
highlightStyle: itemShape.highlightStyle,
clickable: this.deepQuery(queryTarget, 'clickable')
});
}
if (symbolRotate != null) {
itemShape.rotation = [
symbolRotate * Math.PI / 180,
x,
y
];
}
if (symbol.match('star')) {
itemShape.style.iconType = 'star';
itemShape.style.n = symbol.replace('empty', '').replace('star', '') - 0 || 5;
}
if (symbol === 'none') {
itemShape.invisible = true;
itemShape.hoverable = false;
}
itemShape = this.addLabel(itemShape, serie, data, name, orient);
if (symbol.match('empty')) {
if (itemShape.style.textColor == null) {
itemShape.style.textColor = itemShape.style.strokeColor;
}
if (itemShape.highlightStyle.textColor == null) {
itemShape.highlightStyle.textColor = itemShape.highlightStyle.strokeColor;
}
}
ecData.pack(itemShape, serie, seriesIndex, data, dataIndex, name);
itemShape._x = x;
itemShape._y = y;
itemShape._dataIndex = dataIndex;
itemShape._seriesIndex = seriesIndex;
return itemShape;
},
getLineMarkShape: function (mlOption, seriesIndex, data, dataIndex, xStart, yStart, xEnd, yEnd, color) {
var value0 = data[0] != null ? data[0].value != null ? data[0].value : data[0] : '-';
var value1 = data[1] != null ? data[1].value != null ? data[1].value : data[1] : '-';
var symbol = [
this.query(data[0], 'symbol') || mlOption.symbol[0],
this.query(data[1], 'symbol') || mlOption.symbol[1]
];
var symbolSize = [
this.query(data[0], 'symbolSize') || mlOption.symbolSize[0],
this.query(data[1], 'symbolSize') || mlOption.symbolSize[1]
];
symbolSize[0] = typeof symbolSize[0] === 'function' ? symbolSize[0](value0) : symbolSize[0];
symbolSize[1] = typeof symbolSize[1] === 'function' ? symbolSize[1](value1) : symbolSize[1];
var symbolRotate = [
this.query(data[0], 'symbolRotate') || mlOption.symbolRotate[0],
this.query(data[1], 'symbolRotate') || mlOption.symbolRotate[1]
];
var queryTarget = [
data[0],
mlOption
];
var normal = this.deepMerge(queryTarget, 'itemStyle.normal');
normal.color = this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data);
var emphasis = this.deepMerge(queryTarget, 'itemStyle.emphasis');
emphasis.color = this.getItemStyleColor(emphasis.color, seriesIndex, dataIndex, data);
var nlineStyle = normal.lineStyle;
var elineStyle = emphasis.lineStyle;
var nBorderWidth = nlineStyle.width;
if (nBorderWidth == null) {
nBorderWidth = normal.borderWidth;
}
var eBorderWidth = elineStyle.width;
if (eBorderWidth == null) {
eBorderWidth = emphasis.borderWidth != null ? emphasis.borderWidth : nBorderWidth + 2;
}
var itemShape = new MarkLineShape({
style: {
smooth: mlOption.smooth ? 'spline' : false,
symbol: symbol,
symbolSize: symbolSize,
symbolRotate: symbolRotate,
xStart: xStart,
yStart: yStart,
xEnd: xEnd,
yEnd: yEnd,
brushType: 'both',
lineType: nlineStyle.type,
shadowColor: nlineStyle.shadowColor || nlineStyle.color || normal.borderColor || normal.color || color,
shadowBlur: nlineStyle.shadowBlur,
shadowOffsetX: nlineStyle.shadowOffsetX,
shadowOffsetY: nlineStyle.shadowOffsetY,
color: normal.color || color,
strokeColor: nlineStyle.color || normal.borderColor || normal.color || color,
lineWidth: nBorderWidth,
symbolBorderColor: normal.borderColor || normal.color || color,
symbolBorder: normal.borderWidth
},
highlightStyle: {
shadowColor: elineStyle.shadowColor,
shadowBlur: elineStyle.shadowBlur,
shadowOffsetX: elineStyle.shadowOffsetX,
shadowOffsetY: elineStyle.shadowOffsetY,
color: emphasis.color || normal.color || color,
strokeColor: elineStyle.color || nlineStyle.color || emphasis.borderColor || normal.borderColor || emphasis.color || normal.color || color,
lineWidth: eBorderWidth,
symbolBorderColor: emphasis.borderColor || normal.borderColor || emphasis.color || normal.color || color,
symbolBorder: emphasis.borderWidth == null ? normal.borderWidth + 2 : emphasis.borderWidth
},
clickable: this.deepQuery(queryTarget, 'clickable')
});
itemShape = this.addLabel(itemShape, mlOption, data[0], data[0].name + ' : ' + data[1].name);
itemShape._x = xEnd;
itemShape._y = yEnd;
return itemShape;
},
getLargeMarkPoingShape: function (seriesIndex, mpOption) {
var serie = this.series[seriesIndex];
var component = this.component;
var data = mpOption.data;
var itemShape;
var dataRange = component.dataRange;
var legend = component.legend;
var color;
var value;
var queryTarget = [
data[0],
mpOption
];
var nColor;
var eColor;
var effect;
if (legend) {
color = legend.getColor(serie.name);
}
if (dataRange) {
value = data[0] != null ? data[0].value != null ? data[0].value : data[0] : '-';
color = isNaN(value) ? color : dataRange.getColor(value);
nColor = this.deepQuery(queryTarget, 'itemStyle.normal.color') || color;
eColor = this.deepQuery(queryTarget, 'itemStyle.emphasis.color') || nColor;
if (nColor == null && eColor == null) {
return;
}
}
color = this.deepMerge(queryTarget, 'itemStyle.normal').color || color;
var symbol = this.deepQuery(queryTarget, 'symbol') || 'circle';
symbol = symbol.replace('empty', '').replace(/\d/g, '');
effect = this.deepMerge([
data[0],
mpOption
], 'effect');
var devicePixelRatio = window.devicePixelRatio || 1;
itemShape = new SymbolShape({
style: {
pointList: data,
color: color,
strokeColor: color,
shadowColor: effect.shadowColor || color,
shadowBlur: (effect.shadowBlur != null ? effect.shadowBlur : 8) * devicePixelRatio,
size: this.deepQuery(queryTarget, 'symbolSize'),
iconType: symbol,
brushType: 'fill',
lineWidth: 1
},
draggable: false,
hoverable: false
});
if (effect.show) {
itemShape.effect = effect;
}
return itemShape;
},
backupShapeList: function () {
if (this.shapeList && this.shapeList.length > 0) {
this.lastShapeList = this.shapeList;
this.shapeList = [];
} else {
this.lastShapeList = [];
}
},
addShapeList: function () {
var maxLenth = this.option.animationThreshold / (this.canvasSupported ? 2 : 4);
var lastShapeList = this.lastShapeList;
var shapeList = this.shapeList;
var duration = lastShapeList.length > 0 ? 500 : this.query(this.option, 'animationDuration');
var easing = this.query(this.option, 'animationEasing');
var delay;
var key;
var oldMap = {};
var newMap = {};
if (this.option.animation && !this.option.renderAsImage && shapeList.length < maxLenth && !this.motionlessOnce) {
for (var i = 0, l = lastShapeList.length; i < l; i++) {
key = this._getAnimationKey(lastShapeList[i]);
if (key.match('undefined')) {
this.zr.delShape(lastShapeList[i].id);
} else {
key += lastShapeList[i].type;
oldMap[key] = lastShapeList[i];
}
}
for (var i = 0, l = shapeList.length; i < l; i++) {
key = this._getAnimationKey(shapeList[i]);
if (key.match('undefined')) {
this.zr.addShape(shapeList[i]);
} else {
key += shapeList[i].type;
newMap[key] = shapeList[i];
}
}
for (key in oldMap) {
if (!newMap[key]) {
this.zr.delShape(oldMap[key].id);
}
}
for (key in newMap) {
if (oldMap[key]) {
this.zr.delShape(oldMap[key].id);
this._animateMod(oldMap[key], newMap[key], duration, easing);
} else {
delay = (this.type == ecConfig.CHART_TYPE_LINE || this.type == ecConfig.CHART_TYPE_RADAR) && key.indexOf('icon') !== 0 ? duration / 2 : 0;
this._animateMod(false, newMap[key], duration, easing, delay);
}
}
this.zr.refresh();
this.animationEffect();
} else {
this.motionlessOnce = false;
this.zr.delShape(lastShapeList);
for (var i = 0, l = shapeList.length; i < l; i++) {
this.zr.addShape(shapeList[i]);
}
}
},
_getAnimationKey: function (shape) {
if (this.type != ecConfig.CHART_TYPE_MAP) {
return ecData.get(shape, 'seriesIndex') + '_' + ecData.get(shape, 'dataIndex') + (shape._mark ? shape._mark : '') + (this.type === ecConfig.CHART_TYPE_RADAR ? ecData.get(shape, 'special') : '');
} else {
return ecData.get(shape, 'seriesIndex') + '_' + ecData.get(shape, 'dataIndex') + (shape._mark ? shape._mark : 'undefined');
}
},
_animateMod: function (oldShape, newShape, duration, easing, delay) {
switch (newShape.type) {
case 'broken-line':
case 'half-smooth-polygon':
ecAnimation.pointList(this.zr, oldShape, newShape, duration, easing);
break;
case 'rectangle':
ecAnimation.rectangle(this.zr, oldShape, newShape, duration, easing);
break;
case 'icon':
ecAnimation.icon(this.zr, oldShape, newShape, duration, easing, delay);
break;
case 'candle':
if (duration > 500) {
ecAnimation.candle(this.zr, oldShape, newShape, duration, easing);
} else {
this.zr.addShape(newShape);
}
break;
case 'ring':
case 'sector':
case 'circle':
if (duration > 500) {
ecAnimation.ring(this.zr, oldShape, newShape, duration + (ecData.get(newShape, 'dataIndex') || 0) % 20 * 100, easing);
} else if (newShape.type === 'sector') {
ecAnimation.sector(this.zr, oldShape, newShape, duration, easing);
} else {
this.zr.addShape(newShape);
}
break;
case 'text':
ecAnimation.text(this.zr, oldShape, newShape, duration, easing);
break;
case 'polygon':
if (duration > 500) {
ecAnimation.polygon(this.zr, oldShape, newShape, duration, easing);
} else {
ecAnimation.pointList(this.zr, oldShape, newShape, duration, easing);
}
break;
case 'ribbon':
ecAnimation.ribbon(this.zr, oldShape, newShape, duration, easing);
break;
case 'gauge-pointer':
ecAnimation.gaugePointer(this.zr, oldShape, newShape, duration, easing);
break;
case 'mark-line':
ecAnimation.markline(this.zr, oldShape, newShape, duration, easing);
break;
case 'bezier-curve':
case 'line':
ecAnimation.line(this.zr, oldShape, newShape, duration, easing);
break;
default:
this.zr.addShape(newShape);
break;
}
},
animationMark: function (duration, easing, addShapeList) {
var shapeList = addShapeList || this.shapeList;
for (var i = 0, l = shapeList.length; i < l; i++) {
if (!shapeList[i]._mark) {
continue;
}
this._animateMod(false, shapeList[i], duration, easing);
}
this.animationEffect(addShapeList);
},
animationEffect: function (addShapeList) {
!addShapeList && this.clearEffectShape();
var shapeList = addShapeList || this.shapeList;
if (shapeList == null) {
return;
}
var zlevel = ecConfig.EFFECT_ZLEVEL;
if (this.canvasSupported) {
this.zr.modLayer(zlevel, {
motionBlur: true,
lastFrameAlpha: 0.95
});
}
var shape;
for (var i = 0, l = shapeList.length; i < l; i++) {
shape = shapeList[i];
if (!(shape._mark && shape.effect && shape.effect.show && ecEffect[shape._mark])) {
continue;
}
ecEffect[shape._mark](this.zr, this.effectList, shape, zlevel);
this.effectList[this.effectList.length - 1]._mark = shape._mark;
}
},
clearEffectShape: function (clearMotionBlur) {
if (this.zr && this.effectList && this.effectList.length > 0) {
clearMotionBlur && this.zr.modLayer(ecConfig.EFFECT_ZLEVEL, { motionBlur: false });
this.zr.delShape(this.effectList);
}
this.effectList = [];
},
addMark: function (seriesIndex, markData, markType) {
var serie = this.series[seriesIndex];
if (this.selectedMap[serie.name]) {
var duration = 500;
var easing = this.query(this.option, 'animationEasing');
var oriMarkData = serie[markType].data;
var lastLength = this.shapeList.length;
serie[markType].data = markData.data;
this['_build' + markType.replace('m', 'M')](seriesIndex);
if (this.option.animation && !this.option.renderAsImage) {
this.animationMark(duration, easing, this.shapeList.slice(lastLength));
} else {
for (var i = lastLength, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
this.zr.refresh();
}
serie[markType].data = oriMarkData;
}
},
delMark: function (seriesIndex, markName, markType) {
markType = markType.replace('mark', '').replace('large', '').toLowerCase();
var serie = this.series[seriesIndex];
if (this.selectedMap[serie.name]) {
var needRefresh = false;
var shapeList = [
this.shapeList,
this.effectList
];
var len = 2;
while (len--) {
for (var i = 0, l = shapeList[len].length; i < l; i++) {
if (shapeList[len][i]._mark == markType && ecData.get(shapeList[len][i], 'seriesIndex') == seriesIndex && ecData.get(shapeList[len][i], 'name') == markName) {
this.zr.delShape(shapeList[len][i].id);
shapeList[len].splice(i, 1);
needRefresh = true;
break;
}
}
}
needRefresh && this.zr.refresh();
}
}
};
return Base;
});define('zrender/shape/Circle', [
'require',
'./Base',
'../tool/util'
], function (require) {
'use strict';
var Base = require('./Base');
var Circle = function (options) {
Base.call(this, options);
};
Circle.prototype = {
type: 'circle',
buildPath: function (ctx, style) {
ctx.arc(style.x, style.y, style.r, 0, Math.PI * 2, true);
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
style.__rect = {
x: Math.round(style.x - style.r - lineWidth / 2),
y: Math.round(style.y - style.r - lineWidth / 2),
width: style.r * 2 + lineWidth,
height: style.r * 2 + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Circle, Base);
return Circle;
});define('echarts/util/accMath', [], function () {
function accDiv(arg1, arg2) {
var s1 = arg1.toString();
var s2 = arg2.toString();
var m = 0;
try {
m = s2.split('.')[1].length;
} catch (e) {
}
try {
m -= s1.split('.')[1].length;
} catch (e) {
}
return (s1.replace('.', '') - 0) / (s2.replace('.', '') - 0) * Math.pow(10, m);
}
function accMul(arg1, arg2) {
var s1 = arg1.toString();
var s2 = arg2.toString();
var m = 0;
try {
m += s1.split('.')[1].length;
} catch (e) {
}
try {
m += s2.split('.')[1].length;
} catch (e) {
}
return (s1.replace('.', '') - 0) * (s2.replace('.', '') - 0) / Math.pow(10, m);
}
function accAdd(arg1, arg2) {
var r1 = 0;
var r2 = 0;
try {
r1 = arg1.toString().split('.')[1].length;
} catch (e) {
}
try {
r2 = arg2.toString().split('.')[1].length;
} catch (e) {
}
var m = Math.pow(10, Math.max(r1, r2));
return (Math.round(arg1 * m) + Math.round(arg2 * m)) / m;
}
function accSub(arg1, arg2) {
return accAdd(arg1, -arg2);
}
return {
accDiv: accDiv,
accMul: accMul,
accAdd: accAdd,
accSub: accSub
};
});define('echarts/util/ecQuery', [
'require',
'zrender/tool/util'
], function (require) {
var zrUtil = require('zrender/tool/util');
function query(optionTarget, optionLocation) {
if (typeof optionTarget == 'undefined') {
return;
}
if (!optionLocation) {
return optionTarget;
}
optionLocation = optionLocation.split('.');
var length = optionLocation.length;
var curIdx = 0;
while (curIdx < length) {
optionTarget = optionTarget[optionLocation[curIdx]];
if (typeof optionTarget == 'undefined') {
return;
}
curIdx++;
}
return optionTarget;
}
function deepQuery(ctrList, optionLocation) {
var finalOption;
for (var i = 0, l = ctrList.length; i < l; i++) {
finalOption = query(ctrList[i], optionLocation);
if (typeof finalOption != 'undefined') {
return finalOption;
}
}
}
function deepMerge(ctrList, optionLocation) {
var finalOption;
var len = ctrList.length;
while (len--) {
var tempOption = query(ctrList[len], optionLocation);
if (typeof tempOption != 'undefined') {
if (typeof finalOption == 'undefined') {
finalOption = zrUtil.clone(tempOption);
} else {
zrUtil.merge(finalOption, tempOption, true);
}
}
}
return finalOption;
}
return {
query: query,
deepQuery: deepQuery,
deepMerge: deepMerge
};
});define('echarts/util/number', [], function () {
function _trim(str) {
return str.replace(/^\s+/, '').replace(/\s+$/, '');
}
function parsePercent(value, maxValue) {
if (typeof value === 'string') {
if (_trim(value).match(/%$/)) {
return parseFloat(value) / 100 * maxValue;
}
return parseFloat(value);
}
return value;
}
function parseCenter(zr, center) {
return [
parsePercent(center[0], zr.getWidth()),
parsePercent(center[1], zr.getHeight())
];
}
function parseRadius(zr, radius) {
if (!(radius instanceof Array)) {
radius = [
0,
radius
];
}
var zrSize = Math.min(zr.getWidth(), zr.getHeight()) / 2;
return [
parsePercent(radius[0], zrSize),
parsePercent(radius[1], zrSize)
];
}
function addCommas(x) {
if (isNaN(x)) {
return '-';
}
x = (x + '').split('.');
return x[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');
}
return {
parsePercent: parsePercent,
parseCenter: parseCenter,
parseRadius: parseRadius,
addCommas: addCommas
};
});define('echarts/util/shape/Icon', [
'require',
'zrender/tool/util',
'zrender/shape/Star',
'zrender/shape/Heart',
'zrender/shape/Droplet',
'zrender/shape/Image',
'zrender/shape/Base'
], function (require) {
var zrUtil = require('zrender/tool/util');
function _iconMark(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x, y + style.height);
ctx.lineTo(x + 5 * dx, y + 14 * dy);
ctx.lineTo(x + style.width, y + 3 * dy);
ctx.lineTo(x + 13 * dx, y);
ctx.lineTo(x + 2 * dx, y + 11 * dy);
ctx.lineTo(x, y + style.height);
ctx.moveTo(x + 6 * dx, y + 10 * dy);
ctx.lineTo(x + 14 * dx, y + 2 * dy);
ctx.moveTo(x + 10 * dx, y + 13 * dy);
ctx.lineTo(x + style.width, y + 13 * dy);
ctx.moveTo(x + 13 * dx, y + 10 * dy);
ctx.lineTo(x + 13 * dx, y + style.height);
}
function _iconMarkUndo(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x, y + style.height);
ctx.lineTo(x + 5 * dx, y + 14 * dy);
ctx.lineTo(x + style.width, y + 3 * dy);
ctx.lineTo(x + 13 * dx, y);
ctx.lineTo(x + 2 * dx, y + 11 * dy);
ctx.lineTo(x, y + style.height);
ctx.moveTo(x + 6 * dx, y + 10 * dy);
ctx.lineTo(x + 14 * dx, y + 2 * dy);
ctx.moveTo(x + 10 * dx, y + 13 * dy);
ctx.lineTo(x + style.width, y + 13 * dy);
}
function _iconMarkClear(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x + 4 * dx, y + 15 * dy);
ctx.lineTo(x + 9 * dx, y + 13 * dy);
ctx.lineTo(x + 14 * dx, y + 8 * dy);
ctx.lineTo(x + 11 * dx, y + 5 * dy);
ctx.lineTo(x + 6 * dx, y + 10 * dy);
ctx.lineTo(x + 4 * dx, y + 15 * dy);
ctx.moveTo(x + 5 * dx, y);
ctx.lineTo(x + 11 * dx, y);
ctx.moveTo(x + 5 * dx, y + dy);
ctx.lineTo(x + 11 * dx, y + dy);
ctx.moveTo(x, y + 2 * dy);
ctx.lineTo(x + style.width, y + 2 * dy);
ctx.moveTo(x, y + 5 * dy);
ctx.lineTo(x + 3 * dx, y + style.height);
ctx.lineTo(x + 13 * dx, y + style.height);
ctx.lineTo(x + style.width, y + 5 * dy);
}
function _iconDataZoom(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x, y + 3 * dy);
ctx.lineTo(x + 6 * dx, y + 3 * dy);
ctx.moveTo(x + 3 * dx, y);
ctx.lineTo(x + 3 * dx, y + 6 * dy);
ctx.moveTo(x + 3 * dx, y + 8 * dy);
ctx.lineTo(x + 3 * dx, y + style.height);
ctx.lineTo(x + style.width, y + style.height);
ctx.lineTo(x + style.width, y + 3 * dy);
ctx.lineTo(x + 8 * dx, y + 3 * dy);
}
function _iconDataZoomReset(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x + 6 * dx, y);
ctx.lineTo(x + 2 * dx, y + 3 * dy);
ctx.lineTo(x + 6 * dx, y + 6 * dy);
ctx.moveTo(x + 2 * dx, y + 3 * dy);
ctx.lineTo(x + 14 * dx, y + 3 * dy);
ctx.lineTo(x + 14 * dx, y + 11 * dy);
ctx.moveTo(x + 2 * dx, y + 5 * dy);
ctx.lineTo(x + 2 * dx, y + 13 * dy);
ctx.lineTo(x + 14 * dx, y + 13 * dy);
ctx.moveTo(x + 10 * dx, y + 10 * dy);
ctx.lineTo(x + 14 * dx, y + 13 * dy);
ctx.lineTo(x + 10 * dx, y + style.height);
}
function _iconRestore(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
var r = style.width / 2;
ctx.lineWidth = 1.5;
ctx.arc(x + r, y + r, r - dx, 0, Math.PI * 2 / 3);
ctx.moveTo(x + 3 * dx, y + style.height);
ctx.lineTo(x + 0 * dx, y + 12 * dy);
ctx.lineTo(x + 5 * dx, y + 11 * dy);
ctx.moveTo(x, y + 8 * dy);
ctx.arc(x + r, y + r, r - dx, Math.PI, Math.PI * 5 / 3);
ctx.moveTo(x + 13 * dx, y);
ctx.lineTo(x + style.width, y + 4 * dy);
ctx.lineTo(x + 11 * dx, y + 5 * dy);
}
function _iconLineChart(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x, y);
ctx.lineTo(x, y + style.height);
ctx.lineTo(x + style.width, y + style.height);
ctx.moveTo(x + 2 * dx, y + 14 * dy);
ctx.lineTo(x + 7 * dx, y + 6 * dy);
ctx.lineTo(x + 11 * dx, y + 11 * dy);
ctx.lineTo(x + 15 * dx, y + 2 * dy);
}
function _iconBarChart(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x, y);
ctx.lineTo(x, y + style.height);
ctx.lineTo(x + style.width, y + style.height);
ctx.moveTo(x + 3 * dx, y + 14 * dy);
ctx.lineTo(x + 3 * dx, y + 6 * dy);
ctx.lineTo(x + 4 * dx, y + 6 * dy);
ctx.lineTo(x + 4 * dx, y + 14 * dy);
ctx.moveTo(x + 7 * dx, y + 14 * dy);
ctx.lineTo(x + 7 * dx, y + 2 * dy);
ctx.lineTo(x + 8 * dx, y + 2 * dy);
ctx.lineTo(x + 8 * dx, y + 14 * dy);
ctx.moveTo(x + 11 * dx, y + 14 * dy);
ctx.lineTo(x + 11 * dx, y + 9 * dy);
ctx.lineTo(x + 12 * dx, y + 9 * dy);
ctx.lineTo(x + 12 * dx, y + 14 * dy);
}
function _iconPieChart(ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width - 2;
var height = style.height - 2;
var r = Math.min(width, height) / 2;
y += 2;
ctx.moveTo(x + r + 3, y + r - 3);
ctx.arc(x + r + 3, y + r - 3, r - 1, 0, -Math.PI / 2, true);
ctx.lineTo(x + r + 3, y + r - 3);
ctx.moveTo(x + r, y);
ctx.lineTo(x + r, y + r);
ctx.arc(x + r, y + r, r, -Math.PI / 2, Math.PI * 2, true);
ctx.lineTo(x + r, y + r);
ctx.lineWidth = 1.5;
}
function _iconFunnelChart(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
y -= dy;
ctx.moveTo(x + 1 * dx, y + 2 * dy);
ctx.lineTo(x + 15 * dx, y + 2 * dy);
ctx.lineTo(x + 14 * dx, y + 3 * dy);
ctx.lineTo(x + 2 * dx, y + 3 * dy);
ctx.moveTo(x + 3 * dx, y + 6 * dy);
ctx.lineTo(x + 13 * dx, y + 6 * dy);
ctx.lineTo(x + 12 * dx, y + 7 * dy);
ctx.lineTo(x + 4 * dx, y + 7 * dy);
ctx.moveTo(x + 5 * dx, y + 10 * dy);
ctx.lineTo(x + 11 * dx, y + 10 * dy);
ctx.lineTo(x + 10 * dx, y + 11 * dy);
ctx.lineTo(x + 6 * dx, y + 11 * dy);
ctx.moveTo(x + 7 * dx, y + 14 * dy);
ctx.lineTo(x + 9 * dx, y + 14 * dy);
ctx.lineTo(x + 8 * dx, y + 15 * dy);
ctx.lineTo(x + 7 * dx, y + 15 * dy);
}
function _iconForceChart(ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
var dx = width / 16;
var dy = height / 16;
var r = Math.min(dx, dy) * 2;
ctx.moveTo(x + dx + r, y + dy + r);
ctx.arc(x + dx, y + dy, r, Math.PI / 4, Math.PI * 3);
ctx.lineTo(x + 7 * dx - r, y + 6 * dy - r);
ctx.arc(x + 7 * dx, y + 6 * dy, r, Math.PI / 4 * 5, Math.PI * 4);
ctx.arc(x + 7 * dx, y + 6 * dy, r / 2, Math.PI / 4 * 5, Math.PI * 4);
ctx.moveTo(x + 7 * dx - r / 2, y + 6 * dy + r);
ctx.lineTo(x + dx + r, y + 14 * dy - r);
ctx.arc(x + dx, y + 14 * dy, r, -Math.PI / 4, Math.PI * 2);
ctx.moveTo(x + 7 * dx + r / 2, y + 6 * dy);
ctx.lineTo(x + 14 * dx - r, y + 10 * dy - r / 2);
ctx.moveTo(x + 16 * dx, y + 10 * dy);
ctx.arc(x + 14 * dx, y + 10 * dy, r, 0, Math.PI * 3);
ctx.lineWidth = 1.5;
}
function _iconChordChart(ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
var r = Math.min(width, height) / 2;
ctx.moveTo(x + width, y + height / 2);
ctx.arc(x + r, y + r, r, 0, Math.PI * 2);
ctx.arc(x + r, y, r, Math.PI / 4, Math.PI / 5 * 4);
ctx.arc(x, y + r, r, -Math.PI / 3, Math.PI / 3);
ctx.arc(x + width, y + height, r, Math.PI, Math.PI / 2 * 3);
ctx.lineWidth = 1.5;
}
function _iconStackChart(ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
var dy = Math.round(height / 3);
var len = 3;
while (len--) {
ctx.rect(x, y + dy * len + 2, width, 2);
}
}
function _iconTiledChart(ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
var dx = Math.round(width / 3);
var len = 3;
while (len--) {
ctx.rect(x + dx * len, y, 2, height);
}
}
function _iconDataView(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
ctx.moveTo(x + dx, y);
ctx.lineTo(x + dx, y + style.height);
ctx.lineTo(x + 15 * dx, y + style.height);
ctx.lineTo(x + 15 * dx, y);
ctx.lineTo(x + dx, y);
ctx.moveTo(x + 3 * dx, y + 3 * dx);
ctx.lineTo(x + 13 * dx, y + 3 * dx);
ctx.moveTo(x + 3 * dx, y + 6 * dx);
ctx.lineTo(x + 13 * dx, y + 6 * dx);
ctx.moveTo(x + 3 * dx, y + 9 * dx);
ctx.lineTo(x + 13 * dx, y + 9 * dx);
ctx.moveTo(x + 3 * dx, y + 12 * dx);
ctx.lineTo(x + 9 * dx, y + 12 * dx);
}
function _iconSave(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
var dy = style.height / 16;
ctx.moveTo(x, y);
ctx.lineTo(x, y + style.height);
ctx.lineTo(x + style.width, y + style.height);
ctx.lineTo(x + style.width, y);
ctx.lineTo(x, y);
ctx.moveTo(x + 4 * dx, y);
ctx.lineTo(x + 4 * dx, y + 8 * dy);
ctx.lineTo(x + 12 * dx, y + 8 * dy);
ctx.lineTo(x + 12 * dx, y);
ctx.moveTo(x + 6 * dx, y + 11 * dy);
ctx.lineTo(x + 6 * dx, y + 13 * dy);
ctx.lineTo(x + 10 * dx, y + 13 * dy);
ctx.lineTo(x + 10 * dx, y + 11 * dy);
ctx.lineTo(x + 6 * dx, y + 11 * dy);
}
function _iconCross(ctx, style) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
ctx.moveTo(x, y + height / 2);
ctx.lineTo(x + width, y + height / 2);
ctx.moveTo(x + width / 2, y);
ctx.lineTo(x + width / 2, y + height);
}
function _iconCircle(ctx, style) {
var width = style.width / 2;
var height = style.height / 2;
var r = Math.min(width, height);
ctx.moveTo(style.x + width + r, style.y + height);
ctx.arc(style.x + width, style.y + height, r, 0, Math.PI * 2);
ctx.closePath();
}
function _iconRectangle(ctx, style) {
ctx.rect(style.x, style.y, style.width, style.height);
ctx.closePath();
}
function _iconTriangle(ctx, style) {
var width = style.width / 2;
var height = style.height / 2;
var x = style.x + width;
var y = style.y + height;
var symbolSize = Math.min(width, height);
ctx.moveTo(x, y - symbolSize);
ctx.lineTo(x + symbolSize, y + symbolSize);
ctx.lineTo(x - symbolSize, y + symbolSize);
ctx.lineTo(x, y - symbolSize);
ctx.closePath();
}
function _iconDiamond(ctx, style) {
var width = style.width / 2;
var height = style.height / 2;
var x = style.x + width;
var y = style.y + height;
var symbolSize = Math.min(width, height);
ctx.moveTo(x, y - symbolSize);
ctx.lineTo(x + symbolSize, y);
ctx.lineTo(x, y + symbolSize);
ctx.lineTo(x - symbolSize, y);
ctx.lineTo(x, y - symbolSize);
ctx.closePath();
}
function _iconArrow(ctx, style) {
var x = style.x;
var y = style.y;
var dx = style.width / 16;
ctx.moveTo(x + 8 * dx, y);
ctx.lineTo(x + dx, y + style.height);
ctx.lineTo(x + 8 * dx, y + style.height / 4 * 3);
ctx.lineTo(x + 15 * dx, y + style.height);
ctx.lineTo(x + 8 * dx, y);
ctx.closePath();
}
function _iconStar(ctx, style) {
var StarShape = require('zrender/shape/Star');
var width = style.width / 2;
var height = style.height / 2;
StarShape.prototype.buildPath(ctx, {
x: style.x + width,
y: style.y + height,
r: Math.min(width, height),
n: style.n || 5
});
}
function _iconHeart(ctx, style) {
var HeartShape = require('zrender/shape/Heart');
HeartShape.prototype.buildPath(ctx, {
x: style.x + style.width / 2,
y: style.y + style.height * 0.2,
a: style.width / 2,
b: style.height * 0.8
});
}
function _iconDroplet(ctx, style) {
var DropletShape = require('zrender/shape/Droplet');
DropletShape.prototype.buildPath(ctx, {
x: style.x + style.width * 0.5,
y: style.y + style.height * 0.5,
a: style.width * 0.5,
b: style.height * 0.8
});
}
function _iconPin(ctx, style) {
var x = style.x;
var y = style.y - style.height / 2 * 1.5;
var width = style.width / 2;
var height = style.height / 2;
var r = Math.min(width, height);
ctx.arc(x + width, y + height, r, Math.PI / 5 * 4, Math.PI / 5);
ctx.lineTo(x + width, y + height + r * 1.5);
ctx.closePath();
}
function _iconImage(ctx, style, refreshNextFrame) {
var ImageShape = require('zrender/shape/Image');
this._imageShape = this._imageShape || new ImageShape({ style: {} });
for (var name in style) {
this._imageShape.style[name] = style[name];
}
this._imageShape.brush(ctx, false, refreshNextFrame);
}
var Base = require('zrender/shape/Base');
function Icon(options) {
Base.call(this, options);
}
Icon.prototype = {
type: 'icon',
iconLibrary: {
mark: _iconMark,
markUndo: _iconMarkUndo,
markClear: _iconMarkClear,
dataZoom: _iconDataZoom,
dataZoomReset: _iconDataZoomReset,
restore: _iconRestore,
lineChart: _iconLineChart,
barChart: _iconBarChart,
pieChart: _iconPieChart,
funnelChart: _iconFunnelChart,
forceChart: _iconForceChart,
chordChart: _iconChordChart,
stackChart: _iconStackChart,
tiledChart: _iconTiledChart,
dataView: _iconDataView,
saveAsImage: _iconSave,
cross: _iconCross,
circle: _iconCircle,
rectangle: _iconRectangle,
triangle: _iconTriangle,
diamond: _iconDiamond,
arrow: _iconArrow,
star: _iconStar,
heart: _iconHeart,
droplet: _iconDroplet,
pin: _iconPin,
image: _iconImage
},
brush: function (ctx, isHighlight, refreshNextFrame) {
var style = isHighlight ? this.highlightStyle : this.style;
style = style || {};
var iconType = style.iconType || this.style.iconType;
if (iconType === 'image') {
var ImageShape = require('zrender/shape/Image');
ImageShape.prototype.brush.call(this, ctx, isHighlight, refreshNextFrame);
} else {
var style = this.beforeBrush(ctx, isHighlight);
ctx.beginPath();
this.buildPath(ctx, style, refreshNextFrame);
switch (style.brushType) {
case 'both':
ctx.fill();
case 'stroke':
style.lineWidth > 0 && ctx.stroke();
break;
default:
ctx.fill();
}
this.drawText(ctx, style, this.style);
this.afterBrush(ctx);
}
},
buildPath: function (ctx, style, refreshNextFrame) {
if (this.iconLibrary[style.iconType]) {
this.iconLibrary[style.iconType].call(this, ctx, style, refreshNextFrame);
} else {
ctx.moveTo(style.x, style.y);
ctx.lineTo(style.x + style.width, style.y);
ctx.lineTo(style.x + style.width, style.y + style.height);
ctx.lineTo(style.x, style.y + style.height);
ctx.lineTo(style.x, style.y);
ctx.closePath();
}
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
style.__rect = {
x: Math.round(style.x),
y: Math.round(style.y - (style.iconType == 'pin' ? style.height / 2 * 1.5 : 0)),
width: style.width,
height: style.height
};
return style.__rect;
},
isCover: function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.style.__rect;
if (!rect) {
rect = this.style.__rect = this.getRect(this.style);
}
var delta = rect.height < 8 || rect.width < 8 ? 4 : 0;
if (x >= rect.x - delta && x <= rect.x + rect.width + delta && y >= rect.y - delta && y <= rect.y + rect.height + delta) {
return true;
} else {
return false;
}
}
};
zrUtil.inherits(Icon, Base);
return Icon;
});define('echarts/util/shape/MarkLine', [
'require',
'zrender/shape/Base',
'./Icon',
'zrender/shape/Line',
'zrender/shape/BrokenLine',
'zrender/tool/matrix',
'zrender/tool/area',
'zrender/shape/util/dashedLineTo',
'zrender/shape/util/smoothSpline',
'zrender/tool/util'
], function (require) {
var Base = require('zrender/shape/Base');
var IconShape = require('./Icon');
var LineShape = require('zrender/shape/Line');
var lineInstance = new LineShape({});
var BrokenLineShape = require('zrender/shape/BrokenLine');
var brokenLineInstance = new BrokenLineShape({});
var matrix = require('zrender/tool/matrix');
var area = require('zrender/tool/area');
var dashedLineTo = require('zrender/shape/util/dashedLineTo');
var smoothSpline = require('zrender/shape/util/smoothSpline');
var zrUtil = require('zrender/tool/util');
function MarkLine(options) {
Base.call(this, options);
}
MarkLine.prototype = {
type: 'mark-line',
brush: function (ctx, isHighlight) {
var style = this.style;
if (isHighlight) {
style = this.getHighlightStyle(style, this.highlightStyle || {});
}
ctx.save();
this.setContext(ctx, style);
this.setTransform(ctx);
ctx.save();
ctx.beginPath();
this.buildLinePath(ctx, style, this.style.lineWidth || 1);
ctx.stroke();
ctx.restore();
this.brushSymbol(ctx, style, 0);
this.brushSymbol(ctx, style, 1);
this.drawText(ctx, style, this.style);
ctx.restore();
},
buildLinePath: function (ctx, style, lineWidth) {
var pointList = style.pointList || this.getPointList(style);
style.pointList = pointList;
var len = Math.min(style.pointList.length, Math.round(style.pointListLength || style.pointList.length));
if (!style.lineType || style.lineType == 'solid') {
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 1; i < len; i++) {
ctx.lineTo(pointList[i][0], pointList[i][1]);
}
} else if (style.lineType == 'dashed' || style.lineType == 'dotted') {
if (style.smooth !== 'spline') {
var dashLength = lineWidth * (style.lineType == 'dashed' ? 5 : 1);
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 1; i < len; i++) {
dashedLineTo(ctx, pointList[i - 1][0], pointList[i - 1][1], pointList[i][0], pointList[i][1], dashLength);
}
} else {
for (var i = 1; i < len; i += 2) {
ctx.moveTo(pointList[i - 1][0], pointList[i - 1][1]);
ctx.lineTo(pointList[i][0], pointList[i][1]);
}
}
}
},
brushSymbol: function (ctx, style, idx) {
if (style.symbol[idx] == 'none') {
return;
}
ctx.save();
ctx.beginPath();
ctx.lineWidth = style.symbolBorder;
ctx.strokeStyle = style.symbolBorderColor;
style.iconType = style.symbol[idx].replace('empty', '').toLowerCase();
if (style.symbol[idx].match('empty')) {
ctx.fillStyle = '#fff';
}
var len = Math.min(style.pointList.length, Math.round(style.pointListLength || style.pointList.length));
var x = idx === 0 ? style.pointList[0][0] : style.pointList[len - 1][0];
var y = idx === 0 ? style.pointList[0][1] : style.pointList[len - 1][1];
var rotate = typeof style.symbolRotate[idx] != 'undefined' ? style.symbolRotate[idx] - 0 : 0;
var transform;
if (rotate !== 0) {
transform = matrix.create();
matrix.identity(transform);
if (x || y) {
matrix.translate(transform, transform, [
-x,
-y
]);
}
matrix.rotate(transform, transform, rotate * Math.PI / 180);
if (x || y) {
matrix.translate(transform, transform, [
x,
y
]);
}
ctx.transform.apply(ctx, transform);
}
if (style.iconType == 'arrow' && rotate === 0) {
this.buildArrawPath(ctx, style, idx);
} else {
var symbolSize = style.symbolSize[idx];
style.x = x - symbolSize;
style.y = y - symbolSize, style.width = symbolSize * 2;
style.height = symbolSize * 2;
IconShape.prototype.buildPath(ctx, style);
}
ctx.closePath();
ctx.fill();
ctx.stroke();
ctx.restore();
},
buildArrawPath: function (ctx, style, idx) {
var len = Math.min(style.pointList.length, Math.round(style.pointListLength || style.pointList.length));
var symbolSize = style.symbolSize[idx] * 2;
var xStart = style.pointList[0][0];
var xEnd = style.pointList[len - 1][0];
var yStart = style.pointList[0][1];
var yEnd = style.pointList[len - 1][1];
var delta = 0;
if (style.smooth === 'spline') {
delta = 0.2;
}
var rotate = Math.atan(Math.abs((yEnd - yStart) / (xStart - xEnd)));
if (idx === 0) {
if (xEnd > xStart) {
if (yEnd > yStart) {
rotate = Math.PI * 2 - rotate + delta;
} else {
rotate += delta;
}
} else {
if (yEnd > yStart) {
rotate += Math.PI - delta;
} else {
rotate = Math.PI - rotate - delta;
}
}
} else {
if (xStart > xEnd) {
if (yStart > yEnd) {
rotate = Math.PI * 2 - rotate + delta;
} else {
rotate += delta;
}
} else {
if (yStart > yEnd) {
rotate += Math.PI - delta;
} else {
rotate = Math.PI - rotate - delta;
}
}
}
var halfRotate = Math.PI / 8;
var x = idx === 0 ? xStart : xEnd;
var y = idx === 0 ? yStart : yEnd;
var point = [
[
x + symbolSize * Math.cos(rotate - halfRotate),
y - symbolSize * Math.sin(rotate - halfRotate)
],
[
x + symbolSize * 0.6 * Math.cos(rotate),
y - symbolSize * 0.6 * Math.sin(rotate)
],
[
x + symbolSize * Math.cos(rotate + halfRotate),
y - symbolSize * Math.sin(rotate + halfRotate)
]
];
ctx.moveTo(x, y);
for (var i = 0, l = point.length; i < l; i++) {
ctx.lineTo(point[i][0], point[i][1]);
}
ctx.lineTo(x, y);
},
getPointList: function (style) {
var pointList = [
[
style.xStart,
style.yStart
],
[
style.xEnd,
style.yEnd
]
];
if (style.smooth === 'spline') {
var lastPointX = pointList[1][0];
var lastPointY = pointList[1][1];
pointList[3] = [
lastPointX,
lastPointY
];
pointList[1] = this.getOffetPoint(pointList[0], pointList[3]);
pointList[2] = this.getOffetPoint(pointList[3], pointList[0]);
pointList = smoothSpline(pointList, false);
pointList[pointList.length - 1] = [
lastPointX,
lastPointY
];
}
return pointList;
},
getOffetPoint: function (sp, ep) {
var distance = Math.sqrt(Math.round((sp[0] - ep[0]) * (sp[0] - ep[0]) + (sp[1] - ep[1]) * (sp[1] - ep[1]))) / 3;
var mp = [
sp[0],
sp[1]
];
var angle;
var deltaAngle = 0.2;
if (sp[0] != ep[0] && sp[1] != ep[1]) {
var k = (ep[1] - sp[1]) / (ep[0] - sp[0]);
angle = Math.atan(k);
} else if (sp[0] == ep[0]) {
angle = (sp[1] <= ep[1] ? 1 : -1) * Math.PI / 2;
} else {
angle = 0;
}
var dX;
var dY;
if (sp[0] <= ep[0]) {
angle -= deltaAngle;
dX = Math.round(Math.cos(angle) * distance);
dY = Math.round(Math.sin(angle) * distance);
mp[0] += dX;
mp[1] += dY;
} else {
angle += deltaAngle;
dX = Math.round(Math.cos(angle) * distance);
dY = Math.round(Math.sin(angle) * distance);
mp[0] -= dX;
mp[1] -= dY;
}
return mp;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth = style.lineWidth || 1;
style.__rect = {
x: Math.min(style.xStart, style.xEnd) - lineWidth,
y: Math.min(style.yStart, style.yEnd) - lineWidth,
width: Math.abs(style.xStart - style.xEnd) + lineWidth,
height: Math.abs(style.yStart - style.yEnd) + lineWidth
};
return style.__rect;
},
isCover: function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.style.__rect;
if (!rect) {
rect = this.style.__rect = this.getRect(this.style);
}
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return this.style.smooth !== 'spline' ? area.isInside(lineInstance, this.style, x, y) : area.isInside(brokenLineInstance, this.style, x, y);
}
return false;
}
};
zrUtil.inherits(MarkLine, Base);
return MarkLine;
});define('echarts/util/shape/Symbol', [
'require',
'zrender/shape/Base',
'zrender/shape/Polygon',
'zrender/tool/util',
'./normalIsCover'
], function (require) {
var Base = require('zrender/shape/Base');
var PolygonShape = require('zrender/shape/Polygon');
var polygonInstance = new PolygonShape({});
var zrUtil = require('zrender/tool/util');
function Symbol(options) {
Base.call(this, options);
}
Symbol.prototype = {
type: 'symbol',
buildPath: function (ctx, style) {
var pointList = style.pointList;
var len = pointList.length;
if (len === 0) {
return;
}
var subSize = 10000;
var subSetLength = Math.ceil(len / subSize);
var sub;
var subLen;
var isArray = pointList[0] instanceof Array;
var size = style.size ? style.size : 2;
var curSize = size;
var halfSize = size / 2;
var PI2 = Math.PI * 2;
var percent;
var x;
var y;
for (var j = 0; j < subSetLength; j++) {
ctx.beginPath();
sub = j * subSize;
subLen = sub + subSize;
subLen = subLen > len ? len : subLen;
for (var i = sub; i < subLen; i++) {
if (style.random) {
percent = style['randomMap' + i % 20] / 100;
curSize = size * percent * percent;
halfSize = curSize / 2;
}
if (isArray) {
x = pointList[i][0];
y = pointList[i][1];
} else {
x = pointList[i].x;
y = pointList[i].y;
}
if (curSize < 3) {
ctx.rect(x - halfSize, y - halfSize, curSize, curSize);
} else {
switch (style.iconType) {
case 'circle':
ctx.moveTo(x, y);
ctx.arc(x, y, halfSize, 0, PI2, true);
break;
case 'diamond':
ctx.moveTo(x, y - halfSize);
ctx.lineTo(x + halfSize / 3, y - halfSize / 3);
ctx.lineTo(x + halfSize, y);
ctx.lineTo(x + halfSize / 3, y + halfSize / 3);
ctx.lineTo(x, y + halfSize);
ctx.lineTo(x - halfSize / 3, y + halfSize / 3);
ctx.lineTo(x - halfSize, y);
ctx.lineTo(x - halfSize / 3, y - halfSize / 3);
ctx.lineTo(x, y - halfSize);
break;
default:
ctx.rect(x - halfSize, y - halfSize, curSize, curSize);
}
}
}
ctx.closePath();
if (j < subSetLength - 1) {
switch (style.brushType) {
case 'both':
ctx.fill();
style.lineWidth > 0 && ctx.stroke();
break;
case 'stroke':
style.lineWidth > 0 && ctx.stroke();
break;
default:
ctx.fill();
}
}
}
},
getRect: function (style) {
return style.__rect || polygonInstance.getRect(style);
},
isCover: require('./normalIsCover')
};
zrUtil.inherits(Symbol, Base);
return Symbol;
});define('echarts/util/ecAnimation', [
'require',
'zrender/tool/util',
'zrender/shape/Polygon'
], function (require) {
var zrUtil = require('zrender/tool/util');
function pointList(zr, oldShape, newShape, duration, easing) {
var newPointList = newShape.style.pointList;
var newPointListLen = newPointList.length;
var oldPointList;
if (!oldShape) {
oldPointList = [];
if (newShape._orient != 'vertical') {
var y = newPointList[0][1];
for (var i = 0; i < newPointListLen; i++) {
oldPointList[i] = [
newPointList[i][0],
y
];
}
} else {
var x = newPointList[0][0];
for (var i = 0; i < newPointListLen; i++) {
oldPointList[i] = [
x,
newPointList[i][1]
];
}
}
if (newShape.type == 'half-smooth-polygon') {
oldPointList[newPointListLen - 1] = zrUtil.clone(newPointList[newPointListLen - 1]);
oldPointList[newPointListLen - 2] = zrUtil.clone(newPointList[newPointListLen - 2]);
}
oldShape = { style: { pointList: oldPointList } };
}
oldPointList = oldShape.style.pointList;
var oldPointListLen = oldPointList.length;
if (oldPointListLen == newPointListLen) {
newShape.style.pointList = oldPointList;
} else if (oldPointListLen < newPointListLen) {
newShape.style.pointList = oldPointList.concat(newPointList.slice(oldPointListLen));
} else {
newShape.style.pointList = oldPointList.slice(0, newPointListLen);
}
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, { pointList: newPointList }).start(easing);
}
function cloneStyle(target, source) {
var len = arguments.length;
for (var i = 2; i < len; i++) {
var prop = arguments[i];
target.style[prop] = source.style[prop];
}
}
function rectangle(zr, oldShape, newShape, duration, easing) {
var newShapeStyle = newShape.style;
if (!oldShape) {
oldShape = {
position: newShape.position,
style: {
x: newShapeStyle.x,
y: newShape._orient == 'vertical' ? newShapeStyle.y + newShapeStyle.height : newShapeStyle.y,
width: newShape._orient == 'vertical' ? newShapeStyle.width : 0,
height: newShape._orient != 'vertical' ? newShapeStyle.height : 0
}
};
}
var newX = newShapeStyle.x;
var newY = newShapeStyle.y;
var newWidth = newShapeStyle.width;
var newHeight = newShapeStyle.height;
var newPosition = [
newShape.position[0],
newShape.position[1]
];
cloneStyle(newShape, oldShape, 'x', 'y', 'width', 'height');
newShape.position = oldShape.position;
zr.addShape(newShape);
if (newPosition[0] != oldShape.position[0] || newPosition[1] != oldShape.position[1]) {
zr.animate(newShape.id, '').when(duration, { position: newPosition }).start(easing);
}
zr.animate(newShape.id, 'style').when(duration, {
x: newX,
y: newY,
width: newWidth,
height: newHeight
}).start(easing);
}
function candle(zr, oldShape, newShape, duration, easing) {
if (!oldShape) {
var y = newShape.style.y;
oldShape = {
style: {
y: [
y[0],
y[0],
y[0],
y[0]
]
}
};
}
var newY = newShape.style.y;
newShape.style.y = oldShape.style.y;
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, { y: newY }).start(easing);
}
function ring(zr, oldShape, newShape, duration, easing) {
var x = newShape.style.x;
var y = newShape.style.y;
var r0 = newShape.style.r0;
var r = newShape.style.r;
if (newShape._animationAdd != 'r') {
newShape.style.r0 = 0;
newShape.style.r = 0;
newShape.rotation = [
Math.PI * 2,
x,
y
];
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, {
r0: r0,
r: r
}).start(easing);
zr.animate(newShape.id, '').when(Math.round(duration / 3 * 2), {
rotation: [
0,
x,
y
]
}).start(easing);
} else {
newShape.style.r0 = newShape.style.r;
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, { r0: r0 }).start(easing);
}
}
function sector(zr, oldShape, newShape, duration, easing) {
if (!oldShape) {
if (newShape._animationAdd != 'r') {
oldShape = {
style: {
startAngle: newShape.style.startAngle,
endAngle: newShape.style.startAngle
}
};
} else {
oldShape = { style: { r0: newShape.style.r } };
}
}
var startAngle = newShape.style.startAngle;
var endAngle = newShape.style.endAngle;
cloneStyle(newShape, oldShape, 'startAngle', 'endAngle');
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, {
startAngle: startAngle,
endAngle: endAngle
}).start(easing);
}
function text(zr, oldShape, newShape, duration, easing) {
if (!oldShape) {
oldShape = {
style: {
x: newShape.style.textAlign == 'left' ? newShape.style.x + 100 : newShape.style.x - 100,
y: newShape.style.y
}
};
}
var x = newShape.style.x;
var y = newShape.style.y;
cloneStyle(newShape, oldShape, 'x', 'y');
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, {
x: x,
y: y
}).start(easing);
}
function polygon(zr, oldShape, newShape, duration, easing) {
var rect = require('zrender/shape/Polygon').prototype.getRect(newShape.style);
var x = rect.x + rect.width / 2;
var y = rect.y + rect.height / 2;
newShape.scale = [
0.1,
0.1,
x,
y
];
zr.addShape(newShape);
zr.animate(newShape.id, '').when(duration, {
scale: [
1,
1,
x,
y
]
}).start(easing);
}
function ribbon(zr, oldShape, newShape, duration, easing) {
if (!oldShape) {
oldShape = {
style: {
source0: 0,
source1: newShape.style.source1 > 0 ? 360 : -360,
target0: 0,
target1: newShape.style.target1 > 0 ? 360 : -360
}
};
}
var source0 = newShape.style.source0;
var source1 = newShape.style.source1;
var target0 = newShape.style.target0;
var target1 = newShape.style.target1;
if (oldShape.style) {
cloneStyle(newShape, oldShape, 'source0', 'source1', 'target0', 'target1');
}
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, {
source0: source0,
source1: source1,
target0: target0,
target1: target1
}).start(easing);
}
function gaugePointer(zr, oldShape, newShape, duration, easing) {
if (!oldShape) {
oldShape = { style: { angle: newShape.style.startAngle } };
}
var angle = newShape.style.angle;
newShape.style.angle = oldShape.style.angle;
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, { angle: angle }).start(easing);
}
function icon(zr, oldShape, newShape, duration, easing, delay) {
newShape.style._x = newShape.style.x;
newShape.style._y = newShape.style.y;
newShape.style._width = newShape.style.width;
newShape.style._height = newShape.style.height;
if (!oldShape) {
var x = newShape._x || 0;
var y = newShape._y || 0;
newShape.scale = [
0.01,
0.01,
x,
y
];
zr.addShape(newShape);
zr.animate(newShape.id, '').delay(delay).when(duration, {
scale: [
1,
1,
x,
y
]
}).start(easing || 'QuinticOut');
} else {
rectangle(zr, oldShape, newShape, duration, easing);
}
}
function line(zr, oldShape, newShape, duration, easing) {
if (!oldShape) {
oldShape = {
style: {
xStart: newShape.style.xStart,
yStart: newShape.style.yStart,
xEnd: newShape.style.xStart,
yEnd: newShape.style.yStart
}
};
}
var xStart = newShape.style.xStart;
var xEnd = newShape.style.xEnd;
var yStart = newShape.style.yStart;
var yEnd = newShape.style.yEnd;
cloneStyle(newShape, oldShape, 'xStart', 'xEnd', 'yStart', 'yEnd');
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, {
xStart: xStart,
xEnd: xEnd,
yStart: yStart,
yEnd: yEnd
}).start(easing);
}
function markline(zr, oldShape, newShape, duration, easing) {
if (!newShape.style.smooth) {
newShape.style.pointList = !oldShape ? [
[
newShape.style.xStart,
newShape.style.yStart
],
[
newShape.style.xStart,
newShape.style.yStart
]
] : oldShape.style.pointList;
zr.addShape(newShape);
zr.animate(newShape.id, 'style').when(duration, {
pointList: [
[
newShape.style.xStart,
newShape.style.yStart
],
[
newShape._x || 0,
newShape._y || 0
]
]
}).start(easing || 'QuinticOut');
} else {
if (!oldShape) {
newShape.style.pointListLength = 1;
zr.addShape(newShape);
newShape.style.pointList = newShape.style.pointList || newShape.getPointList(newShape.style);
zr.animate(newShape.id, 'style').when(duration, { pointListLength: newShape.style.pointList.length }).start(easing || 'QuinticOut');
} else {
zr.addShape(newShape);
}
}
}
return {
pointList: pointList,
rectangle: rectangle,
candle: candle,
ring: ring,
sector: sector,
text: text,
polygon: polygon,
ribbon: ribbon,
gaugePointer: gaugePointer,
icon: icon,
line: line,
markline: markline
};
});define('echarts/util/ecEffect', [
'require',
'../util/ecData',
'zrender/shape/Circle',
'zrender/shape/Image',
'../util/shape/Icon',
'../util/shape/Symbol',
'zrender/tool/env'
], function (require) {
var ecData = require('../util/ecData');
var CircleShape = require('zrender/shape/Circle');
var ImageShape = require('zrender/shape/Image');
var IconShape = require('../util/shape/Icon');
var SymbolShape = require('../util/shape/Symbol');
var canvasSupported = require('zrender/tool/env').canvasSupported;
function point(zr, effectList, shape, zlevel) {
var effect = shape.effect;
var color = effect.color || shape.style.strokeColor || shape.style.color;
var shadowColor = effect.shadowColor || color;
var size = effect.scaleSize;
var shadowBlur = typeof effect.shadowBlur != 'undefined' ? effect.shadowBlur : size;
var effectShape = new IconShape({
zlevel: zlevel,
style: {
brushType: 'stroke',
iconType: shape.style.iconType != 'pin' && shape.style.iconType != 'droplet' ? shape.style.iconType : 'circle',
x: shadowBlur + 1,
y: shadowBlur + 1,
n: shape.style.n,
width: shape.style._width * size,
height: shape.style._height * size,
lineWidth: 1,
strokeColor: color,
shadowColor: shadowColor,
shadowBlur: shadowBlur
},
draggable: false,
hoverable: false
});
if (canvasSupported) {
effectShape.style.image = zr.shapeToImage(effectShape, effectShape.style.width + shadowBlur * 2 + 2, effectShape.style.height + shadowBlur * 2 + 2).style.image;
effectShape = new ImageShape({
zlevel: effectShape.zlevel,
style: effectShape.style,
draggable: false,
hoverable: false
});
}
ecData.clone(shape, effectShape);
effectShape.position = shape.position;
effectList.push(effectShape);
zr.addShape(effectShape);
var devicePixelRatio = window.devicePixelRatio || 1;
var offset = (effectShape.style.width / devicePixelRatio - shape.style._width) / 2;
effectShape.style.x = shape.style._x - offset;
effectShape.style.y = shape.style._y - offset;
var duration = (effect.period + Math.random() * 10) * 100;
zr.modShape(shape.id, { invisible: true });
var centerX = effectShape.style.x + effectShape.style.width / 2 / devicePixelRatio;
var centerY = effectShape.style.y + effectShape.style.height / 2 / devicePixelRatio;
zr.modShape(effectShape.id, {
scale: [
0.1,
0.1,
centerX,
centerY
]
});
zr.animate(effectShape.id, '', effect.loop).when(duration, {
scale: [
1,
1,
centerX,
centerY
]
}).done(function () {
shape.effect.show = false;
zr.delShape(effectShape.id);
}).start();
}
function largePoint(zr, effectList, shape, zlevel) {
var effect = shape.effect;
var color = effect.color || shape.style.strokeColor || shape.style.color;
var size = effect.scaleSize;
var shadowColor = effect.shadowColor || color;
var shadowBlur = typeof effect.shadowBlur != 'undefined' ? effect.shadowBlur : size * 2;
var devicePixelRatio = window.devicePixelRatio || 1;
var effectShape = new SymbolShape({
zlevel: zlevel,
position: shape.position,
scale: shape.scale,
style: {
pointList: shape.style.pointList,
iconType: shape.style.iconType,
color: color,
strokeColor: color,
shadowColor: shadowColor,
shadowBlur: shadowBlur * devicePixelRatio,
random: true,
brushType: 'fill',
lineWidth: 1,
size: shape.style.size
},
draggable: false,
hoverable: false
});
effectList.push(effectShape);
zr.addShape(effectShape);
zr.modShape(shape.id, { invisible: true });
var duration = Math.round(effect.period * 100);
var clip1 = {};
var clip2 = {};
for (var i = 0; i < 20; i++) {
effectShape.style['randomMap' + i] = 0;
clip1 = {};
clip1['randomMap' + i] = 100;
clip2 = {};
clip2['randomMap' + i] = 0;
effectShape.style['randomMap' + i] = Math.random() * 100;
zr.animate(effectShape.id, 'style', true).when(duration, clip1).when(duration * 2, clip2).when(duration * 3, clip1).when(duration * 4, clip1).delay(Math.random() * duration * i).start();
}
}
function line(zr, effectList, shape, zlevel) {
var effect = shape.effect;
var color = effect.color || shape.style.strokeColor || shape.style.color;
var shadowColor = effect.shadowColor || shape.style.strokeColor || color;
var size = shape.style.lineWidth * effect.scaleSize;
var shadowBlur = typeof effect.shadowBlur != 'undefined' ? effect.shadowBlur : size;
var effectShape = new CircleShape({
zlevel: zlevel,
style: {
x: shadowBlur,
y: shadowBlur,
r: size,
color: color,
shadowColor: shadowColor,
shadowBlur: shadowBlur
},
draggable: false,
hoverable: false
});
var offset;
if (canvasSupported) {
effectShape.style.image = zr.shapeToImage(effectShape, (size + shadowBlur) * 2, (size + shadowBlur) * 2).style.image;
effectShape = new ImageShape({
zlevel: effectShape.zlevel,
style: effectShape.style,
draggable: false,
hoverable: false
});
offset = shadowBlur;
} else {
offset = 0;
}
ecData.clone(shape, effectShape);
effectShape.position = shape.position;
effectList.push(effectShape);
zr.addShape(effectShape);
effectShape.style.x = shape.style.xStart - offset;
effectShape.style.y = shape.style.yStart - offset;
var distance = (shape.style.xStart - shape.style.xEnd) * (shape.style.xStart - shape.style.xEnd) + (shape.style.yStart - shape.style.yEnd) * (shape.style.yStart - shape.style.yEnd);
var duration = Math.round(Math.sqrt(Math.round(distance * effect.period * effect.period)));
if (!shape.style.smooth) {
zr.animate(effectShape.id, 'style', effect.loop).when(duration, {
x: shape._x - offset,
y: shape._y - offset
}).done(function () {
shape.effect.show = false;
zr.delShape(effectShape.id);
}).start();
} else {
var pointList = shape.style.pointList || shape.getPointList(shape.style);
var len = pointList.length;
duration = Math.round(duration / len);
var deferred = zr.animate(effectShape.id, 'style', effect.loop);
var step = Math.ceil(len / 8);
for (var j = 0; j < len - step; j += step) {
deferred.when(duration * (j + 1), {
x: pointList[j][0] - offset,
y: pointList[j][1] - offset
});
}
deferred.when(duration * len, {
x: pointList[len - 1][0] - offset,
y: pointList[len - 1][1] - offset
});
deferred.done(function () {
shape.effect.show = false;
zr.delShape(effectShape.id);
});
deferred.start('spline');
}
}
return {
point: point,
largePoint: largePoint,
line: line
};
});define('zrender/shape/Star', [
'require',
'../tool/math',
'./Base',
'../tool/util'
], function (require) {
var math = require('../tool/math');
var sin = math.sin;
var cos = math.cos;
var PI = Math.PI;
var Base = require('./Base');
var Star = function (options) {
Base.call(this, options);
};
Star.prototype = {
type: 'star',
buildPath: function (ctx, style) {
var n = style.n;
if (!n || n < 2) {
return;
}
var x = style.x;
var y = style.y;
var r = style.r;
var r0 = style.r0;
if (r0 == null) {
r0 = n > 4 ? r * cos(2 * PI / n) / cos(PI / n) : r / 3;
}
var dStep = PI / n;
var deg = -PI / 2;
var xStart = x + r * cos(deg);
var yStart = y + r * sin(deg);
deg += dStep;
var pointList = style.pointList = [];
pointList.push([
xStart,
yStart
]);
for (var i = 0, end = n * 2 - 1, ri; i < end; i++) {
ri = i % 2 === 0 ? r0 : r;
pointList.push([
x + ri * cos(deg),
y + ri * sin(deg)
]);
deg += dStep;
}
pointList.push([
xStart,
yStart
]);
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 0; i < pointList.length; i++) {
ctx.lineTo(pointList[i][0], pointList[i][1]);
}
ctx.closePath();
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
style.__rect = {
x: Math.round(style.x - style.r - lineWidth / 2),
y: Math.round(style.y - style.r - lineWidth / 2),
width: style.r * 2 + lineWidth,
height: style.r * 2 + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Star, Base);
return Star;
});define('zrender/shape/Heart', [
'require',
'./Base',
'./util/PathProxy',
'zrender/tool/area',
'../tool/util'
], function (require) {
'use strict';
var Base = require('./Base');
var PathProxy = require('./util/PathProxy');
var area = require('zrender/tool/area');
var Heart = function (options) {
Base.call(this, options);
this._pathProxy = new PathProxy();
};
Heart.prototype = {
type: 'heart',
buildPath: function (ctx, style) {
var path = this._pathProxy || new PathProxy();
path.begin(ctx);
path.moveTo(style.x, style.y);
path.bezierCurveTo(style.x + style.a / 2, style.y - style.b * 2 / 3, style.x + style.a * 2, style.y + style.b / 3, style.x, style.y + style.b);
path.bezierCurveTo(style.x - style.a * 2, style.y + style.b / 3, style.x - style.a / 2, style.y - style.b * 2 / 3, style.x, style.y);
path.closePath();
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
if (!this._pathProxy.isEmpty()) {
this.buildPath(null, style);
}
return this._pathProxy.fastBoundingRect();
},
isCover: function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.getRect(this.style);
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return area.isInsidePath(this._pathProxy.pathCommands, this.style.lineWidth, this.style.brushType, x, y);
}
}
};
require('../tool/util').inherits(Heart, Base);
return Heart;
});define('zrender/shape/Droplet', [
'require',
'./Base',
'./util/PathProxy',
'zrender/tool/area',
'../tool/util'
], function (require) {
'use strict';
var Base = require('./Base');
var PathProxy = require('./util/PathProxy');
var area = require('zrender/tool/area');
var Droplet = function (options) {
Base.call(this, options);
this._pathProxy = new PathProxy();
};
Droplet.prototype = {
type: 'droplet',
buildPath: function (ctx, style) {
var path = this._pathProxy || new PathProxy();
path.begin(ctx);
path.moveTo(style.x, style.y + style.a);
path.bezierCurveTo(style.x + style.a, style.y + style.a, style.x + style.a * 3 / 2, style.y - style.a / 3, style.x, style.y - style.b);
path.bezierCurveTo(style.x - style.a * 3 / 2, style.y - style.a / 3, style.x - style.a, style.y + style.a, style.x, style.y + style.a);
path.closePath();
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
if (!this._pathProxy.isEmpty()) {
this.buildPath(null, style);
}
return this._pathProxy.fastBoundingRect();
},
isCover: function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.getRect(this.style);
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return area.isInsidePath(this._pathProxy.pathCommands, this.style.lineWidth, this.style.brushType, x, y);
}
}
};
require('../tool/util').inherits(Droplet, Base);
return Droplet;
});define('zrender/tool/math', [], function () {
var _radians = Math.PI / 180;
function sin(angle, isDegrees) {
return Math.sin(isDegrees ? angle * _radians : angle);
}
function cos(angle, isDegrees) {
return Math.cos(isDegrees ? angle * _radians : angle);
}
function degreeToRadian(angle) {
return angle * _radians;
}
function radianToDegree(angle) {
return angle / _radians;
}
return {
sin: sin,
cos: cos,
degreeToRadian: degreeToRadian,
radianToDegree: radianToDegree
};
});define('zrender/shape/util/PathProxy', [
'require',
'../../tool/vector'
], function (require) {
var vector = require('../../tool/vector');
var PathSegment = function (command, points) {
this.command = command;
this.points = points || null;
};
var PathProxy = function () {
this.pathCommands = [];
this._ctx = null;
this._min = [];
this._max = [];
};
PathProxy.prototype.fastBoundingRect = function () {
var min = this._min;
var max = this._max;
min[0] = min[1] = Infinity;
max[0] = max[1] = -Infinity;
for (var i = 0; i < this.pathCommands.length; i++) {
var seg = this.pathCommands[i];
var p = seg.points;
switch (seg.command) {
case 'M':
vector.min(min, min, p);
vector.max(max, max, p);
break;
case 'L':
vector.min(min, min, p);
vector.max(max, max, p);
break;
case 'C':
for (var j = 0; j < 6; j += 2) {
min[0] = Math.min(min[0], min[0], p[j]);
min[1] = Math.min(min[1], min[1], p[j + 1]);
max[0] = Math.max(max[0], max[0], p[j]);
max[1] = Math.max(max[1], max[1], p[j + 1]);
}
break;
case 'Q':
for (var j = 0; j < 4; j += 2) {
min[0] = Math.min(min[0], min[0], p[j]);
min[1] = Math.min(min[1], min[1], p[j + 1]);
max[0] = Math.max(max[0], max[0], p[j]);
max[1] = Math.max(max[1], max[1], p[j + 1]);
}
break;
case 'A':
var cx = p[0];
var cy = p[1];
var rx = p[2];
var ry = p[3];
min[0] = Math.min(min[0], min[0], cx - rx);
min[1] = Math.min(min[1], min[1], cy - ry);
max[0] = Math.max(max[0], max[0], cx + rx);
max[1] = Math.max(max[1], max[1], cy + ry);
break;
}
}
return {
x: min[0],
y: min[1],
width: max[0] - min[0],
height: max[1] - min[1]
};
};
PathProxy.prototype.begin = function (ctx) {
this._ctx = ctx || null;
this.pathCommands.length = 0;
return this;
};
PathProxy.prototype.moveTo = function (x, y) {
this.pathCommands.push(new PathSegment('M', [
x,
y
]));
if (this._ctx) {
this._ctx.moveTo(x, y);
}
return this;
};
PathProxy.prototype.lineTo = function (x, y) {
this.pathCommands.push(new PathSegment('L', [
x,
y
]));
if (this._ctx) {
this._ctx.lineTo(x, y);
}
return this;
};
PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {
this.pathCommands.push(new PathSegment('C', [
x1,
y1,
x2,
y2,
x3,
y3
]));
if (this._ctx) {
this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
}
return this;
};
PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {
this.pathCommands.push(new PathSegment('Q', [
x1,
y1,
x2,
y2
]));
if (this._ctx) {
this._ctx.quadraticCurveTo(x1, y1, x2, y2);
}
return this;
};
PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {
this.pathCommands.push(new PathSegment('A', [
cx,
cy,
r,
r,
startAngle,
endAngle - startAngle,
0,
anticlockwise ? 0 : 1
]));
if (this._ctx) {
this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);
}
return this;
};
PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {
if (this._ctx) {
this._ctx.arcTo(x1, y1, x2, y2, radius);
}
return this;
};
PathProxy.prototype.rect = function (x, y, w, h) {
if (this._ctx) {
this._ctx.rect(x, y, w, h);
}
return this;
};
PathProxy.prototype.closePath = function () {
this.pathCommands.push(new PathSegment('z'));
if (this._ctx) {
this._ctx.closePath();
}
return this;
};
PathProxy.prototype.isEmpty = function () {
return this.pathCommands.length === 0;
};
PathProxy.PathSegment = PathSegment;
return PathProxy;
});define('zrender/shape/Line', [
'require',
'./Base',
'./util/dashedLineTo',
'../tool/util'
], function (require) {
var Base = require('./Base');
var dashedLineTo = require('./util/dashedLineTo');
var Line = function (options) {
this.brushTypeOnly = 'stroke';
this.textPosition = 'end';
Base.call(this, options);
};
Line.prototype = {
type: 'line',
buildPath: function (ctx, style) {
if (!style.lineType || style.lineType == 'solid') {
ctx.moveTo(style.xStart, style.yStart);
ctx.lineTo(style.xEnd, style.yEnd);
} else if (style.lineType == 'dashed' || style.lineType == 'dotted') {
var dashLength = (style.lineWidth || 1) * (style.lineType == 'dashed' ? 5 : 1);
dashedLineTo(ctx, style.xStart, style.yStart, style.xEnd, style.yEnd, dashLength);
}
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth = style.lineWidth || 1;
style.__rect = {
x: Math.min(style.xStart, style.xEnd) - lineWidth,
y: Math.min(style.yStart, style.yEnd) - lineWidth,
width: Math.abs(style.xStart - style.xEnd) + lineWidth,
height: Math.abs(style.yStart - style.yEnd) + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Line, Base);
return Line;
});define('zrender/shape/BrokenLine', [
'require',
'./Base',
'./util/smoothSpline',
'./util/smoothBezier',
'./util/dashedLineTo',
'./Polygon',
'../tool/util'
], function (require) {
var Base = require('./Base');
var smoothSpline = require('./util/smoothSpline');
var smoothBezier = require('./util/smoothBezier');
var dashedLineTo = require('./util/dashedLineTo');
var BrokenLine = function (options) {
this.brushTypeOnly = 'stroke';
this.textPosition = 'end';
Base.call(this, options);
};
BrokenLine.prototype = {
type: 'broken-line',
buildPath: function (ctx, style) {
var pointList = style.pointList;
if (pointList.length < 2) {
return;
}
var len = Math.min(style.pointList.length, Math.round(style.pointListLength || style.pointList.length));
if (style.smooth && style.smooth !== 'spline') {
var controlPoints = smoothBezier(pointList, style.smooth, false, style.smoothConstraint);
ctx.moveTo(pointList[0][0], pointList[0][1]);
var cp1;
var cp2;
var p;
for (var i = 0; i < len - 1; i++) {
cp1 = controlPoints[i * 2];
cp2 = controlPoints[i * 2 + 1];
p = pointList[i + 1];
ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);
}
} else {
if (style.smooth === 'spline') {
pointList = smoothSpline(pointList);
len = pointList.length;
}
if (!style.lineType || style.lineType == 'solid') {
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 1; i < len; i++) {
ctx.lineTo(pointList[i][0], pointList[i][1]);
}
} else if (style.lineType == 'dashed' || style.lineType == 'dotted') {
var dashLength = (style.lineWidth || 1) * (style.lineType == 'dashed' ? 5 : 1);
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 1; i < len; i++) {
dashedLineTo(ctx, pointList[i - 1][0], pointList[i - 1][1], pointList[i][0], pointList[i][1], dashLength);
}
}
}
return;
},
getRect: function (style) {
return require('./Polygon').prototype.getRect(style);
}
};
require('../tool/util').inherits(BrokenLine, Base);
return BrokenLine;
});define('zrender/shape/util/dashedLineTo', [], function () {
var dashPattern = [
5,
5
];
return function (ctx, x1, y1, x2, y2, dashLength) {
if (ctx.setLineDash) {
dashPattern[0] = dashPattern[1] = dashLength;
ctx.setLineDash(dashPattern);
ctx.moveTo(x1, y1);
ctx.lineTo(x2, y2);
return;
}
dashLength = typeof dashLength != 'number' ? 5 : dashLength;
var dx = x2 - x1;
var dy = y2 - y1;
var numDashes = Math.floor(Math.sqrt(dx * dx + dy * dy) / dashLength);
dx = dx / numDashes;
dy = dy / numDashes;
var flag = true;
for (var i = 0; i < numDashes; ++i) {
if (flag) {
ctx.moveTo(x1, y1);
} else {
ctx.lineTo(x1, y1);
}
flag = !flag;
x1 += dx;
y1 += dy;
}
ctx.lineTo(x2, y2);
};
});define('zrender/shape/util/smoothSpline', [
'require',
'../../tool/vector'
], function (require) {
var vector = require('../../tool/vector');
function interpolate(p0, p1, p2, p3, t, t2, t3) {
var v0 = (p2 - p0) * 0.5;
var v1 = (p3 - p1) * 0.5;
return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;
}
return function (points, isLoop, constraint) {
var len = points.length;
var ret = [];
var distance = 0;
for (var i = 1; i < len; i++) {
distance += vector.distance(points[i - 1], points[i]);
}
var segs = distance / 5;
segs = segs < len ? len : segs;
for (var i = 0; i < segs; i++) {
var pos = i / (segs - 1) * (isLoop ? len : len - 1);
var idx = Math.floor(pos);
var w = pos - idx;
var p0;
var p1 = points[idx % len];
var p2;
var p3;
if (!isLoop) {
p0 = points[idx === 0 ? idx : idx - 1];
p2 = points[idx > len - 2 ? len - 1 : idx + 1];
p3 = points[idx > len - 3 ? len - 1 : idx + 2];
} else {
p0 = points[(idx - 1 + len) % len];
p2 = points[(idx + 1) % len];
p3 = points[(idx + 2) % len];
}
var w2 = w * w;
var w3 = w * w2;
ret.push([
interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),
interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)
]);
}
return ret;
};
});define('zrender/shape/util/smoothBezier', [
'require',
'../../tool/vector'
], function (require) {
var vector = require('../../tool/vector');
return function (points, smooth, isLoop, constraint) {
var cps = [];
var v = [];
var v1 = [];
var v2 = [];
var prevPoint;
var nextPoint;
var hasConstraint = !!constraint;
var min, max;
if (hasConstraint) {
min = [
Infinity,
Infinity
];
max = [
-Infinity,
-Infinity
];
for (var i = 0, len = points.length; i < len; i++) {
vector.min(min, min, points[i]);
vector.max(max, max, points[i]);
}
vector.min(min, min, constraint[0]);
vector.max(max, max, constraint[1]);
}
for (var i = 0, len = points.length; i < len; i++) {
var point = points[i];
var prevPoint;
var nextPoint;
if (isLoop) {
prevPoint = points[i ? i - 1 : len - 1];
nextPoint = points[(i + 1) % len];
} else {
if (i === 0 || i === len - 1) {
cps.push(points[i]);
continue;
} else {
prevPoint = points[i - 1];
nextPoint = points[i + 1];
}
}
vector.sub(v, nextPoint, prevPoint);
vector.scale(v, v, smooth);
var d0 = vector.distance(point, prevPoint);
var d1 = vector.distance(point, nextPoint);
var sum = d0 + d1;
if (sum !== 0) {
d0 /= sum;
d1 /= sum;
}
vector.scale(v1, v, -d0);
vector.scale(v2, v, d1);
var cp0 = vector.add([], point, v1);
var cp1 = vector.add([], point, v2);
if (hasConstraint) {
vector.max(cp0, cp0, min);
vector.min(cp0, cp0, max);
vector.max(cp1, cp1, min);
vector.min(cp1, cp1, max);
}
cps.push(cp0);
cps.push(cp1);
}
if (isLoop) {
cps.push(cps.shift());
}
return cps;
};
});define('zrender/shape/Polygon', [
'require',
'./Base',
'./util/smoothSpline',
'./util/smoothBezier',
'./util/dashedLineTo',
'../tool/util'
], function (require) {
var Base = require('./Base');
var smoothSpline = require('./util/smoothSpline');
var smoothBezier = require('./util/smoothBezier');
var dashedLineTo = require('./util/dashedLineTo');
var Polygon = function (options) {
Base.call(this, options);
};
Polygon.prototype = {
type: 'polygon',
brush: function (ctx, isHighlight) {
var style = this.style;
if (isHighlight) {
style = this.getHighlightStyle(style, this.highlightStyle || {});
}
ctx.save();
this.setContext(ctx, style);
this.setTransform(ctx);
var hasPath = false;
if (style.brushType == 'fill' || style.brushType == 'both' || typeof style.brushType == 'undefined') {
ctx.beginPath();
if (style.lineType == 'dashed' || style.lineType == 'dotted') {
this.buildPath(ctx, {
lineType: 'solid',
lineWidth: style.lineWidth,
pointList: style.pointList
});
hasPath = false;
} else {
this.buildPath(ctx, style);
hasPath = true;
}
ctx.closePath();
ctx.fill();
}
if (style.lineWidth > 0 && (style.brushType == 'stroke' || style.brushType == 'both')) {
if (!hasPath) {
ctx.beginPath();
this.buildPath(ctx, style);
}
ctx.stroke();
}
this.drawText(ctx, style, this.style);
ctx.restore();
return;
},
buildPath: function (ctx, style) {
var pointList = style.pointList;
if (pointList.length < 2) {
return;
}
if (style.smooth && style.smooth !== 'spline') {
var controlPoints = smoothBezier(pointList, style.smooth, true, style.smoothConstraint);
ctx.moveTo(pointList[0][0], pointList[0][1]);
var cp1;
var cp2;
var p;
var len = pointList.length;
for (var i = 0; i < len; i++) {
cp1 = controlPoints[i * 2];
cp2 = controlPoints[i * 2 + 1];
p = pointList[(i + 1) % len];
ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);
}
} else {
if (style.smooth === 'spline') {
pointList = smoothSpline(pointList, true);
}
if (!style.lineType || style.lineType == 'solid') {
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 1, l = pointList.length; i < l; i++) {
ctx.lineTo(pointList[i][0], pointList[i][1]);
}
ctx.lineTo(pointList[0][0], pointList[0][1]);
} else if (style.lineType == 'dashed' || style.lineType == 'dotted') {
var dashLength = style._dashLength || (style.lineWidth || 1) * (style.lineType == 'dashed' ? 5 : 1);
style._dashLength = dashLength;
ctx.moveTo(pointList[0][0], pointList[0][1]);
for (var i = 1, l = pointList.length; i < l; i++) {
dashedLineTo(ctx, pointList[i - 1][0], pointList[i - 1][1], pointList[i][0], pointList[i][1], dashLength);
}
dashedLineTo(ctx, pointList[pointList.length - 1][0], pointList[pointList.length - 1][1], pointList[0][0], pointList[0][1], dashLength);
}
}
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var minX = Number.MAX_VALUE;
var maxX = Number.MIN_VALUE;
var minY = Number.MAX_VALUE;
var maxY = Number.MIN_VALUE;
var pointList = style.pointList;
for (var i = 0, l = pointList.length; i < l; i++) {
if (pointList[i][0] < minX) {
minX = pointList[i][0];
}
if (pointList[i][0] > maxX) {
maxX = pointList[i][0];
}
if (pointList[i][1] < minY) {
minY = pointList[i][1];
}
if (pointList[i][1] > maxY) {
maxY = pointList[i][1];
}
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
style.__rect = {
x: Math.round(minX - lineWidth / 2),
y: Math.round(minY - lineWidth / 2),
width: maxX - minX + lineWidth,
height: maxY - minY + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Polygon, Base);
return Polygon;
});define('echarts/util/shape/normalIsCover', [], function () {
return function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.style.__rect;
if (!rect) {
rect = this.style.__rect = this.getRect(this.style);
}
return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;
};
});define('echarts/component/dataView', [
'require',
'./base',
'../config',
'zrender/tool/util',
'../component'
], function (require) {
var Base = require('./base');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
function DataView(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.dom = myChart.dom;
this._tDom = document.createElement('div');
this._textArea = document.createElement('textArea');
this._buttonRefresh = document.createElement('button');
this._buttonClose = document.createElement('button');
this._hasShow = false;
this._zrHeight = zr.getHeight();
this._zrWidth = zr.getWidth();
this._tDom.className = 'echarts-dataview', this.hide();
this.dom.firstChild.appendChild(this._tDom);
if (window.addEventListener) {
this._tDom.addEventListener('click', this._stop);
this._tDom.addEventListener('mousewheel', this._stop);
this._tDom.addEventListener('mousemove', this._stop);
this._tDom.addEventListener('mousedown', this._stop);
this._tDom.addEventListener('mouseup', this._stop);
this._tDom.addEventListener('touchstart', this._stop);
this._tDom.addEventListener('touchmove', this._stop);
this._tDom.addEventListener('touchend', this._stop);
} else {
this._tDom.attachEvent('onclick', this._stop);
this._tDom.attachEvent('onmousewheel', this._stop);
this._tDom.attachEvent('onmousemove', this._stop);
this._tDom.attachEvent('onmousedown', this._stop);
this._tDom.attachEvent('onmouseup', this._stop);
}
}
DataView.prototype = {
type: ecConfig.COMPONENT_TYPE_DATAVIEW,
_lang: [
'Data View',
'close',
'refresh'
],
_gCssText: 'position:absolute;' + 'display:block;' + 'overflow:hidden;' + 'transition:height 0.8s,background-color 1s;' + '-moz-transition:height 0.8s,background-color 1s;' + '-webkit-transition:height 0.8s,background-color 1s;' + '-o-transition:height 0.8s,background-color 1s;' + 'z-index:1;' + 'left:0;' + 'top:0;',
hide: function () {
this._sizeCssText = 'width:' + this._zrWidth + 'px;' + 'height:' + 0 + 'px;' + 'background-color:#f0ffff;';
this._tDom.style.cssText = this._gCssText + this._sizeCssText;
},
show: function (newOption) {
this._hasShow = true;
var lang = this.query(this.option, 'toolbox.feature.dataView.lang') || this._lang;
this.option = newOption;
this._tDom.innerHTML = '<p style="padding:8px 0;margin:0 0 10px 0;' + 'border-bottom:1px solid #eee">' + (lang[0] || this._lang[0]) + '</p>';
this._textArea.style.cssText = 'display:block;margin:0 0 8px 0;padding:4px 6px;overflow:auto;' + 'width:' + (this._zrWidth - 15) + 'px;' + 'height:' + (this._zrHeight - 100) + 'px;';
var customContent = this.query(this.option, 'toolbox.feature.dataView.optionToContent');
if (typeof customContent != 'function') {
this._textArea.value = this._optionToContent();
} else {
this._textArea.value = customContent(this.option);
}
this._tDom.appendChild(this._textArea);
this._buttonClose.style.cssText = 'float:right;padding:1px 6px;';
this._buttonClose.innerHTML = lang[1] || this._lang[1];
var self = this;
this._buttonClose.onclick = function () {
self.hide();
};
this._tDom.appendChild(this._buttonClose);
if (this.query(this.option, 'toolbox.feature.dataView.readOnly') === false) {
this._buttonRefresh.style.cssText = 'float:right;margin-right:10px;padding:1px 6px;';
this._buttonRefresh.innerHTML = lang[2] || this._lang[2];
this._buttonRefresh.onclick = function () {
self._save();
};
this._tDom.appendChild(this._buttonRefresh);
this._textArea.readOnly = false;
this._textArea.style.cursor = 'default';
} else {
this._textArea.readOnly = true;
this._textArea.style.cursor = 'text';
}
this._sizeCssText = 'width:' + this._zrWidth + 'px;' + 'height:' + this._zrHeight + 'px;' + 'background-color:#fff;';
this._tDom.style.cssText = this._gCssText + this._sizeCssText;
},
_optionToContent: function () {
var i;
var j;
var k;
var len;
var data;
var valueList;
var axisList = [];
var content = '';
if (this.option.xAxis) {
if (this.option.xAxis instanceof Array) {
axisList = this.option.xAxis;
} else {
axisList = [this.option.xAxis];
}
for (i = 0, len = axisList.length; i < len; i++) {
if ((axisList[i].type || 'category') == 'category') {
valueList = [];
for (j = 0, k = axisList[i].data.length; j < k; j++) {
data = axisList[i].data[j];
valueList.push(typeof data.value != 'undefined' ? data.value : data);
}
content += valueList.join(', ') + '\n\n';
}
}
}
if (this.option.yAxis) {
if (this.option.yAxis instanceof Array) {
axisList = this.option.yAxis;
} else {
axisList = [this.option.yAxis];
}
for (i = 0, len = axisList.length; i < len; i++) {
if (axisList[i].type == 'category') {
valueList = [];
for (j = 0, k = axisList[i].data.length; j < k; j++) {
data = axisList[i].data[j];
valueList.push(typeof data.value != 'undefined' ? data.value : data);
}
content += valueList.join(', ') + '\n\n';
}
}
}
var series = this.option.series;
var itemName;
for (i = 0, len = series.length; i < len; i++) {
valueList = [];
for (j = 0, k = series[i].data.length; j < k; j++) {
data = series[i].data[j];
if (series[i].type == ecConfig.CHART_TYPE_PIE || series[i].type == ecConfig.CHART_TYPE_MAP) {
itemName = (data.name || '-') + ':';
} else {
itemName = '';
}
if (series[i].type == ecConfig.CHART_TYPE_SCATTER) {
data = typeof data.value != 'undefined' ? data.value : data;
data = data.join(', ');
}
valueList.push(itemName + (typeof data.value != 'undefined' ? data.value : data));
}
content += (series[i].name || '-') + ' : \n';
content += valueList.join(series[i].type == ecConfig.CHART_TYPE_SCATTER ? '\n' : ', ');
content += '\n\n';
}
return content;
},
_save: function () {
var text = this._textArea.value;
var customContent = this.query(this.option, 'toolbox.feature.dataView.contentToOption');
if (typeof customContent != 'function') {
text = text.split('\n');
var content = [];
for (var i = 0, l = text.length; i < l; i++) {
text[i] = this._trim(text[i]);
if (text[i] !== '') {
content.push(text[i]);
}
}
this._contentToOption(content);
} else {
customContent(text, this.option);
}
this.hide();
var self = this;
setTimeout(function () {
self.messageCenter && self.messageCenter.dispatch(ecConfig.EVENT.DATA_VIEW_CHANGED, null, { option: self.option }, self.myChart);
}, self.canvasSupported ? 800 : 100);
},
_contentToOption: function (content) {
var i;
var j;
var k;
var len;
var data;
var axisList = [];
var contentIdx = 0;
var contentValueList;
var value;
if (this.option.xAxis) {
if (this.option.xAxis instanceof Array) {
axisList = this.option.xAxis;
} else {
axisList = [this.option.xAxis];
}
for (i = 0, len = axisList.length; i < len; i++) {
if ((axisList[i].type || 'category') == 'category') {
contentValueList = content[contentIdx].split(',');
for (j = 0, k = axisList[i].data.length; j < k; j++) {
value = this._trim(contentValueList[j] || '');
data = axisList[i].data[j];
if (typeof axisList[i].data[j].value != 'undefined') {
axisList[i].data[j].value = value;
} else {
axisList[i].data[j] = value;
}
}
contentIdx++;
}
}
}
if (this.option.yAxis) {
if (this.option.yAxis instanceof Array) {
axisList = this.option.yAxis;
} else {
axisList = [this.option.yAxis];
}
for (i = 0, len = axisList.length; i < len; i++) {
if (axisList[i].type == 'category') {
contentValueList = content[contentIdx].split(',');
for (j = 0, k = axisList[i].data.length; j < k; j++) {
value = this._trim(contentValueList[j] || '');
data = axisList[i].data[j];
if (typeof axisList[i].data[j].value != 'undefined') {
axisList[i].data[j].value = value;
} else {
axisList[i].data[j] = value;
}
}
contentIdx++;
}
}
}
var series = this.option.series;
for (i = 0, len = series.length; i < len; i++) {
contentIdx++;
if (series[i].type == ecConfig.CHART_TYPE_SCATTER) {
for (var j = 0, k = series[i].data.length; j < k; j++) {
contentValueList = content[contentIdx];
value = contentValueList.replace(' ', '').split(',');
if (typeof series[i].data[j].value != 'undefined') {
series[i].data[j].value = value;
} else {
series[i].data[j] = value;
}
contentIdx++;
}
} else {
contentValueList = content[contentIdx].split(',');
for (var j = 0, k = series[i].data.length; j < k; j++) {
value = (contentValueList[j] || '').replace(/.*:/, '');
value = this._trim(value);
value = value != '-' && value !== '' ? value - 0 : '-';
if (typeof series[i].data[j].value != 'undefined') {
series[i].data[j].value = value;
} else {
series[i].data[j] = value;
}
}
contentIdx++;
}
}
},
_trim: function (str) {
var trimer = new RegExp('(^[\\s\\t\\xa0\\u3000]+)|([\\u3000\\xa0\\s\\t]+$)', 'g');
return str.replace(trimer, '');
},
_stop: function (e) {
e = e || window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
},
resize: function () {
this._zrHeight = this.zr.getHeight();
this._zrWidth = this.zr.getWidth();
if (this._tDom.offsetHeight > 10) {
this._sizeCssText = 'width:' + this._zrWidth + 'px;' + 'height:' + this._zrHeight + 'px;' + 'background-color:#fff;';
this._tDom.style.cssText = this._gCssText + this._sizeCssText;
this._textArea.style.cssText = 'display:block;margin:0 0 8px 0;' + 'padding:4px 6px;overflow:auto;' + 'width:' + (this._zrWidth - 15) + 'px;' + 'height:' + (this._zrHeight - 100) + 'px;';
}
},
dispose: function () {
if (window.removeEventListener) {
this._tDom.removeEventListener('click', this._stop);
this._tDom.removeEventListener('mousewheel', this._stop);
this._tDom.removeEventListener('mousemove', this._stop);
this._tDom.removeEventListener('mousedown', this._stop);
this._tDom.removeEventListener('mouseup', this._stop);
this._tDom.removeEventListener('touchstart', this._stop);
this._tDom.removeEventListener('touchmove', this._stop);
this._tDom.removeEventListener('touchend', this._stop);
} else {
this._tDom.detachEvent('onclick', this._stop);
this._tDom.detachEvent('onmousewheel', this._stop);
this._tDom.detachEvent('onmousemove', this._stop);
this._tDom.detachEvent('onmousedown', this._stop);
this._tDom.detachEvent('onmouseup', this._stop);
}
this._buttonRefresh.onclick = null;
this._buttonClose.onclick = null;
if (this._hasShow) {
this._tDom.removeChild(this._textArea);
this._tDom.removeChild(this._buttonRefresh);
this._tDom.removeChild(this._buttonClose);
}
this._textArea = null;
this._buttonRefresh = null;
this._buttonClose = null;
this.dom.firstChild.removeChild(this._tDom);
this._tDom = null;
}
};
zrUtil.inherits(DataView, Base);
require('../component').define('dataView', DataView);
return DataView;
});define('echarts/util/shape/Cross', [
'require',
'zrender/shape/Base',
'zrender/shape/Line',
'zrender/tool/util',
'./normalIsCover'
], function (require) {
var Base = require('zrender/shape/Base');
var LineShape = require('zrender/shape/Line');
var zrUtil = require('zrender/tool/util');
function Cross(options) {
Base.call(this, options);
}
Cross.prototype = {
type: 'cross',
buildPath: function (ctx, style) {
var rect = style.rect;
style.xStart = rect.x;
style.xEnd = rect.x + rect.width;
style.yStart = style.yEnd = style.y;
LineShape.prototype.buildPath(ctx, style);
style.xStart = style.xEnd = style.x;
style.yStart = rect.y;
style.yEnd = rect.y + rect.height;
LineShape.prototype.buildPath(ctx, style);
},
getRect: function (style) {
return style.rect;
},
isCover: require('./normalIsCover')
};
zrUtil.inherits(Cross, Base);
return Cross;
});define('zrender/shape/Sector', [
'require',
'../tool/math',
'../tool/computeBoundingBox',
'../tool/vector',
'./Base',
'../tool/util'
], function (require) {
var math = require('../tool/math');
var computeBoundingBox = require('../tool/computeBoundingBox');
var vec2 = require('../tool/vector');
var Base = require('./Base');
var min0 = vec2.create();
var min1 = vec2.create();
var max0 = vec2.create();
var max1 = vec2.create();
var Sector = function (options) {
Base.call(this, options);
};
Sector.prototype = {
type: 'sector',
buildPath: function (ctx, style) {
var x = style.x;
var y = style.y;
var r0 = style.r0 || 0;
var r = style.r;
var startAngle = style.startAngle;
var endAngle = style.endAngle;
var clockWise = style.clockWise || false;
startAngle = math.degreeToRadian(startAngle);
endAngle = math.degreeToRadian(endAngle);
if (!clockWise) {
startAngle = -startAngle;
endAngle = -endAngle;
}
var unitX = math.cos(startAngle);
var unitY = math.sin(startAngle);
ctx.moveTo(unitX * r0 + x, unitY * r0 + y);
ctx.lineTo(unitX * r + x, unitY * r + y);
ctx.arc(x, y, r, startAngle, endAngle, !clockWise);
ctx.lineTo(math.cos(endAngle) * r0 + x, math.sin(endAngle) * r0 + y);
if (r0 !== 0) {
ctx.arc(x, y, r0, endAngle, startAngle, clockWise);
}
ctx.closePath();
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var x = style.x;
var y = style.y;
var r0 = style.r0 || 0;
var r = style.r;
var startAngle = math.degreeToRadian(style.startAngle);
var endAngle = math.degreeToRadian(style.endAngle);
var clockWise = style.clockWise;
if (!clockWise) {
startAngle = -startAngle;
endAngle = -endAngle;
}
if (r0 > 1) {
computeBoundingBox.arc(x, y, r0, startAngle, endAngle, !clockWise, min0, max0);
} else {
min0[0] = max0[0] = x;
min0[1] = max0[1] = y;
}
computeBoundingBox.arc(x, y, r, startAngle, endAngle, !clockWise, min1, max1);
vec2.min(min0, min0, min1);
vec2.max(max0, max0, max1);
style.__rect = {
x: min0[0],
y: min0[1],
width: max0[0] - min0[0],
height: max0[1] - min0[1]
};
return style.__rect;
}
};
require('../tool/util').inherits(Sector, Base);
return Sector;
});define('echarts/util/shape/Candle', [
'require',
'zrender/shape/Base',
'zrender/tool/util',
'./normalIsCover'
], function (require) {
var Base = require('zrender/shape/Base');
var zrUtil = require('zrender/tool/util');
function Candle(options) {
Base.call(this, options);
}
Candle.prototype = {
type: 'candle',
_numberOrder: function (a, b) {
return b - a;
},
buildPath: function (ctx, style) {
var yList = zrUtil.clone(style.y).sort(this._numberOrder);
ctx.moveTo(style.x, yList[3]);
ctx.lineTo(style.x, yList[2]);
ctx.moveTo(style.x - style.width / 2, yList[2]);
ctx.rect(style.x - style.width / 2, yList[2], style.width, yList[1] - yList[2]);
ctx.moveTo(style.x, yList[1]);
ctx.lineTo(style.x, yList[0]);
},
getRect: function (style) {
if (!style.__rect) {
var lineWidth = 0;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
}
var yList = zrUtil.clone(style.y).sort(this._numberOrder);
style.__rect = {
x: Math.round(style.x - style.width / 2 - lineWidth / 2),
y: Math.round(yList[3] - lineWidth / 2),
width: style.width + lineWidth,
height: yList[0] - yList[3] + lineWidth
};
}
return style.__rect;
},
isCover: require('./normalIsCover')
};
zrUtil.inherits(Candle, Base);
return Candle;
});define('zrender/tool/computeBoundingBox', [
'require',
'./vector',
'./curve'
], function (require) {
var vec2 = require('./vector');
var curve = require('./curve');
function computeBoundingBox(points, min, max) {
if (points.length === 0) {
return;
}
var left = points[0][0];
var right = points[0][0];
var top = points[0][1];
var bottom = points[0][1];
for (var i = 1; i < points.length; i++) {
var p = points[i];
if (p[0] < left) {
left = p[0];
}
if (p[0] > right) {
right = p[0];
}
if (p[1] < top) {
top = p[1];
}
if (p[1] > bottom) {
bottom = p[1];
}
}
min[0] = left;
min[1] = top;
max[0] = right;
max[1] = bottom;
}
function computeCubeBezierBoundingBox(p0, p1, p2, p3, min, max) {
var xDim = [];
curve.cubicExtrema(p0[0], p1[0], p2[0], p3[0], xDim);
for (var i = 0; i < xDim.length; i++) {
xDim[i] = curve.cubicAt(p0[0], p1[0], p2[0], p3[0], xDim[i]);
}
var yDim = [];
curve.cubicExtrema(p0[1], p1[1], p2[1], p3[1], yDim);
for (var i = 0; i < yDim.length; i++) {
yDim[i] = curve.cubicAt(p0[1], p1[1], p2[1], p3[1], yDim[i]);
}
xDim.push(p0[0], p3[0]);
yDim.push(p0[1], p3[1]);
var left = Math.min.apply(null, xDim);
var right = Math.max.apply(null, xDim);
var top = Math.min.apply(null, yDim);
var bottom = Math.max.apply(null, yDim);
min[0] = left;
min[1] = top;
max[0] = right;
max[1] = bottom;
}
function computeQuadraticBezierBoundingBox(p0, p1, p2, min, max) {
var t1 = curve.quadraticExtremum(p0[0], p1[0], p2[0]);
var t2 = curve.quadraticExtremum(p0[1], p1[1], p2[1]);
t1 = Math.max(Math.min(t1, 1), 0);
t2 = Math.max(Math.min(t2, 1), 0);
var ct1 = 1 - t1;
var ct2 = 1 - t2;
var x1 = ct1 * ct1 * p0[0] + 2 * ct1 * t1 * p1[0] + t1 * t1 * p2[0];
var y1 = ct1 * ct1 * p0[1] + 2 * ct1 * t1 * p1[1] + t1 * t1 * p2[1];
var x2 = ct2 * ct2 * p0[0] + 2 * ct2 * t2 * p1[0] + t2 * t2 * p2[0];
var y2 = ct2 * ct2 * p0[1] + 2 * ct2 * t2 * p1[1] + t2 * t2 * p2[1];
min[0] = Math.min(p0[0], p2[0], x1, x2);
min[1] = Math.min(p0[1], p2[1], y1, y2);
max[0] = Math.max(p0[0], p2[0], x1, x2);
max[1] = Math.max(p0[1], p2[1], y1, y2);
}
var start = vec2.create();
var end = vec2.create();
var extremity = vec2.create();
var computeArcBoundingBox = function (x, y, r, startAngle, endAngle, anticlockwise, min, max) {
start[0] = Math.cos(startAngle) * r + x;
start[1] = Math.sin(startAngle) * r + y;
end[0] = Math.cos(endAngle) * r + x;
end[1] = Math.sin(endAngle) * r + y;
vec2.min(min, start, end);
vec2.max(max, start, end);
startAngle = startAngle % (Math.PI * 2);
if (startAngle < 0) {
startAngle = startAngle + Math.PI * 2;
}
endAngle = endAngle % (Math.PI * 2);
if (endAngle < 0) {
endAngle = endAngle + Math.PI * 2;
}
if (startAngle > endAngle && !anticlockwise) {
endAngle += Math.PI * 2;
} else if (startAngle < endAngle && anticlockwise) {
startAngle += Math.PI * 2;
}
if (anticlockwise) {
var tmp = endAngle;
endAngle = startAngle;
startAngle = tmp;
}
for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {
if (angle > startAngle) {
extremity[0] = Math.cos(angle) * r + x;
extremity[1] = Math.sin(angle) * r + y;
vec2.min(min, extremity, min);
vec2.max(max, extremity, max);
}
}
};
computeBoundingBox.cubeBezier = computeCubeBezierBoundingBox;
computeBoundingBox.quadraticBezier = computeQuadraticBezierBoundingBox;
computeBoundingBox.arc = computeArcBoundingBox;
return computeBoundingBox;
});define('echarts/util/shape/Chain', [
'require',
'zrender/shape/Base',
'./Icon',
'zrender/shape/util/dashedLineTo',
'zrender/tool/util',
'zrender/tool/matrix'
], function (require) {
var Base = require('zrender/shape/Base');
var IconShape = require('./Icon');
var dashedLineTo = require('zrender/shape/util/dashedLineTo');
var zrUtil = require('zrender/tool/util');
var matrix = require('zrender/tool/matrix');
function Chain(options) {
Base.call(this, options);
}
Chain.prototype = {
type: 'chain',
brush: function (ctx, isHighlight) {
var style = this.style;
if (isHighlight) {
style = this.getHighlightStyle(style, this.highlightStyle || {});
}
ctx.save();
this.setContext(ctx, style);
this.setTransform(ctx);
ctx.save();
ctx.beginPath();
this.buildLinePath(ctx, style);
ctx.stroke();
ctx.restore();
this.brushSymbol(ctx, style);
ctx.restore();
return;
},
buildLinePath: function (ctx, style) {
var x = style.x;
var y = style.y + 5;
var width = style.width;
var height = style.height / 2 - 10;
ctx.moveTo(x, y);
ctx.lineTo(x, y + height);
ctx.moveTo(x + width, y);
ctx.lineTo(x + width, y + height);
ctx.moveTo(x, y + height / 2);
if (!style.lineType || style.lineType == 'solid') {
ctx.lineTo(x + width, y + height / 2);
} else if (style.lineType == 'dashed' || style.lineType == 'dotted') {
var dashLength = (style.lineWidth || 1) * (style.lineType == 'dashed' ? 5 : 1);
dashedLineTo(ctx, x, y + height / 2, x + width, y + height / 2, dashLength);
}
},
brushSymbol: function (ctx, style) {
var y = style.y + style.height / 4;
ctx.save();
var chainPoint = style.chainPoint;
var curPoint;
for (var idx = 0, l = chainPoint.length; idx < l; idx++) {
curPoint = chainPoint[idx];
if (curPoint.symbol != 'none') {
ctx.beginPath();
var symbolSize = curPoint.symbolSize;
IconShape.prototype.buildPath(ctx, {
iconType: curPoint.symbol,
x: curPoint.x - symbolSize,
y: y - symbolSize,
width: symbolSize * 2,
height: symbolSize * 2,
n: curPoint.n
});
ctx.fillStyle = curPoint.isEmpty ? '#fff' : style.strokeColor;
ctx.closePath();
ctx.fill();
ctx.stroke();
}
if (curPoint.showLabel) {
ctx.font = curPoint.textFont;
ctx.fillStyle = curPoint.textColor;
ctx.textAlign = curPoint.textAlign;
ctx.textBaseline = curPoint.textBaseline;
if (curPoint.rotation) {
ctx.save();
this._updateTextTransform(ctx, curPoint.rotation);
ctx.fillText(curPoint.name, curPoint.textX, curPoint.textY);
ctx.restore();
} else {
ctx.fillText(curPoint.name, curPoint.textX, curPoint.textY);
}
}
}
ctx.restore();
},
_updateTextTransform: function (ctx, rotation) {
var _transform = matrix.create();
matrix.identity(_transform);
if (rotation[0] !== 0) {
var originX = rotation[1] || 0;
var originY = rotation[2] || 0;
if (originX || originY) {
matrix.translate(_transform, _transform, [
-originX,
-originY
]);
}
matrix.rotate(_transform, _transform, rotation[0]);
if (originX || originY) {
matrix.translate(_transform, _transform, [
originX,
originY
]);
}
}
ctx.transform.apply(ctx, _transform);
},
isCover: function (x, y) {
var rect = this.style;
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return true;
} else {
return false;
}
}
};
zrUtil.inherits(Chain, Base);
return Chain;
});define('zrender/shape/Ring', [
'require',
'./Base',
'../tool/util'
], function (require) {
var Base = require('./Base');
var Ring = function (options) {
Base.call(this, options);
};
Ring.prototype = {
type: 'ring',
buildPath: function (ctx, style) {
ctx.arc(style.x, style.y, style.r, 0, Math.PI * 2, false);
ctx.moveTo(style.x + style.r0, style.y);
ctx.arc(style.x, style.y, style.r0, 0, Math.PI * 2, true);
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
style.__rect = {
x: Math.round(style.x - style.r - lineWidth / 2),
y: Math.round(style.y - style.r - lineWidth / 2),
width: style.r * 2 + lineWidth,
height: style.r * 2 + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Ring, Base);
return Ring;
});define('echarts/component/axis', [
'require',
'./base',
'zrender/shape/Line',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/color',
'./categoryAxis',
'./valueAxis',
'../component'
], function (require) {
var Base = require('./base');
var LineShape = require('zrender/shape/Line');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
function Axis(ecTheme, messageCenter, zr, option, myChart, axisType) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.axisType = axisType;
this._axisList = [];
this.refresh(option);
}
Axis.prototype = {
type: ecConfig.COMPONENT_TYPE_AXIS,
axisBase: {
_buildAxisLine: function () {
var lineWidth = this.option.axisLine.lineStyle.width;
var halfLineWidth = lineWidth / 2;
var axShape = {
_axisShape: 'axisLine',
zlevel: this._zlevelBase + 1,
hoverable: false
};
switch (this.option.position) {
case 'left':
axShape.style = {
xStart: this.grid.getX() - halfLineWidth,
yStart: this.grid.getYend(),
xEnd: this.grid.getX() - halfLineWidth,
yEnd: this.grid.getY(),
lineCap: 'round'
};
break;
case 'right':
axShape.style = {
xStart: this.grid.getXend() + halfLineWidth,
yStart: this.grid.getYend(),
xEnd: this.grid.getXend() + halfLineWidth,
yEnd: this.grid.getY(),
lineCap: 'round'
};
break;
case 'bottom':
axShape.style = {
xStart: this.grid.getX(),
yStart: this.grid.getYend() + halfLineWidth,
xEnd: this.grid.getXend(),
yEnd: this.grid.getYend() + halfLineWidth,
lineCap: 'round'
};
break;
case 'top':
axShape.style = {
xStart: this.grid.getX(),
yStart: this.grid.getY() - halfLineWidth,
xEnd: this.grid.getXend(),
yEnd: this.grid.getY() - halfLineWidth,
lineCap: 'round'
};
break;
}
if (this.option.name !== '') {
axShape.style.text = this.option.name;
axShape.style.textPosition = this.option.nameLocation;
axShape.style.textFont = this.getFont(this.option.nameTextStyle);
if (this.option.nameTextStyle.align) {
axShape.style.textAlign = this.option.nameTextStyle.align;
}
if (this.option.nameTextStyle.baseline) {
axShape.style.textBaseline = this.option.nameTextStyle.baseline;
}
if (this.option.nameTextStyle.color) {
axShape.style.textColor = this.option.nameTextStyle.color;
}
}
axShape.style.strokeColor = this.option.axisLine.lineStyle.color;
axShape.style.lineWidth = lineWidth;
if (this.isHorizontal()) {
axShape.style.yStart = axShape.style.yEnd = this.subPixelOptimize(axShape.style.yEnd, lineWidth);
} else {
axShape.style.xStart = axShape.style.xEnd = this.subPixelOptimize(axShape.style.xEnd, lineWidth);
}
axShape.style.lineType = this.option.axisLine.lineStyle.type;
axShape = new LineShape(axShape);
this.shapeList.push(axShape);
},
_axisLabelClickable: function (clickable, axShape) {
if (clickable) {
ecData.pack(axShape, undefined, -1, undefined, -1, axShape.style.text);
axShape.hoverable = true;
axShape.clickable = true;
axShape.highlightStyle = {
color: zrColor.lift(axShape.style.color, 1),
brushType: 'fill'
};
return axShape;
} else {
return axShape;
}
},
refixAxisShape: function (zeroX, zeroY) {
if (!this.option.axisLine.onZero) {
return;
}
var tickLength;
if (this.isHorizontal() && zeroY != null) {
for (var i = 0, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i]._axisShape === 'axisLine') {
this.shapeList[i].style.yStart = this.shapeList[i].style.yEnd = this.subPixelOptimize(zeroY, this.shapeList[i].stylelineWidth);
this.zr.modShape(this.shapeList[i].id);
} else if (this.shapeList[i]._axisShape === 'axisTick') {
tickLength = this.shapeList[i].style.yEnd - this.shapeList[i].style.yStart;
this.shapeList[i].style.yStart = zeroY - tickLength;
this.shapeList[i].style.yEnd = zeroY;
this.zr.modShape(this.shapeList[i].id);
}
}
}
if (!this.isHorizontal() && zeroX != null) {
for (var i = 0, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i]._axisShape === 'axisLine') {
this.shapeList[i].style.xStart = this.shapeList[i].style.xEnd = this.subPixelOptimize(zeroX, this.shapeList[i].stylelineWidth);
this.zr.modShape(this.shapeList[i].id);
} else if (this.shapeList[i]._axisShape === 'axisTick') {
tickLength = this.shapeList[i].style.xEnd - this.shapeList[i].style.xStart;
this.shapeList[i].style.xStart = zeroX;
this.shapeList[i].style.xEnd = zeroX + tickLength;
this.zr.modShape(this.shapeList[i].id);
}
}
}
},
getPosition: function () {
return this.option.position;
},
isHorizontal: function () {
return this.option.position === 'bottom' || this.option.position === 'top';
}
},
reformOption: function (opt) {
if (!opt || opt instanceof Array && opt.length === 0) {
opt = [{ type: ecConfig.COMPONENT_TYPE_AXIS_VALUE }];
} else if (!(opt instanceof Array)) {
opt = [opt];
}
if (opt.length > 2) {
opt = [
opt[0],
opt[1]
];
}
if (this.axisType === 'xAxis') {
if (!opt[0].position || opt[0].position != 'bottom' && opt[0].position != 'top') {
opt[0].position = 'bottom';
}
if (opt.length > 1) {
opt[1].position = opt[0].position === 'bottom' ? 'top' : 'bottom';
}
for (var i = 0, l = opt.length; i < l; i++) {
opt[i].type = opt[i].type || 'category';
opt[i].xAxisIndex = i;
opt[i].yAxisIndex = -1;
}
} else {
if (!opt[0].position || opt[0].position != 'left' && opt[0].position != 'right') {
opt[0].position = 'left';
}
if (opt.length > 1) {
opt[1].position = opt[0].position === 'left' ? 'right' : 'left';
}
for (var i = 0, l = opt.length; i < l; i++) {
opt[i].type = opt[i].type || 'value';
opt[i].xAxisIndex = -1;
opt[i].yAxisIndex = i;
}
}
return opt;
},
refresh: function (newOption) {
var axisOption;
if (newOption) {
this.option = newOption;
if (this.axisType === 'xAxis') {
this.option.xAxis = this.reformOption(newOption.xAxis);
axisOption = this.option.xAxis;
} else {
this.option.yAxis = this.reformOption(newOption.yAxis);
axisOption = this.option.yAxis;
}
this.series = newOption.series;
}
var CategoryAxis = require('./categoryAxis');
var ValueAxis = require('./valueAxis');
var len = Math.max(axisOption && axisOption.length || 0, this._axisList.length);
for (var i = 0; i < len; i++) {
if (this._axisList[i] && newOption && (!axisOption[i] || this._axisList[i].type != axisOption[i].type)) {
this._axisList[i].dispose && this._axisList[i].dispose();
this._axisList[i] = false;
}
if (this._axisList[i]) {
this._axisList[i].refresh && this._axisList[i].refresh(axisOption ? axisOption[i] : false, this.series);
} else if (axisOption && axisOption[i]) {
this._axisList[i] = axisOption[i].type === 'category' ? new CategoryAxis(this.ecTheme, this.messageCenter, this.zr, axisOption[i], this.myChart, this.axisBase) : new ValueAxis(this.ecTheme, this.messageCenter, this.zr, axisOption[i], this.myChart, this.axisBase, this.series);
}
}
},
getAxis: function (idx) {
return this._axisList[idx];
},
clear: function () {
for (var i = 0, l = this._axisList.length; i < l; i++) {
this._axisList[i].dispose && this._axisList[i].dispose();
}
this._axisList = [];
}
};
zrUtil.inherits(Axis, Base);
require('../component').define('axis', Axis);
return Axis;
});define('echarts/component/grid', [
'require',
'./base',
'zrender/shape/Rectangle',
'../config',
'zrender/tool/util',
'../component'
], function (require) {
var Base = require('./base');
var RectangleShape = require('zrender/shape/Rectangle');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
function Grid(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.refresh(option);
}
Grid.prototype = {
type: ecConfig.COMPONENT_TYPE_GRID,
getX: function () {
return this._x;
},
getY: function () {
return this._y;
},
getWidth: function () {
return this._width;
},
getHeight: function () {
return this._height;
},
getXend: function () {
return this._x + this._width;
},
getYend: function () {
return this._y + this._height;
},
getArea: function () {
return {
x: this._x,
y: this._y,
width: this._width,
height: this._height
};
},
getBbox: function () {
return [
[
this._x,
this._y
],
[
this.getXend(),
this.getYend()
]
];
},
refixAxisShape: function (component) {
var zeroX;
var zeroY;
var axisList = component.xAxis._axisList.concat(component.yAxis ? component.yAxis._axisList : []);
var len = axisList.length;
var axis;
while (len--) {
axis = axisList[len];
if (axis.type == ecConfig.COMPONENT_TYPE_AXIS_VALUE && axis._min < 0 && axis._max >= 0) {
axis.isHorizontal() ? zeroX = axis.getCoord(0) : zeroY = axis.getCoord(0);
}
}
if (typeof zeroX != 'undefined' || typeof zeroY != 'undefined') {
len = axisList.length;
while (len--) {
axisList[len].refixAxisShape(zeroX, zeroY);
}
}
},
refresh: function (newOption) {
if (newOption || this._zrWidth != this.zr.getWidth() || this._zrHeight != this.zr.getHeight()) {
this.clear();
this.option = newOption || this.option;
this.option.grid = this.reformOption(this.option.grid);
var gridOption = this.option.grid;
this._zrWidth = this.zr.getWidth();
this._zrHeight = this.zr.getHeight();
this._x = this.parsePercent(gridOption.x, this._zrWidth);
this._y = this.parsePercent(gridOption.y, this._zrHeight);
var x2 = this.parsePercent(gridOption.x2, this._zrWidth);
var y2 = this.parsePercent(gridOption.y2, this._zrHeight);
if (typeof gridOption.width == 'undefined') {
this._width = this._zrWidth - this._x - x2;
} else {
this._width = this.parsePercent(gridOption.width, this._zrWidth);
}
this._width = this._width <= 0 ? 10 : this._width;
if (typeof gridOption.height == 'undefined') {
this._height = this._zrHeight - this._y - y2;
} else {
this._height = this.parsePercent(gridOption.height, this._zrHeight);
}
this._height = this._height <= 0 ? 10 : this._height;
this._x = this.subPixelOptimize(this._x, gridOption.borderWidth);
this._y = this.subPixelOptimize(this._y, gridOption.borderWidth);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._x,
y: this._y,
width: this._width,
height: this._height,
brushType: gridOption.borderWidth > 0 ? 'both' : 'fill',
color: gridOption.backgroundColor,
strokeColor: gridOption.borderColor,
lineWidth: gridOption.borderWidth
}
}));
this.zr.addShape(this.shapeList[0]);
}
}
};
zrUtil.inherits(Grid, Base);
require('../component').define('grid', Grid);
return Grid;
});define('echarts/component/dataZoom', [
'require',
'./base',
'zrender/shape/Rectangle',
'zrender/shape/Polygon',
'../util/shape/Icon',
'../config',
'../util/date',
'zrender/tool/util',
'../component'
], function (require) {
var Base = require('./base');
var RectangleShape = require('zrender/shape/Rectangle');
var PolygonShape = require('zrender/shape/Polygon');
var IconShape = require('../util/shape/Icon');
var ecConfig = require('../config');
var ecDate = require('../util/date');
var zrUtil = require('zrender/tool/util');
function DataZoom(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
var self = this;
self._ondrift = function (dx, dy) {
return self.__ondrift(this, dx, dy);
};
self._ondragend = function () {
return self.__ondragend();
};
this._fillerSize = 28;
this._handleSize = 8;
this._isSilence = false;
this._zoom = {};
this.option.dataZoom = this.reformOption(this.option.dataZoom);
this.zoomOption = this.option.dataZoom;
if (!this.myChart.canvasSupported) {
this.zoomOption.realtime = false;
}
this._location = this._getLocation();
this._zoom = this._getZoom();
this._backupData();
if (this.option.dataZoom.show) {
this._buildShape();
}
this._syncData();
}
DataZoom.prototype = {
type: ecConfig.COMPONENT_TYPE_DATAZOOM,
_buildShape: function () {
this._buildBackground();
this._buildFiller();
this._buildHandle();
this._buildFrame();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
this._syncFrameShape();
},
_getLocation: function () {
var x;
var y;
var width;
var height;
var grid = this.component.grid;
if (this.zoomOption.orient == 'horizontal') {
width = this.zoomOption.width || grid.getWidth();
height = this.zoomOption.height || this._fillerSize;
x = this.zoomOption.x != null ? this.zoomOption.x : grid.getX();
y = this.zoomOption.y != null ? this.zoomOption.y : this.zr.getHeight() - height - 2;
} else {
width = this.zoomOption.width || this._fillerSize;
height = this.zoomOption.height || grid.getHeight();
x = this.zoomOption.x != null ? this.zoomOption.x : 2;
y = this.zoomOption.y != null ? this.zoomOption.y : grid.getY();
}
return {
x: x,
y: y,
width: width,
height: height
};
},
_getZoom: function () {
var series = this.option.series;
var xAxis = this.option.xAxis;
if (xAxis && !(xAxis instanceof Array)) {
xAxis = [xAxis];
this.option.xAxis = xAxis;
}
var yAxis = this.option.yAxis;
if (yAxis && !(yAxis instanceof Array)) {
yAxis = [yAxis];
this.option.yAxis = yAxis;
}
var zoomSeriesIndex = [];
var xAxisIndex;
var yAxisIndex;
var zOptIdx = this.zoomOption.xAxisIndex;
if (xAxis && zOptIdx == null) {
xAxisIndex = [];
for (var i = 0, l = xAxis.length; i < l; i++) {
if (xAxis[i].type == 'category' || xAxis[i].type == null) {
xAxisIndex.push(i);
}
}
} else {
if (zOptIdx instanceof Array) {
xAxisIndex = zOptIdx;
} else if (zOptIdx != null) {
xAxisIndex = [zOptIdx];
} else {
xAxisIndex = [];
}
}
zOptIdx = this.zoomOption.yAxisIndex;
if (yAxis && zOptIdx == null) {
yAxisIndex = [];
for (var i = 0, l = yAxis.length; i < l; i++) {
if (yAxis[i].type == 'category') {
yAxisIndex.push(i);
}
}
} else {
if (zOptIdx instanceof Array) {
yAxisIndex = zOptIdx;
} else if (zOptIdx != null) {
yAxisIndex = [zOptIdx];
} else {
yAxisIndex = [];
}
}
var serie;
for (var i = 0, l = series.length; i < l; i++) {
serie = series[i];
if (serie.type != ecConfig.CHART_TYPE_LINE && serie.type != ecConfig.CHART_TYPE_BAR && serie.type != ecConfig.CHART_TYPE_SCATTER && serie.type != ecConfig.CHART_TYPE_K) {
continue;
}
for (var j = 0, k = xAxisIndex.length; j < k; j++) {
if (xAxisIndex[j] == (serie.xAxisIndex || 0)) {
zoomSeriesIndex.push(i);
break;
}
}
for (var j = 0, k = yAxisIndex.length; j < k; j++) {
if (yAxisIndex[j] == (serie.yAxisIndex || 0)) {
zoomSeriesIndex.push(i);
break;
}
}
if (this.zoomOption.xAxisIndex == null && this.zoomOption.yAxisIndex == null && serie.data && serie.data[0] && serie.data[0] instanceof Array && (serie.type == ecConfig.CHART_TYPE_SCATTER || serie.type == ecConfig.CHART_TYPE_LINE || serie.type == ecConfig.CHART_TYPE_BAR)) {
zoomSeriesIndex.push(i);
}
}
var start = this._zoom.start != null ? this._zoom.start : this.zoomOption.start != null ? this.zoomOption.start : 0;
var end = this._zoom.end != null ? this._zoom.end : this.zoomOption.end != null ? this.zoomOption.end : 100;
if (start > end) {
start = start + end;
end = start - end;
start = start - end;
}
var size = Math.round((end - start) / 100 * (this.zoomOption.orient == 'horizontal' ? this._location.width : this._location.height));
return {
start: start,
end: end,
start2: 0,
end2: 100,
size: size,
xAxisIndex: xAxisIndex,
yAxisIndex: yAxisIndex,
seriesIndex: zoomSeriesIndex,
scatterMap: this._zoom.scatterMap || {}
};
},
_backupData: function () {
this._originalData = {
xAxis: {},
yAxis: {},
series: {}
};
var xAxis = this.option.xAxis;
var xAxisIndex = this._zoom.xAxisIndex;
for (var i = 0, l = xAxisIndex.length; i < l; i++) {
this._originalData.xAxis[xAxisIndex[i]] = xAxis[xAxisIndex[i]].data;
}
var yAxis = this.option.yAxis;
var yAxisIndex = this._zoom.yAxisIndex;
for (var i = 0, l = yAxisIndex.length; i < l; i++) {
this._originalData.yAxis[yAxisIndex[i]] = yAxis[yAxisIndex[i]].data;
}
var series = this.option.series;
var seriesIndex = this._zoom.seriesIndex;
var serie;
for (var i = 0, l = seriesIndex.length; i < l; i++) {
serie = series[seriesIndex[i]];
this._originalData.series[seriesIndex[i]] = serie.data;
if (serie.data && serie.data[0] && serie.data[0] instanceof Array && (serie.type == ecConfig.CHART_TYPE_SCATTER || serie.type == ecConfig.CHART_TYPE_LINE || serie.type == ecConfig.CHART_TYPE_BAR)) {
this._backupScale();
this._calculScatterMap(seriesIndex[i]);
}
}
},
_calculScatterMap: function (seriesIndex) {
this._zoom.scatterMap = this._zoom.scatterMap || {};
this._zoom.scatterMap[seriesIndex] = this._zoom.scatterMap[seriesIndex] || {};
var componentLibrary = require('../component');
var Axis = componentLibrary.get('axis');
var axisOption = zrUtil.clone(this.option.xAxis);
if (axisOption[0].type == 'category') {
axisOption[0].type = 'value';
}
if (axisOption[1] && axisOption[1].type == 'category') {
axisOption[1].type = 'value';
}
var vAxis = new Axis(this.ecTheme, null, false, {
xAxis: axisOption,
series: this.option.series
}, this, 'xAxis');
var axisIndex = this.option.series[seriesIndex].xAxisIndex || 0;
this._zoom.scatterMap[seriesIndex].x = vAxis.getAxis(axisIndex).getExtremum();
vAxis.dispose();
axisOption = zrUtil.clone(this.option.yAxis);
if (axisOption[0].type == 'category') {
axisOption[0].type = 'value';
}
if (axisOption[1] && axisOption[1].type == 'category') {
axisOption[1].type = 'value';
}
vAxis = new Axis(this.ecTheme, null, false, {
yAxis: axisOption,
series: this.option.series
}, this, 'yAxis');
axisIndex = this.option.series[seriesIndex].yAxisIndex || 0;
this._zoom.scatterMap[seriesIndex].y = vAxis.getAxis(axisIndex).getExtremum();
vAxis.dispose();
},
_buildBackground: function () {
var width = this._location.width;
var height = this._location.height;
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._location.x,
y: this._location.y,
width: width,
height: height,
color: this.zoomOption.backgroundColor
}
}));
var maxLength = 0;
var xAxis = this._originalData.xAxis;
var xAxisIndex = this._zoom.xAxisIndex;
for (var i = 0, l = xAxisIndex.length; i < l; i++) {
maxLength = Math.max(maxLength, xAxis[xAxisIndex[i]].length);
}
var yAxis = this._originalData.yAxis;
var yAxisIndex = this._zoom.yAxisIndex;
for (var i = 0, l = yAxisIndex.length; i < l; i++) {
maxLength = Math.max(maxLength, yAxis[yAxisIndex[i]].length);
}
var seriesIndex = this._zoom.seriesIndex[0];
var data = this._originalData.series[seriesIndex];
var maxValue = Number.MIN_VALUE;
var minValue = Number.MAX_VALUE;
var value;
for (var i = 0, l = data.length; i < l; i++) {
value = data[i] != null ? data[i].value != null ? data[i].value : data[i] : 0;
if (this.option.series[seriesIndex].type == ecConfig.CHART_TYPE_K) {
value = value[1];
}
if (isNaN(value)) {
value = 0;
}
maxValue = Math.max(maxValue, value);
minValue = Math.min(minValue, value);
}
var valueRange = maxValue - minValue;
var pointList = [];
var x = width / (maxLength - (maxLength > 1 ? 1 : 0));
var y = height / (maxLength - (maxLength > 1 ? 1 : 0));
var step = 1;
if (this.zoomOption.orient == 'horizontal' && x < 1) {
step = Math.floor(maxLength * 3 / width);
} else if (this.zoomOption.orient == 'vertical' && y < 1) {
step = Math.floor(maxLength * 3 / height);
}
for (var i = 0, l = maxLength; i < l; i += step) {
value = data[i] != null ? data[i].value != null ? data[i].value : data[i] : 0;
if (this.option.series[seriesIndex].type == ecConfig.CHART_TYPE_K) {
value = value[1];
}
if (isNaN(value)) {
value = 0;
}
if (this.zoomOption.orient == 'horizontal') {
pointList.push([
this._location.x + x * i,
this._location.y + height - 1 - Math.round((value - minValue) / valueRange * (height - 10))
]);
} else {
pointList.push([
this._location.x + 1 + Math.round((value - minValue) / valueRange * (width - 10)),
this._location.y + y * i
]);
}
}
if (this.zoomOption.orient == 'horizontal') {
pointList.push([
this._location.x + width,
this._location.y + height
]);
pointList.push([
this._location.x,
this._location.y + height
]);
} else {
pointList.push([
this._location.x,
this._location.y + height
]);
pointList.push([
this._location.x,
this._location.y
]);
}
this.shapeList.push(new PolygonShape({
zlevel: this._zlevelBase,
style: {
pointList: pointList,
color: this.zoomOption.dataBackgroundColor
},
hoverable: false
}));
},
_buildFiller: function () {
this._fillerShae = {
zlevel: this._zlevelBase,
draggable: true,
ondrift: this._ondrift,
ondragend: this._ondragend,
_type: 'filler'
};
if (this.zoomOption.orient == 'horizontal') {
this._fillerShae.style = {
x: this._location.x + Math.round(this._zoom.start / 100 * this._location.width) + this._handleSize,
y: this._location.y,
width: this._zoom.size - this._handleSize * 2,
height: this._location.height,
color: this.zoomOption.fillerColor,
text: ':::',
textPosition: 'inside'
};
} else {
this._fillerShae.style = {
x: this._location.x,
y: this._location.y + Math.round(this._zoom.start / 100 * this._location.height) + this._handleSize,
width: this._location.width,
height: this._zoom.size - this._handleSize * 2,
color: this.zoomOption.fillerColor,
text: '::',
textPosition: 'inside'
};
}
this._fillerShae.highlightStyle = {
brushType: 'fill',
color: 'rgba(0,0,0,0)'
};
this._fillerShae = new RectangleShape(this._fillerShae);
this.shapeList.push(this._fillerShae);
},
_buildHandle: function () {
this._startShape = {
zlevel: this._zlevelBase,
draggable: true,
style: {
iconType: 'rectangle',
x: this._location.x,
y: this._location.y,
width: this._handleSize,
height: this._handleSize,
color: this.zoomOption.handleColor,
text: '=',
textPosition: 'inside'
},
highlightStyle: {
text: '',
brushType: 'fill',
textPosition: 'left'
},
ondrift: this._ondrift,
ondragend: this._ondragend
};
if (this.zoomOption.orient == 'horizontal') {
this._startShape.style.height = this._location.height;
this._endShape = zrUtil.clone(this._startShape);
this._startShape.style.x = this._fillerShae.style.x - this._handleSize, this._endShape.style.x = this._fillerShae.style.x + this._fillerShae.style.width;
this._endShape.highlightStyle.textPosition = 'right';
} else {
this._startShape.style.width = this._location.width;
this._endShape = zrUtil.clone(this._startShape);
this._startShape.style.y = this._fillerShae.style.y - this._handleSize;
this._startShape.highlightStyle.textPosition = 'top';
this._endShape.style.y = this._fillerShae.style.y + this._fillerShae.style.height;
this._endShape.highlightStyle.textPosition = 'bottom';
}
this._startShape = new IconShape(this._startShape);
this._endShape = new IconShape(this._endShape);
this.shapeList.push(this._startShape);
this.shapeList.push(this._endShape);
},
_buildFrame: function () {
var x = this.subPixelOptimize(this._location.x, 1);
var y = this.subPixelOptimize(this._location.y, 1);
this._startFrameShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: x,
y: y,
width: this._location.width - (x > this._location.x ? 1 : 0),
height: this._location.height - (y > this._location.y ? 1 : 0),
lineWidth: 1,
brushType: 'stroke',
strokeColor: this.zoomOption.handleColor
}
};
this._endFrameShape = zrUtil.clone(this._startFrameShape);
this._startFrameShape = new RectangleShape(this._startFrameShape);
this._endFrameShape = new RectangleShape(this._endFrameShape);
this.shapeList.push(this._startFrameShape);
this.shapeList.push(this._endFrameShape);
return;
},
_syncHandleShape: function () {
if (this.zoomOption.orient == 'horizontal') {
this._startShape.style.x = this._fillerShae.style.x - this._handleSize;
this._endShape.style.x = this._fillerShae.style.x + this._fillerShae.style.width;
this._zoom.start = Math.floor((this._startShape.style.x - this._location.x) / this._location.width * 100);
this._zoom.end = Math.ceil((this._endShape.style.x + this._handleSize - this._location.x) / this._location.width * 100);
} else {
this._startShape.style.y = this._fillerShae.style.y - this._handleSize;
this._endShape.style.y = this._fillerShae.style.y + this._fillerShae.style.height;
this._zoom.start = Math.floor((this._startShape.style.y - this._location.y) / this._location.height * 100);
this._zoom.end = Math.ceil((this._endShape.style.y + this._handleSize - this._location.y) / this._location.height * 100);
}
this.zr.modShape(this._startShape.id);
this.zr.modShape(this._endShape.id);
this._syncFrameShape();
this.zr.refresh();
},
_syncFillerShape: function () {
var a;
var b;
if (this.zoomOption.orient == 'horizontal') {
a = this._startShape.style.x;
b = this._endShape.style.x;
this._fillerShae.style.x = Math.min(a, b) + this._handleSize;
this._fillerShae.style.width = Math.abs(a - b) - this._handleSize;
this._zoom.start = Math.floor((Math.min(a, b) - this._location.x) / this._location.width * 100);
this._zoom.end = Math.ceil((Math.max(a, b) + this._handleSize - this._location.x) / this._location.width * 100);
} else {
a = this._startShape.style.y;
b = this._endShape.style.y;
this._fillerShae.style.y = Math.min(a, b) + this._handleSize;
this._fillerShae.style.height = Math.abs(a - b) - this._handleSize;
this._zoom.start = Math.floor((Math.min(a, b) - this._location.y) / this._location.height * 100);
this._zoom.end = Math.ceil((Math.max(a, b) + this._handleSize - this._location.y) / this._location.height * 100);
}
this.zr.modShape(this._fillerShae.id);
this._syncFrameShape();
this.zr.refresh();
},
_syncFrameShape: function () {
if (this.zoomOption.orient == 'horizontal') {
this._startFrameShape.style.width = this._fillerShae.style.x - this._location.x;
this._endFrameShape.style.x = this._fillerShae.style.x + this._fillerShae.style.width;
this._endFrameShape.style.width = this._location.x + this._location.width - this._endFrameShape.style.x;
} else {
this._startFrameShape.style.height = this._fillerShae.style.y - this._location.y;
this._endFrameShape.style.y = this._fillerShae.style.y + this._fillerShae.style.height;
this._endFrameShape.style.height = this._location.y + this._location.height - this._endFrameShape.style.y;
}
this.zr.modShape(this._startFrameShape.id);
this.zr.modShape(this._endFrameShape.id);
},
_syncShape: function () {
if (!this.zoomOption.show) {
return;
}
if (this.zoomOption.orient == 'horizontal') {
this._startShape.style.x = this._location.x + this._zoom.start / 100 * this._location.width;
this._endShape.style.x = this._location.x + this._zoom.end / 100 * this._location.width - this._handleSize;
this._fillerShae.style.x = this._startShape.style.x + this._handleSize;
this._fillerShae.style.width = this._endShape.style.x - this._startShape.style.x - this._handleSize;
} else {
this._startShape.style.y = this._location.y + this._zoom.start / 100 * this._location.height;
this._endShape.style.y = this._location.y + this._zoom.end / 100 * this._location.height - this._handleSize;
this._fillerShae.style.y = this._startShape.style.y + this._handleSize;
this._fillerShae.style.height = this._endShape.style.y - this._startShape.style.y - this._handleSize;
}
this.zr.modShape(this._startShape.id);
this.zr.modShape(this._endShape.id);
this.zr.modShape(this._fillerShae.id);
this._syncFrameShape();
this.zr.refresh();
},
_syncData: function (dispatchNow) {
var target;
var start;
var end;
var length;
var data;
for (var key in this._originalData) {
target = this._originalData[key];
for (var idx in target) {
data = target[idx];
if (data == null) {
continue;
}
length = data.length;
start = Math.floor(this._zoom.start / 100 * length);
end = Math.ceil(this._zoom.end / 100 * length);
if (!(this.option[key][idx].data[0] instanceof Array) || this.option[key][idx].type == ecConfig.CHART_TYPE_K) {
this.option[key][idx].data = data.slice(start, end);
} else {
this._setScale();
this.option[key][idx].data = this._synScatterData(idx, data);
}
}
}
if (!this._isSilence && (this.zoomOption.realtime || dispatchNow)) {
this.messageCenter.dispatch(ecConfig.EVENT.DATA_ZOOM, null, { zoom: this._zoom }, this.myChart);
}
},
_synScatterData: function (seriesIndex, data) {
if (this._zoom.start === 0 && this._zoom.end == 100 && this._zoom.start2 === 0 && this._zoom.end2 == 100) {
return data;
}
var newData = [];
var scale = this._zoom.scatterMap[seriesIndex];
var total;
var xStart;
var xEnd;
var yStart;
var yEnd;
if (this.zoomOption.orient == 'horizontal') {
total = scale.x.max - scale.x.min;
xStart = this._zoom.start / 100 * total + scale.x.min;
xEnd = this._zoom.end / 100 * total + scale.x.min;
total = scale.y.max - scale.y.min;
yStart = this._zoom.start2 / 100 * total + scale.y.min;
yEnd = this._zoom.end2 / 100 * total + scale.y.min;
} else {
total = scale.x.max - scale.x.min;
xStart = this._zoom.start2 / 100 * total + scale.x.min;
xEnd = this._zoom.end2 / 100 * total + scale.x.min;
total = scale.y.max - scale.y.min;
yStart = this._zoom.start / 100 * total + scale.y.min;
yEnd = this._zoom.end / 100 * total + scale.y.min;
}
var value;
for (var i = 0, l = data.length; i < l; i++) {
value = data[i].value || data[i];
if (value[0] >= xStart && value[0] <= xEnd && value[1] >= yStart && value[1] <= yEnd) {
newData.push(data[i]);
}
}
return newData;
},
_setScale: function () {
var needScale = this._zoom.start !== 0 || this._zoom.end !== 100 || this._zoom.start2 !== 0 || this._zoom.end2 !== 100;
var axis = {
xAxis: this.option.xAxis,
yAxis: this.option.yAxis
};
for (var key in axis) {
for (var i = 0, l = axis[key].length; i < l; i++) {
axis[key][i].scale = needScale || axis[key][i]._scale;
}
}
},
_backupScale: function () {
var axis = {
xAxis: this.option.xAxis,
yAxis: this.option.yAxis
};
for (var key in axis) {
for (var i = 0, l = axis[key].length; i < l; i++) {
axis[key][i]._scale = axis[key][i].scale;
}
}
},
_getDetail: function () {
var key = this.zoomOption.orient == 'horizontal' ? 'xAxis' : 'yAxis';
var target = this._originalData[key];
for (var idx in target) {
var data = target[idx];
if (data == null) {
continue;
}
var length = data.length;
var start = Math.floor(this._zoom.start / 100 * length);
var end = Math.ceil(this._zoom.end / 100 * length);
end -= end >= length ? 1 : 0;
return {
start: data[start].value != null ? data[start].value : data[start],
end: data[end].value != null ? data[end].value : data[end]
};
}
var seriesIndex = this._zoom.seriesIndex[0];
var axisIndex = this.option.series[seriesIndex][key + 'Index'] || 0;
var axisType = this.option[key][axisIndex].type;
var min = this._zoom.scatterMap[seriesIndex][key.charAt(0)].min;
var max = this._zoom.scatterMap[seriesIndex][key.charAt(0)].max;
var gap = max - min;
if (axisType == 'value') {
return {
start: min + gap * this._zoom.start / 100,
end: min + gap * this._zoom.end / 100
};
} else if (axisType == 'time') {
max = min + gap * this._zoom.end / 100;
min = min + gap * this._zoom.start / 100;
var formatter = ecDate.getAutoFormatter(min, max).formatter;
return {
start: ecDate.format(formatter, min),
end: ecDate.format(formatter, max)
};
}
return {
start: '',
end: ''
};
},
__ondrift: function (shape, dx, dy) {
if (this.zoomOption.zoomLock) {
shape = this._fillerShae;
}
var detailSize = shape._type == 'filler' ? this._handleSize : 0;
if (this.zoomOption.orient == 'horizontal') {
if (shape.style.x + dx - detailSize <= this._location.x) {
shape.style.x = this._location.x + detailSize;
} else if (shape.style.x + dx + shape.style.width + detailSize >= this._location.x + this._location.width) {
shape.style.x = this._location.x + this._location.width - shape.style.width - detailSize;
} else {
shape.style.x += dx;
}
} else {
if (shape.style.y + dy - detailSize <= this._location.y) {
shape.style.y = this._location.y + detailSize;
} else if (shape.style.y + dy + shape.style.height + detailSize >= this._location.y + this._location.height) {
shape.style.y = this._location.y + this._location.height - shape.style.height - detailSize;
} else {
shape.style.y += dy;
}
}
if (shape._type == 'filler') {
this._syncHandleShape();
} else {
this._syncFillerShape();
}
if (this.zoomOption.realtime) {
this._syncData();
}
if (this.zoomOption.showDetail) {
var deltail = this._getDetail();
this._startShape.style.text = this._startShape.highlightStyle.text = deltail.start;
this._endShape.style.text = this._endShape.highlightStyle.text = deltail.end;
this._startShape.style.textPosition = this._startShape.highlightStyle.textPosition;
this._endShape.style.textPosition = this._endShape.highlightStyle.textPosition;
}
return true;
},
__ondragend: function () {
if (this.zoomOption.showDetail) {
this._startShape.style.text = this._endShape.style.text = '=';
this._startShape.style.textPosition = this._endShape.style.textPosition = 'inside';
this.zr.modShape(this._startShape.id);
this.zr.modShape(this._endShape.id);
this.zr.refreshNextFrame();
}
this.isDragend = true;
},
ondragend: function (param, status) {
if (!this.isDragend || !param.target) {
return;
}
!this.zoomOption.realtime && this._syncData();
status.dragOut = true;
status.dragIn = true;
if (!this._isSilence && !this.zoomOption.realtime) {
this.messageCenter.dispatch(ecConfig.EVENT.DATA_ZOOM, null, { zoom: this._zoom }, this.myChart);
}
status.needRefresh = false;
this.isDragend = false;
return;
},
ondataZoom: function (param, status) {
status.needRefresh = true;
return;
},
absoluteZoom: function (param) {
this._zoom.start = param.start;
this._zoom.end = param.end;
this._zoom.start2 = param.start2;
this._zoom.end2 = param.end2;
this._syncShape();
this._syncData(true);
return;
},
rectZoom: function (param) {
if (!param) {
this._zoom.start = this._zoom.start2 = 0;
this._zoom.end = this._zoom.end2 = 100;
this._syncShape();
this._syncData(true);
return this._zoom;
}
var gridArea = this.component.grid.getArea();
var rect = {
x: param.x,
y: param.y,
width: param.width,
height: param.height
};
if (rect.width < 0) {
rect.x += rect.width;
rect.width = -rect.width;
}
if (rect.height < 0) {
rect.y += rect.height;
rect.height = -rect.height;
}
if (rect.x > gridArea.x + gridArea.width || rect.y > gridArea.y + gridArea.height) {
return false;
}
if (rect.x < gridArea.x) {
rect.x = gridArea.x;
}
if (rect.x + rect.width > gridArea.x + gridArea.width) {
rect.width = gridArea.x + gridArea.width - rect.x;
}
if (rect.y + rect.height > gridArea.y + gridArea.height) {
rect.height = gridArea.y + gridArea.height - rect.y;
}
var total;
var sdx = (rect.x - gridArea.x) / gridArea.width;
var edx = 1 - (rect.x + rect.width - gridArea.x) / gridArea.width;
var sdy = 1 - (rect.y + rect.height - gridArea.y) / gridArea.height;
var edy = (rect.y - gridArea.y) / gridArea.height;
if (this.zoomOption.orient == 'horizontal') {
total = this._zoom.end - this._zoom.start;
this._zoom.start += total * sdx;
this._zoom.end -= total * edx;
total = this._zoom.end2 - this._zoom.start2;
this._zoom.start2 += total * sdy;
this._zoom.end2 -= total * edy;
} else {
total = this._zoom.end - this._zoom.start;
this._zoom.start += total * sdy;
this._zoom.end -= total * edy;
total = this._zoom.end2 - this._zoom.start2;
this._zoom.start2 += total * sdx;
this._zoom.end2 -= total * edx;
}
this._syncShape();
this._syncData(true);
return this._zoom;
},
syncBackupData: function (curOption) {
var start;
var target = this._originalData['series'];
var curSeries = curOption.series;
var curData;
for (var i = 0, l = curSeries.length; i < l; i++) {
curData = curSeries[i].data || curSeries[i].eventList;
if (target[i]) {
start = Math.floor(this._zoom.start / 100 * target[i].length);
} else {
start = 0;
}
for (var j = 0, k = curData.length; j < k; j++) {
if (target[i]) {
target[i][j + start] = curData[j];
}
}
}
},
syncOption: function (magicOption) {
this.silence(true);
this.option = magicOption;
this.option.dataZoom = this.reformOption(this.option.dataZoom);
this.zoomOption = this.option.dataZoom;
if (!this.myChart.canvasSupported) {
this.zoomOption.realtime = false;
}
this.clear();
this._location = this._getLocation();
this._zoom = this._getZoom();
this._backupData();
if (this.option.dataZoom && this.option.dataZoom.show) {
this._buildShape();
}
this._syncData();
this.silence(false);
},
silence: function (s) {
this._isSilence = s;
},
getRealDataIndex: function (sIdx, dIdx) {
if (!this._originalData || this._zoom.start === 0 && this._zoom.end == 100) {
return dIdx;
}
var sreies = this._originalData.series;
if (sreies[sIdx]) {
return Math.floor(this._zoom.start / 100 * sreies[sIdx].length) + dIdx;
}
return -1;
},
resize: function () {
this.clear();
this._location = this._getLocation();
this._zoom = this._getZoom();
if (this.option.dataZoom.show) {
this._buildShape();
}
}
};
zrUtil.inherits(DataZoom, Base);
require('../component').define('dataZoom', DataZoom);
return DataZoom;
});define('echarts/component/categoryAxis', [
'require',
'./base',
'zrender/shape/Text',
'zrender/shape/Line',
'zrender/shape/Rectangle',
'../config',
'zrender/tool/util',
'zrender/tool/area',
'../component'
], function (require) {
var Base = require('./base');
var TextShape = require('zrender/shape/Text');
var LineShape = require('zrender/shape/Line');
var RectangleShape = require('zrender/shape/Rectangle');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrArea = require('zrender/tool/area');
function CategoryAxis(ecTheme, messageCenter, zr, option, myChart, axisBase) {
if (option.data.length < 1) {
console.error('option.data.length < 1.');
return;
}
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.grid = this.component.grid;
for (var method in axisBase) {
this[method] = axisBase[method];
}
this.refresh(option);
}
CategoryAxis.prototype = {
type: ecConfig.COMPONENT_TYPE_AXIS_CATEGORY,
_getReformedLabel: function (idx) {
var data = typeof this.option.data[idx].value != 'undefined' ? this.option.data[idx].value : this.option.data[idx];
var formatter = this.option.data[idx].formatter || this.option.axisLabel.formatter;
if (formatter) {
if (typeof formatter == 'function') {
data = formatter.call(this.myChart, data);
} else if (typeof formatter == 'string') {
data = formatter.replace('{value}', data);
}
}
return data;
},
_getInterval: function () {
var interval = this.option.axisLabel.interval;
if (interval == 'auto') {
var fontSize = this.option.axisLabel.textStyle.fontSize;
var data = this.option.data;
var dataLength = this.option.data.length;
if (this.isHorizontal()) {
if (dataLength > 3) {
var gap = this.getGap();
var isEnough = false;
var labelSpace;
var labelSize;
var step = Math.floor(0.5 / gap);
step = step < 1 ? 1 : step;
interval = Math.floor(15 / gap);
while (!isEnough && interval < dataLength) {
interval += step;
isEnough = true;
labelSpace = Math.floor(gap * interval);
for (var i = Math.floor((dataLength - 1) / interval) * interval; i >= 0; i -= interval) {
if (this.option.axisLabel.rotate !== 0) {
labelSize = fontSize;
} else if (data[i].textStyle) {
labelSize = zrArea.getTextWidth(this._getReformedLabel(i), this.getFont(zrUtil.merge(data[i].textStyle, this.option.axisLabel.textStyle)));
} else {
var label = this._getReformedLabel(i) + '';
var wLen = (label.match(/\w/g) || '').length;
var oLen = label.length - wLen;
labelSize = wLen * fontSize * 2 / 3 + oLen * fontSize;
}
if (labelSpace < labelSize) {
isEnough = false;
break;
}
}
}
} else {
interval = 1;
}
} else {
if (dataLength > 3) {
var gap = this.getGap();
interval = Math.floor(11 / gap);
while (gap * interval - 6 < fontSize && interval < dataLength) {
interval++;
}
} else {
interval = 1;
}
}
} else {
interval = interval - 0 + 1;
}
return interval;
},
_buildShape: function () {
this._interval = this._getInterval();
if (!this.option.show) {
return;
}
this.option.splitArea.show && this._buildSplitArea();
this.option.splitLine.show && this._buildSplitLine();
this.option.axisLine.show && this._buildAxisLine();
this.option.axisTick.show && this._buildAxisTick();
this.option.axisLabel.show && this._buildAxisLabel();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_buildAxisTick: function () {
var axShape;
var dataLength = this.option.data.length;
var tickOption = this.option.axisTick;
var length = tickOption.length;
var color = tickOption.lineStyle.color;
var lineWidth = tickOption.lineStyle.width;
var interval = tickOption.interval == 'auto' ? this._interval : tickOption.interval - 0 + 1;
var onGap = tickOption.onGap;
var optGap = onGap ? this.getGap() / 2 : typeof onGap == 'undefined' ? this.option.boundaryGap ? this.getGap() / 2 : 0 : 0;
var startIndex = optGap > 0 ? -interval : 0;
if (this.isHorizontal()) {
var yPosition = this.option.position == 'bottom' ? tickOption.inside ? this.grid.getYend() - length - 1 : this.grid.getYend() + 1 : tickOption.inside ? this.grid.getY() + 1 : this.grid.getY() - length - 1;
var x;
for (var i = startIndex; i < dataLength; i += interval) {
x = this.subPixelOptimize(this.getCoordByIndex(i) + (i >= 0 ? optGap : 0), lineWidth);
axShape = {
_axisShape: 'axisTick',
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: x,
yStart: yPosition,
xEnd: x,
yEnd: yPosition + length,
strokeColor: color,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
} else {
var xPosition = this.option.position == 'left' ? tickOption.inside ? this.grid.getX() + 1 : this.grid.getX() - length - 1 : tickOption.inside ? this.grid.getXend() - length - 1 : this.grid.getXend() + 1;
var y;
for (var i = startIndex; i < dataLength; i += interval) {
y = this.subPixelOptimize(this.getCoordByIndex(i) - (i >= 0 ? optGap : 0), lineWidth);
axShape = {
_axisShape: 'axisTick',
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: xPosition,
yStart: y,
xEnd: xPosition + length,
yEnd: y,
strokeColor: color,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
}
},
_buildAxisLabel: function () {
var axShape;
var data = this.option.data;
var dataLength = this.option.data.length;
var rotate = this.option.axisLabel.rotate;
var margin = this.option.axisLabel.margin;
var clickable = this.option.axisLabel.clickable;
var textStyle = this.option.axisLabel.textStyle;
var dataTextStyle;
if (this.isHorizontal()) {
var yPosition;
var baseLine;
if (this.option.position == 'bottom') {
yPosition = this.grid.getYend() + margin;
baseLine = 'top';
} else {
yPosition = this.grid.getY() - margin;
baseLine = 'bottom';
}
for (var i = 0; i < dataLength; i += this._interval) {
if (this._getReformedLabel(i) === '') {
continue;
}
dataTextStyle = zrUtil.merge(data[i].textStyle || {}, textStyle);
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this.getCoordByIndex(i),
y: yPosition,
color: dataTextStyle.color,
text: this._getReformedLabel(i),
textFont: this.getFont(dataTextStyle),
textAlign: dataTextStyle.align || 'center',
textBaseline: dataTextStyle.baseline || baseLine
}
};
if (rotate) {
axShape.style.textAlign = rotate > 0 ? this.option.position == 'bottom' ? 'right' : 'left' : this.option.position == 'bottom' ? 'left' : 'right';
axShape.rotation = [
rotate * Math.PI / 180,
axShape.style.x,
axShape.style.y
];
}
this.shapeList.push(new TextShape(this._axisLabelClickable(clickable, axShape)));
}
} else {
var xPosition;
var align;
if (this.option.position == 'left') {
xPosition = this.grid.getX() - margin;
align = 'right';
} else {
xPosition = this.grid.getXend() + margin;
align = 'left';
}
for (var i = 0; i < dataLength; i += this._interval) {
if (this._getReformedLabel(i) === '') {
continue;
}
dataTextStyle = zrUtil.merge(data[i].textStyle || {}, textStyle);
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: xPosition,
y: this.getCoordByIndex(i),
color: dataTextStyle.color,
text: this._getReformedLabel(i),
textFont: this.getFont(dataTextStyle),
textAlign: dataTextStyle.align || align,
textBaseline: dataTextStyle.baseline || i === 0 && this.option.name !== '' ? 'bottom' : i == dataLength - 1 && this.option.name !== '' ? 'top' : 'middle'
}
};
if (rotate) {
axShape.rotation = [
rotate * Math.PI / 180,
axShape.style.x,
axShape.style.y
];
}
this.shapeList.push(new TextShape(this._axisLabelClickable(clickable, axShape)));
}
}
},
_buildSplitLine: function () {
var axShape;
var dataLength = this.option.data.length;
var sLineOption = this.option.splitLine;
var lineType = sLineOption.lineStyle.type;
var lineWidth = sLineOption.lineStyle.width;
var color = sLineOption.lineStyle.color;
color = color instanceof Array ? color : [color];
var colorLength = color.length;
var onGap = sLineOption.onGap;
var optGap = onGap ? this.getGap() / 2 : typeof onGap == 'undefined' ? this.option.boundaryGap ? this.getGap() / 2 : 0 : 0;
dataLength -= onGap || typeof onGap == 'undefined' && this.option.boundaryGap ? 1 : 0;
if (this.isHorizontal()) {
var sy = this.grid.getY();
var ey = this.grid.getYend();
var x;
for (var i = 0; i < dataLength; i += this._interval) {
x = this.subPixelOptimize(this.getCoordByIndex(i) + optGap, lineWidth);
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: x,
yStart: sy,
xEnd: x,
yEnd: ey,
strokeColor: color[i / this._interval % colorLength],
lineType: lineType,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
} else {
var sx = this.grid.getX();
var ex = this.grid.getXend();
var y;
for (var i = 0; i < dataLength; i += this._interval) {
y = this.subPixelOptimize(this.getCoordByIndex(i) - optGap, lineWidth);
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: sx,
yStart: y,
xEnd: ex,
yEnd: y,
strokeColor: color[i / this._interval % colorLength],
linetype: lineType,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
}
},
_buildSplitArea: function () {
var axShape;
var sAreaOption = this.option.splitArea;
var color = sAreaOption.areaStyle.color;
if (!(color instanceof Array)) {
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this.grid.getX(),
y: this.grid.getY(),
width: this.grid.getWidth(),
height: this.grid.getHeight(),
color: color
}
};
this.shapeList.push(new RectangleShape(axShape));
} else {
var colorLength = color.length;
var dataLength = this.option.data.length;
var onGap = sAreaOption.onGap;
var optGap = onGap ? this.getGap() / 2 : typeof onGap == 'undefined' ? this.option.boundaryGap ? this.getGap() / 2 : 0 : 0;
if (this.isHorizontal()) {
var y = this.grid.getY();
var height = this.grid.getHeight();
var lastX = this.grid.getX();
var curX;
for (var i = 0; i <= dataLength; i += this._interval) {
curX = i < dataLength ? this.getCoordByIndex(i) + optGap : this.grid.getXend();
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: lastX,
y: y,
width: curX - lastX,
height: height,
color: color[i / this._interval % colorLength]
}
};
this.shapeList.push(new RectangleShape(axShape));
lastX = curX;
}
} else {
var x = this.grid.getX();
var width = this.grid.getWidth();
var lastYend = this.grid.getYend();
var curY;
for (var i = 0; i <= dataLength; i += this._interval) {
curY = i < dataLength ? this.getCoordByIndex(i) - optGap : this.grid.getY();
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: x,
y: curY,
width: width,
height: lastYend - curY,
color: color[i / this._interval % colorLength]
}
};
this.shapeList.push(new RectangleShape(axShape));
lastYend = curY;
}
}
}
},
refresh: function (newOption) {
if (newOption) {
this.option = this.reformOption(newOption);
this.option.axisLabel.textStyle = zrUtil.merge(this.option.axisLabel.textStyle || {}, this.ecTheme.textStyle);
}
this.clear();
this._buildShape();
},
getGap: function () {
var dataLength = this.option.data.length;
var total = this.isHorizontal() ? this.grid.getWidth() : this.grid.getHeight();
if (this.option.boundaryGap) {
return total / dataLength;
} else {
return total / (dataLength > 1 ? dataLength - 1 : 1);
}
},
getCoord: function (value) {
var data = this.option.data;
var dataLength = data.length;
var gap = this.getGap();
var position = this.option.boundaryGap ? gap / 2 : 0;
for (var i = 0; i < dataLength; i++) {
if (data[i] == value || typeof data[i].value != 'undefined' && data[i].value == value) {
if (this.isHorizontal()) {
position = this.grid.getX() + position;
} else {
position = this.grid.getYend() - position;
}
return position;
}
position += gap;
}
},
getCoordByIndex: function (dataIndex) {
if (dataIndex < 0) {
if (this.isHorizontal()) {
return this.grid.getX();
} else {
return this.grid.getYend();
}
} else if (dataIndex > this.option.data.length - 1) {
if (this.isHorizontal()) {
return this.grid.getXend();
} else {
return this.grid.getY();
}
} else {
var gap = this.getGap();
var position = this.option.boundaryGap ? gap / 2 : 0;
position += dataIndex * gap;
if (this.isHorizontal()) {
position = this.grid.getX() + position;
} else {
position = this.grid.getYend() - position;
}
return position;
}
},
getNameByIndex: function (dataIndex) {
var data = this.option.data[dataIndex];
if (typeof data != 'undefined' && typeof data.value != 'undefined') {
return data.value;
} else {
return data;
}
},
getIndexByName: function (name) {
var data = this.option.data;
var dataLength = data.length;
for (var i = 0; i < dataLength; i++) {
if (data[i] == name || typeof data[i].value != 'undefined' && data[i].value == name) {
return i;
}
}
return -1;
},
getValueFromCoord: function () {
return '';
},
isMainAxis: function (dataIndex) {
return dataIndex % this._interval === 0;
}
};
zrUtil.inherits(CategoryAxis, Base);
require('../component').define('categoryAxis', CategoryAxis);
return CategoryAxis;
});define('echarts/component/valueAxis', [
'require',
'./base',
'zrender/shape/Text',
'zrender/shape/Line',
'zrender/shape/Rectangle',
'../config',
'../util/date',
'zrender/tool/util',
'../util/smartSteps',
'../util/accMath',
'../component'
], function (require) {
var Base = require('./base');
var TextShape = require('zrender/shape/Text');
var LineShape = require('zrender/shape/Line');
var RectangleShape = require('zrender/shape/Rectangle');
var ecConfig = require('../config');
var ecDate = require('../util/date');
var zrUtil = require('zrender/tool/util');
function ValueAxis(ecTheme, messageCenter, zr, option, myChart, axisBase, series) {
if (!series || series.length === 0) {
console.err('option.series.length == 0.');
return;
}
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.series = series;
this.grid = this.component.grid;
for (var method in axisBase) {
this[method] = axisBase[method];
}
this.refresh(option, series);
}
ValueAxis.prototype = {
type: ecConfig.COMPONENT_TYPE_AXIS_VALUE,
_buildShape: function () {
this._hasData = false;
this._calculateValue();
if (!this._hasData || !this.option.show) {
return;
}
this.option.splitArea.show && this._buildSplitArea();
this.option.splitLine.show && this._buildSplitLine();
this.option.axisLine.show && this._buildAxisLine();
this.option.axisTick.show && this._buildAxisTick();
this.option.axisLabel.show && this._buildAxisLabel();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_buildAxisTick: function () {
var axShape;
var data = this._valueList;
var dataLength = this._valueList.length;
var tickOption = this.option.axisTick;
var length = tickOption.length;
var color = tickOption.lineStyle.color;
var lineWidth = tickOption.lineStyle.width;
if (this.isHorizontal()) {
var yPosition = this.option.position === 'bottom' ? tickOption.inside ? this.grid.getYend() - length - 1 : this.grid.getYend() + 1 : tickOption.inside ? this.grid.getY() + 1 : this.grid.getY() - length - 1;
var x;
for (var i = 0; i < dataLength; i++) {
x = this.subPixelOptimize(this.getCoord(data[i]), lineWidth);
axShape = {
_axisShape: 'axisTick',
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: x,
yStart: yPosition,
xEnd: x,
yEnd: yPosition + length,
strokeColor: color,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
} else {
var xPosition = this.option.position === 'left' ? tickOption.inside ? this.grid.getX() + 1 : this.grid.getX() - length - 1 : tickOption.inside ? this.grid.getXend() - length - 1 : this.grid.getXend() + 1;
var y;
for (var i = 0; i < dataLength; i++) {
y = this.subPixelOptimize(this.getCoord(data[i]), lineWidth);
axShape = {
_axisShape: 'axisTick',
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: xPosition,
yStart: y,
xEnd: xPosition + length,
yEnd: y,
strokeColor: color,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
}
},
_buildAxisLabel: function () {
var axShape;
var data = this._valueList;
var dataLength = this._valueList.length;
var rotate = this.option.axisLabel.rotate;
var margin = this.option.axisLabel.margin;
var clickable = this.option.axisLabel.clickable;
var textStyle = this.option.axisLabel.textStyle;
if (this.isHorizontal()) {
var yPosition;
var baseLine;
if (this.option.position === 'bottom') {
yPosition = this.grid.getYend() + margin;
baseLine = 'top';
} else {
yPosition = this.grid.getY() - margin;
baseLine = 'bottom';
}
for (var i = 0; i < dataLength; i++) {
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this.getCoord(data[i]),
y: yPosition,
color: typeof textStyle.color === 'function' ? textStyle.color(data[i]) : textStyle.color,
text: this._valueLabel[i],
textFont: this.getFont(textStyle),
textAlign: textStyle.align || 'center',
textBaseline: textStyle.baseline || baseLine
}
};
if (rotate) {
axShape.style.textAlign = rotate > 0 ? this.option.position === 'bottom' ? 'right' : 'left' : this.option.position === 'bottom' ? 'left' : 'right';
axShape.rotation = [
rotate * Math.PI / 180,
axShape.style.x,
axShape.style.y
];
}
this.shapeList.push(new TextShape(this._axisLabelClickable(clickable, axShape)));
}
} else {
var xPosition;
var align;
if (this.option.position === 'left') {
xPosition = this.grid.getX() - margin;
align = 'right';
} else {
xPosition = this.grid.getXend() + margin;
align = 'left';
}
for (var i = 0; i < dataLength; i++) {
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: xPosition,
y: this.getCoord(data[i]),
color: typeof textStyle.color === 'function' ? textStyle.color(data[i]) : textStyle.color,
text: this._valueLabel[i],
textFont: this.getFont(textStyle),
textAlign: textStyle.align || align,
textBaseline: textStyle.baseline || i === 0 && this.option.name !== '' ? 'bottom' : i === dataLength - 1 && this.option.name !== '' ? 'top' : 'middle'
}
};
if (rotate) {
axShape.rotation = [
rotate * Math.PI / 180,
axShape.style.x,
axShape.style.y
];
}
this.shapeList.push(new TextShape(this._axisLabelClickable(clickable, axShape)));
}
}
},
_buildSplitLine: function () {
var axShape;
var data = this._valueList;
var dataLength = this._valueList.length;
var sLineOption = this.option.splitLine;
var lineType = sLineOption.lineStyle.type;
var lineWidth = sLineOption.lineStyle.width;
var color = sLineOption.lineStyle.color;
color = color instanceof Array ? color : [color];
var colorLength = color.length;
if (this.isHorizontal()) {
var sy = this.grid.getY();
var ey = this.grid.getYend();
var x;
for (var i = 0; i < dataLength; i++) {
x = this.subPixelOptimize(this.getCoord(data[i]), lineWidth);
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: x,
yStart: sy,
xEnd: x,
yEnd: ey,
strokeColor: color[i % colorLength],
lineType: lineType,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
} else {
var sx = this.grid.getX();
var ex = this.grid.getXend();
var y;
for (var i = 0; i < dataLength; i++) {
y = this.subPixelOptimize(this.getCoord(data[i]), lineWidth);
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
xStart: sx,
yStart: y,
xEnd: ex,
yEnd: y,
strokeColor: color[i % colorLength],
lineType: lineType,
lineWidth: lineWidth
}
};
this.shapeList.push(new LineShape(axShape));
}
}
},
_buildSplitArea: function () {
var axShape;
var color = this.option.splitArea.areaStyle.color;
if (!(color instanceof Array)) {
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this.grid.getX(),
y: this.grid.getY(),
width: this.grid.getWidth(),
height: this.grid.getHeight(),
color: color
}
};
this.shapeList.push(new RectangleShape(axShape));
} else {
var colorLength = color.length;
var data = this._valueList;
var dataLength = this._valueList.length;
if (this.isHorizontal()) {
var y = this.grid.getY();
var height = this.grid.getHeight();
var lastX = this.grid.getX();
var curX;
for (var i = 0; i <= dataLength; i++) {
curX = i < dataLength ? this.getCoord(data[i]) : this.grid.getXend();
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: lastX,
y: y,
width: curX - lastX,
height: height,
color: color[i % colorLength]
}
};
this.shapeList.push(new RectangleShape(axShape));
lastX = curX;
}
} else {
var x = this.grid.getX();
var width = this.grid.getWidth();
var lastYend = this.grid.getYend();
var curY;
for (var i = 0; i <= dataLength; i++) {
curY = i < dataLength ? this.getCoord(data[i]) : this.grid.getY();
axShape = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: x,
y: curY,
width: width,
height: lastYend - curY,
color: color[i % colorLength]
}
};
this.shapeList.push(new RectangleShape(axShape));
lastYend = curY;
}
}
}
},
_calculateValue: function () {
if (isNaN(this.option.min - 0) || isNaN(this.option.max - 0)) {
var data = {};
var xIdx;
var yIdx;
var legend = this.component.legend;
for (var i = 0, l = this.series.length; i < l; i++) {
if (this.series[i].type != ecConfig.CHART_TYPE_LINE && this.series[i].type != ecConfig.CHART_TYPE_BAR && this.series[i].type != ecConfig.CHART_TYPE_SCATTER && this.series[i].type != ecConfig.CHART_TYPE_K && this.series[i].type != ecConfig.CHART_TYPE_EVENTRIVER) {
continue;
}
if (legend && !legend.isSelected(this.series[i].name)) {
continue;
}
xIdx = this.series[i].xAxisIndex || 0;
yIdx = this.series[i].yAxisIndex || 0;
if (this.option.xAxisIndex != xIdx && this.option.yAxisIndex != yIdx) {
continue;
}
this._calculSum(data, i);
}
var oriData;
for (var i in data) {
oriData = data[i];
for (var j = 0, k = oriData.length; j < k; j++) {
if (!isNaN(oriData[j])) {
this._hasData = true;
this._min = oriData[j];
this._max = oriData[j];
break;
}
}
if (this._hasData) {
break;
}
}
for (var i in data) {
oriData = data[i];
for (var j = 0, k = oriData.length; j < k; j++) {
if (!isNaN(oriData[j])) {
this._min = Math.min(this._min, oriData[j]);
this._max = Math.max(this._max, oriData[j]);
}
}
}
var gap = Math.abs(this._max - this._min);
this._min = isNaN(this.option.min - 0) ? this._min - Math.abs(gap * this.option.boundaryGap[0]) : this.option.min - 0;
this._max = isNaN(this.option.max - 0) ? this._max + Math.abs(gap * this.option.boundaryGap[1]) : this.option.max - 0;
if (this._min === this._max) {
if (this._max === 0) {
this._max = 1;
} else if (this._max > 0) {
this._min = this._max / this.option.splitNumber != null ? this.option.splitNumber : 5;
} else {
this._max = this._max / this.option.splitNumber != null ? this.option.splitNumber : 5;
}
}
this.option.type != 'time' ? this._reformValue(this.option.scale) : this._reformTimeValue();
} else {
this._hasData = true;
this._min = this.option.min - 0;
this._max = this.option.max - 0;
this.option.type != 'time' ? this._customerValue() : this._reformTimeValue();
}
},
_calculSum: function (data, i) {
var key = this.series[i].name || 'kener';
var value;
var oriData;
if (!this.series[i].stack) {
data[key] = data[key] || [];
if (this.series[i].type != ecConfig.CHART_TYPE_EVENTRIVER) {
oriData = this.series[i].data;
for (var j = 0, k = oriData.length; j < k; j++) {
value = oriData[j].value != null ? oriData[j].value : oriData[j];
if (this.series[i].type === ecConfig.CHART_TYPE_K) {
data[key].push(value[0]);
data[key].push(value[1]);
data[key].push(value[2]);
data[key].push(value[3]);
} else if (value instanceof Array) {
if (this.option.xAxisIndex != -1) {
data[key].push(this.option.type != 'time' ? value[0] : ecDate.getNewDate(value[0]));
}
if (this.option.yAxisIndex != -1) {
data[key].push(this.option.type != 'time' ? value[1] : ecDate.getNewDate(value[1]));
}
} else {
data[key].push(value);
}
}
} else {
oriData = this.series[i].eventList;
for (var j = 0, k = oriData.length; j < k; j++) {
var evolution = oriData[j].evolution;
for (var m = 0, n = evolution.length; m < n; m++) {
data[key].push(ecDate.getNewDate(evolution[m].time));
}
}
}
} else {
var keyP = '__Magic_Key_Positive__' + this.series[i].stack;
var keyN = '__Magic_Key_Negative__' + this.series[i].stack;
data[keyP] = data[keyP] || [];
data[keyN] = data[keyN] || [];
data[key] = data[key] || [];
oriData = this.series[i].data;
for (var j = 0, k = oriData.length; j < k; j++) {
value = oriData[j].value != null ? oriData[j].value : oriData[j];
if (value === '-') {
continue;
}
value = value - 0;
if (value >= 0) {
if (data[keyP][j] != null) {
data[keyP][j] += value;
} else {
data[keyP][j] = value;
}
} else {
if (data[keyN][j] != null) {
data[keyN][j] += value;
} else {
data[keyN][j] = value;
}
}
if (this.option.scale) {
data[key].push(value);
}
}
}
},
_reformValue: function (scale) {
var smartSteps = require('../util/smartSteps');
var splitNumber = this.option.splitNumber;
if (!scale && this._min >= 0 && this._max >= 0) {
this._min = 0;
}
if (!scale && this._min <= 0 && this._max <= 0) {
this._max = 0;
}
var stepOpt = smartSteps(this._min, this._max, splitNumber);
splitNumber = splitNumber != null ? splitNumber : stepOpt.secs;
this.option.splitNumber = splitNumber;
this._min = stepOpt.min;
this._max = stepOpt.max;
this._valueList = stepOpt.pnts;
this._reformLabelData();
},
_reformTimeValue: function () {
var splitNumber = this.option.splitNumber != null ? this.option.splitNumber : 5;
var curValue = ecDate.getAutoFormatter(this._min, this._max, splitNumber);
var formatter = curValue.formatter;
var gapValue = curValue.gapValue;
this._valueList = [ecDate.getNewDate(this._min)];
var startGap;
switch (formatter) {
case 'week':
startGap = ecDate.nextMonday(this._min);
break;
case 'month':
startGap = ecDate.nextNthOnMonth(this._min, 1);
break;
case 'quarter':
startGap = ecDate.nextNthOnQuarterYear(this._min, 1);
break;
case 'half-year':
startGap = ecDate.nextNthOnHalfYear(this._min, 1);
break;
case 'year':
startGap = ecDate.nextNthOnYear(this._min, 1);
break;
default:
if (gapValue <= 3600000 * 2) {
startGap = (Math.floor(this._min / gapValue) + 1) * gapValue;
} else {
startGap = ecDate.getNewDate(this._min - -gapValue);
startGap.setHours(Math.round(startGap.getHours() / 6) * 6);
startGap.setMinutes(0);
startGap.setSeconds(0);
}
break;
}
if (startGap - this._min < gapValue / 2) {
startGap -= -gapValue;
}
curValue = ecDate.getNewDate(startGap);
splitNumber *= 1.5;
while (splitNumber-- >= 0) {
if (formatter == 'month' || formatter == 'quarter' || formatter == 'half-year' || formatter == 'year') {
curValue.setDate(1);
}
if (this._max - curValue < gapValue / 2) {
break;
}
this._valueList.push(curValue);
curValue = ecDate.getNewDate(curValue - -gapValue);
}
this._valueList.push(ecDate.getNewDate(this._max));
this._reformLabelData(formatter);
},
_customerValue: function () {
var accMath = require('../util/accMath');
var splitNumber = this.option.splitNumber != null ? this.option.splitNumber : 5;
var splitGap = (this._max - this._min) / splitNumber;
this._valueList = [];
for (var i = 0; i <= splitNumber; i++) {
this._valueList.push(accMath.accAdd(this._min, accMath.accMul(splitGap, i)));
}
this._reformLabelData();
},
_reformLabelData: function (timeFormatter) {
this._valueLabel = [];
var formatter = this.option.axisLabel.formatter;
if (formatter) {
for (var i = 0, l = this._valueList.length; i < l; i++) {
if (typeof formatter === 'function') {
this._valueLabel.push(timeFormatter ? formatter.call(this.myChart, this._valueList[i], timeFormatter) : formatter.call(this.myChart, this._valueList[i]));
} else if (typeof formatter === 'string') {
this._valueLabel.push(timeFormatter ? ecDate.format(formatter, this._valueList[i]) : formatter.replace('{value}', this._valueList[i]));
}
}
} else if (timeFormatter) {
for (var i = 0, l = this._valueList.length; i < l; i++) {
this._valueLabel.push(ecDate.format(timeFormatter, this._valueList[i]));
}
} else {
for (var i = 0, l = this._valueList.length; i < l; i++) {
this._valueLabel.push(this.numAddCommas(this._valueList[i]));
}
}
},
getExtremum: function () {
this._calculateValue();
return {
min: this._min,
max: this._max
};
},
refresh: function (newOption, newSeries) {
if (newOption) {
this.option = this.reformOption(newOption);
this.option.axisLabel.textStyle = zrUtil.merge(this.option.axisLabel.textStyle || {}, this.ecTheme.textStyle);
this.series = newSeries;
}
if (this.zr) {
this.clear();
this._buildShape();
}
},
getCoord: function (value) {
value = value < this._min ? this._min : value;
value = value > this._max ? this._max : value;
var result;
if (!this.isHorizontal()) {
result = this.grid.getYend() - (value - this._min) / (this._max - this._min) * this.grid.getHeight();
} else {
result = this.grid.getX() + (value - this._min) / (this._max - this._min) * this.grid.getWidth();
}
return result;
},
getCoordSize: function (value) {
if (!this.isHorizontal()) {
return Math.abs(value / (this._max - this._min) * this.grid.getHeight());
} else {
return Math.abs(value / (this._max - this._min) * this.grid.getWidth());
}
},
getValueFromCoord: function (coord) {
var result;
if (!this.isHorizontal()) {
coord = coord < this.grid.getY() ? this.grid.getY() : coord;
coord = coord > this.grid.getYend() ? this.grid.getYend() : coord;
result = this._max - (coord - this.grid.getY()) / this.grid.getHeight() * (this._max - this._min);
} else {
coord = coord < this.grid.getX() ? this.grid.getX() : coord;
coord = coord > this.grid.getXend() ? this.grid.getXend() : coord;
result = this._min + (coord - this.grid.getX()) / this.grid.getWidth() * (this._max - this._min);
}
return result.toFixed(2) - 0;
},
isMaindAxis: function (value) {
for (var i = 0, l = this._valueList.length; i < l; i++) {
if (this._valueList[i] === value) {
return true;
}
}
return false;
}
};
zrUtil.inherits(ValueAxis, Base);
require('../component').define('valueAxis', ValueAxis);
return ValueAxis;
});define('echarts/util/date', [], function () {
var _timeGap = [
{
formatter: 'hh : mm : ss',
value: 1000
},
{
formatter: 'hh : mm : ss',
value: 1000 * 5
},
{
formatter: 'hh : mm : ss',
value: 1000 * 10
},
{
formatter: 'hh : mm : ss',
value: 1000 * 15
},
{
formatter: 'hh : mm : ss',
value: 1000 * 30
},
{
formatter: 'hh : mm\nMM - dd',
value: 60000
},
{
formatter: 'hh : mm\nMM - dd',
value: 60000 * 5
},
{
formatter: 'hh : mm\nMM - dd',
value: 60000 * 10
},
{
formatter: 'hh : mm\nMM - dd',
value: 60000 * 15
},
{
formatter: 'hh : mm\nMM - dd',
value: 60000 * 30
},
{
formatter: 'hh : mm\nMM - dd',
value: 3600000
},
{
formatter: 'hh : mm\nMM - dd',
value: 3600000 * 2
},
{
formatter: 'hh : mm\nMM - dd',
value: 3600000 * 6
},
{
formatter: 'hh : mm\nMM - dd',
value: 3600000 * 12
},
{
formatter: 'MM - dd\nyyyy',
value: 3600000 * 24
},
{
formatter: 'week',
value: 3600000 * 24 * 7
},
{
formatter: 'month',
value: 3600000 * 24 * 31
},
{
formatter: 'quarter',
value: 3600000 * 24 * 380 / 4
},
{
formatter: 'half-year',
value: 3600000 * 24 * 380 / 2
},
{
formatter: 'year',
value: 3600000 * 24 * 380
}
];
function getAutoFormatter(min, max, splitNumber) {
splitNumber = splitNumber > 1 ? splitNumber : 2;
var curValue;
var totalGap;
var formatter;
var gapValue;
for (var i = 0, l = _timeGap.length; i < l; i++) {
curValue = _timeGap[i].value;
totalGap = Math.ceil(max / curValue) * curValue - Math.floor(min / curValue) * curValue;
if (Math.round(totalGap / curValue) <= splitNumber * 1.2) {
formatter = _timeGap[i].formatter;
gapValue = _timeGap[i].value;
break;
}
}
if (formatter == null) {
formatter = 'year';
curValue = 3600000 * 24 * 367;
totalGap = Math.ceil(max / curValue) * curValue - Math.floor(min / curValue) * curValue;
gapValue = Math.round(totalGap / (splitNumber - 1) / curValue) * curValue;
}
return {
formatter: formatter,
gapValue: gapValue
};
}
function s2d(v) {
return v < 10 ? '0' + v : v;
}
function format(formatter, value) {
if (formatter == 'week' || formatter == 'month' || formatter == 'quarter' || formatter == 'half-year' || formatter == 'year') {
formatter = 'MM - dd\nyyyy';
}
var date = getNewDate(value);
var y = date.getFullYear();
var M = date.getMonth() + 1;
var d = date.getDate();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
formatter = formatter.replace('MM', s2d(M));
formatter = formatter.toLowerCase();
formatter = formatter.replace('yyyy', y);
formatter = formatter.replace('yy', y % 100);
formatter = formatter.replace('dd', s2d(d));
formatter = formatter.replace('d', d);
formatter = formatter.replace('hh', s2d(h));
formatter = formatter.replace('h', h);
formatter = formatter.replace('mm', s2d(m));
formatter = formatter.replace('m', m);
formatter = formatter.replace('ss', s2d(s));
formatter = formatter.replace('s', s);
return formatter;
}
function nextMonday(value) {
value = getNewDate(value);
value.setDate(value.getDate() + 8 - value.getDay());
return value;
}
function nextNthPerNmonth(value, nth, nmon) {
value = getNewDate(value);
value.setMonth(Math.ceil((value.getMonth() + 1) / nmon) * nmon);
value.setDate(nth);
return value;
}
function nextNthOnMonth(value, nth) {
return nextNthPerNmonth(value, nth, 1);
}
function nextNthOnQuarterYear(value, nth) {
return nextNthPerNmonth(value, nth, 3);
}
function nextNthOnHalfYear(value, nth) {
return nextNthPerNmonth(value, nth, 6);
}
function nextNthOnYear(value, nth) {
return nextNthPerNmonth(value, nth, 12);
}
function getNewDate(value) {
return value instanceof Date ? value : new Date(typeof value == 'string' ? value.replace(/-/g, '/') : value);
}
return {
getAutoFormatter: getAutoFormatter,
getNewDate: getNewDate,
format: format,
nextMonday: nextMonday,
nextNthPerNmonth: nextNthPerNmonth,
nextNthOnMonth: nextNthOnMonth,
nextNthOnQuarterYear: nextNthOnQuarterYear,
nextNthOnHalfYear: nextNthOnHalfYear,
nextNthOnYear: nextNthOnYear
};
});define('echarts/util/smartSteps', [], function () {
var mySteps = [
10,
25,
50
];
var mySections = [
4,
5,
6
];
var custOpts;
var custSteps;
var custSecs;
var minLocked;
var maxLocked;
var MT = Math;
var MATH_ROUND = MT.round;
var MATH_FLOOR = MT.floor;
var MATH_CEIL = MT.ceil;
var MATH_ABS = MT.abs;
function MATH_LOG(n) {
return MT.log(MATH_ABS(n)) / MT.LN10;
}
function MATH_POW(n) {
return MT.pow(10, n);
}
function MATH_ISINT(n) {
return n === MATH_FLOOR(n);
}
function smartSteps(min, max, section, opts) {
custOpts = opts || {};
custSteps = custOpts.steps || mySteps;
custSecs = custOpts.secs || mySections;
section = MATH_ROUND(+section || 0) % 99;
min = +min || 0;
max = +max || 0;
minLocked = maxLocked = 0;
if ('min' in custOpts) {
min = +custOpts.min || 0;
minLocked = 1;
}
if ('max' in custOpts) {
max = +custOpts.max || 0;
maxLocked = 1;
}
if (min > max) {
max = [
min,
min = max
][0];
}
var span = max - min;
if (minLocked && maxLocked) {
return bothLocked(min, max, section);
}
if (span < (section || 5)) {
if (MATH_ISINT(min) && MATH_ISINT(max)) {
return forInteger(min, max, section);
} else if (span === 0) {
return forSpan0(min, max, section);
}
}
return coreCalc(min, max, section);
}
function makeResult(newMin, newMax, section, expon) {
expon = expon || 0;
var expStep = expNum((newMax - newMin) / section, -1);
var expMin = expNum(newMin, -1, 1);
var expMax = expNum(newMax, -1);
var minExp = MT.min(expStep.e, expMin.e, expMax.e);
expFixTo(expStep, {
c: 0,
e: minExp
});
expFixTo(expMin, expStep, 1);
expFixTo(expMax, expStep);
expon += minExp;
newMin = expMin.c;
newMax = expMax.c;
var step = (newMax - newMin) / section;
var zoom = MATH_POW(expon);
var fixTo = 0;
var points = [];
for (var i = section + 1; i--;) {
points[i] = (newMin + step * i) * zoom;
}
if (expon < 0) {
fixTo = decimals(zoom);
step = +(step * zoom).toFixed(fixTo);
newMin = +(newMin * zoom).toFixed(fixTo);
newMax = +(newMax * zoom).toFixed(fixTo);
for (var i = points.length; i--;) {
points[i] = points[i].toFixed(fixTo);
+points[i] === 0 && (points[i] = '0');
}
} else {
newMin *= zoom;
newMax *= zoom;
step *= zoom;
}
custSecs = 0;
custSteps = 0;
custOpts = 0;
return {
min: newMin,
max: newMax,
secs: section,
step: step,
fix: fixTo,
exp: expon,
pnts: points
};
}
function expNum(num, digit, byFloor) {
digit = MATH_ROUND(digit % 10) || 2;
if (digit < 0) {
if (MATH_ISINT(num)) {
digit = ('' + MATH_ABS(num)).replace(/0+$/, '').length || 1;
} else {
num = num.toFixed(15).replace(/0+$/, '');
digit = num.replace('.', '').replace(/^[-0]+/, '').length;
num = +num;
}
}
var expon = MATH_FLOOR(MATH_LOG(num)) - digit + 1;
var cNum = +(num * MATH_POW(-expon)).toFixed(15) || 0;
cNum = byFloor ? MATH_FLOOR(cNum) : MATH_CEIL(cNum);
!cNum && (expon = 0);
if (('' + MATH_ABS(cNum)).length > digit) {
expon += 1;
cNum /= 10;
}
return {
c: cNum,
e: expon
};
}
function expFixTo(expnum1, expnum2, byFloor) {
var deltaExp = expnum2.e - expnum1.e;
if (deltaExp) {
expnum1.e += deltaExp;
expnum1.c *= MATH_POW(-deltaExp);
expnum1.c = byFloor ? MATH_FLOOR(expnum1.c) : MATH_CEIL(expnum1.c);
}
}
function expFixMin(expnum1, expnum2, byFloor) {
if (expnum1.e < expnum2.e) {
expFixTo(expnum2, expnum1, byFloor);
} else {
expFixTo(expnum1, expnum2, byFloor);
}
}
function getCeil(num, rounds) {
rounds = rounds || mySteps;
num = expNum(num);
var cNum = num.c;
var i = 0;
while (cNum > rounds[i]) {
i++;
}
if (!rounds[i]) {
cNum /= 10;
num.e += 1;
i = 0;
while (cNum > rounds[i]) {
i++;
}
}
num.c = rounds[i];
return num;
}
function coreCalc(min, max, section) {
var step;
var secs = section || +custSecs.slice(-1);
var expStep = getCeil((max - min) / secs, custSteps);
var expSpan = expNum(max - min);
var expMin = expNum(min, -1, 1);
var expMax = expNum(max, -1);
expFixTo(expSpan, expStep);
expFixTo(expMin, expStep, 1);
expFixTo(expMax, expStep);
if (!section) {
secs = look4sections(expMin, expMax);
} else {
step = look4step(expMin, expMax, secs);
}
if (MATH_ISINT(min) && MATH_ISINT(max) && min * max >= 0) {
if (max - min < secs) {
return forInteger(min, max, secs);
}
secs = tryForInt(min, max, section, expMin, expMax, secs);
}
var arrMM = cross0(min, max, expMin.c, expMax.c);
expMin.c = arrMM[0];
expMax.c = arrMM[1];
if (minLocked || maxLocked) {
singleLocked(min, max, expMin, expMax);
}
return makeResult(expMin.c, expMax.c, secs, expMax.e);
}
function look4sections(expMin, expMax) {
var section;
var tmpStep, tmpMin, tmpMax;
var reference = [];
for (var i = custSecs.length; i--;) {
section = custSecs[i];
tmpStep = getCeil((expMax.c - expMin.c) / section, custSteps);
tmpStep = tmpStep.c * MATH_POW(tmpStep.e);
tmpMin = MATH_FLOOR(expMin.c / tmpStep) * tmpStep;
tmpMax = MATH_CEIL(expMax.c / tmpStep) * tmpStep;
reference[i] = {
min: tmpMin,
max: tmpMax,
step: tmpStep,
span: tmpMax - tmpMin
};
}
reference.sort(function (a, b) {
return a.span - b.span;
});
reference = reference[0];
section = reference.span / reference.step;
expMin.c = reference.min;
expMax.c = reference.max;
return section < 3 ? section * 2 : section;
}
function look4step(expMin, expMax, secs) {
var span;
var tmpMax;
var tmpMin = expMax.c;
var tmpStep = (expMax.c - expMin.c) / secs - 1;
while (tmpMin > expMin.c) {
tmpStep = getCeil(tmpStep + 1, custSteps);
tmpStep = tmpStep.c * MATH_POW(tmpStep.e);
span = tmpStep * secs;
tmpMax = MATH_CEIL(expMax.c / tmpStep) * tmpStep;
tmpMin = tmpMax - span;
}
var deltaMin = expMin.c - tmpMin;
var deltaMax = tmpMax - expMax.c;
var deltaDelta = deltaMin - deltaMax;
if (deltaDelta >= tmpStep * 2) {
deltaDelta = MATH_FLOOR(deltaDelta / tmpStep) * tmpStep;
tmpMin += deltaDelta;
tmpMax += deltaDelta;
}
expMin.c = tmpMin;
expMax.c = tmpMax;
return tmpStep;
}
function tryForInt(min, max, section, expMin, expMax, secs) {
var span = expMax.c - expMin.c;
var step = span / secs * MATH_POW(expMax.e);
if (!MATH_ISINT(step)) {
step = MATH_FLOOR(step);
span = step * secs;
if (span < max - min) {
step += 1;
span = step * secs;
if (!section && step * (secs - 1) >= max - min) {
secs -= 1;
span = step * secs;
}
}
if (span >= max - min) {
var delta = span - (max - min);
expMin.c = MATH_ROUND(min - delta / 2);
expMax.c = MATH_ROUND(max + delta / 2);
expMin.e = 0;
expMax.e = 0;
}
}
return secs;
}
function forInteger(min, max, section) {
section = section || 5;
if (minLocked) {
max = min + section;
} else if (maxLocked) {
min = max - section;
} else {
var delta = section - (max - min);
var newMin = MATH_ROUND(min - delta / 2);
var newMax = MATH_ROUND(max + delta / 2);
var arrMM = cross0(min, max, newMin, newMax);
min = arrMM[0];
max = arrMM[1];
}
return makeResult(min, max, section);
}
function forSpan0(min, max, section) {
section = section || 5;
var delta = MT.min(MATH_ABS(max / section), section) / 2.1;
if (minLocked) {
max = min + delta;
} else if (maxLocked) {
min = max - delta;
} else {
min = min - delta;
max = max + delta;
}
return coreCalc(min, max, section);
}
function cross0(min, max, newMin, newMax) {
if (min >= 0 && newMin < 0) {
newMax -= newMin;
newMin = 0;
} else if (max <= 0 && newMax > 0) {
newMin -= newMax;
newMax = 0;
}
return [
newMin,
newMax
];
}
function decimals(num) {
num = (+num).toFixed(15).split('.');
return num.pop().replace(/0+$/, '').length;
}
function singleLocked(min, max, emin, emax) {
if (minLocked) {
var expMin = expNum(min, 4, 1);
if (emin.e - expMin.e > 6) {
expMin = {
c: 0,
e: emin.e
};
}
expFixMin(emin, expMin);
expFixMin(emax, expMin);
emax.c += expMin.c - emin.c;
emin.c = expMin.c;
} else if (maxLocked) {
var expMax = expNum(max, 4);
if (emax.e - expMax.e > 6) {
expMax = {
c: 0,
e: emax.e
};
}
expFixMin(emin, expMax);
expFixMin(emax, expMax);
emin.c += expMax.c - emax.c;
emax.c = expMax.c;
}
}
function bothLocked(min, max, section) {
var trySecs = section ? [section] : custSecs;
var span = max - min;
if (span === 0) {
max = expNum(max, 3);
section = trySecs[0];
max.c = MATH_ROUND(max.c + section / 2);
return makeResult(max.c - section, max.c, section, max.e);
}
if (MATH_ABS(max / span) < 0.000001) {
max = 0;
}
if (MATH_ABS(min / span) < 0.000001) {
min = 0;
}
var step, deltaSpan, score;
var scoreS = [
[
5,
10
],
[
10,
2
],
[
50,
10
],
[
100,
2
]
];
var reference = [];
var debugLog = [];
var expSpan = expNum(max - min, 3);
var expMin = expNum(min, -1, 1);
var expMax = expNum(max, -1);
expFixTo(expMin, expSpan, 1);
expFixTo(expMax, expSpan);
span = expMax.c - expMin.c;
expSpan.c = span;
for (var i = trySecs.length; i--;) {
section = trySecs[i];
step = MATH_CEIL(span / section);
deltaSpan = step * section - span;
score = (deltaSpan + 3) * 3;
score += (section - trySecs[0] + 2) * 2;
if (section % 5 === 0) {
score -= 10;
}
for (var j = scoreS.length; j--;) {
if (step % scoreS[j][0] === 0) {
score /= scoreS[j][1];
}
}
debugLog[i] = [
section,
step,
deltaSpan,
score
].join();
reference[i] = {
secs: section,
step: step,
delta: deltaSpan,
score: score
};
}
reference.sort(function (a, b) {
return a.score - b.score;
});
reference = reference[0];
expMin.c = MATH_ROUND(expMin.c - reference.delta / 2);
expMax.c = MATH_ROUND(expMax.c + reference.delta / 2);
return makeResult(expMin.c, expMax.c, reference.secs, expSpan.e);
}
return smartSteps;
});define('echarts/chart/line', [
'require',
'../component/base',
'./base',
'zrender/shape/BrokenLine',
'../util/shape/Icon',
'../util/shape/HalfSmoothPolygon',
'../component/axis',
'../component/grid',
'../component/dataZoom',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/color',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var BrokenLineShape = require('zrender/shape/BrokenLine');
var IconShape = require('../util/shape/Icon');
var HalfSmoothPolygonShape = require('../util/shape/HalfSmoothPolygon');
require('../component/axis');
require('../component/grid');
require('../component/dataZoom');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
function Line(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
Line.prototype = {
type: ecConfig.CHART_TYPE_LINE,
_buildShape: function () {
this.finalPLMap = {};
this._bulidPosition();
},
_buildHorizontal: function (seriesArray, maxDataLength, locationMap, xMarkMap) {
var series = this.series;
var seriesIndex = locationMap[0][0];
var serie = series[seriesIndex];
var xAxisIndex = serie.xAxisIndex;
var categoryAxis = this.component.xAxis.getAxis(xAxisIndex);
var yAxisIndex;
var valueAxis;
var x;
var y;
var lastYP;
var baseYP;
var lastYN;
var baseYN;
var curPLMap = {};
var data;
var value;
for (var i = 0, l = maxDataLength; i < l; i++) {
if (categoryAxis.getNameByIndex(i) == null) {
break;
}
x = categoryAxis.getCoordByIndex(i);
for (var j = 0, k = locationMap.length; j < k; j++) {
yAxisIndex = series[locationMap[j][0]].yAxisIndex || 0;
valueAxis = this.component.yAxis.getAxis(yAxisIndex);
baseYP = lastYP = baseYN = lastYN = valueAxis.getCoord(0);
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
serie = series[seriesIndex];
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
curPLMap[seriesIndex] = curPLMap[seriesIndex] || [];
xMarkMap[seriesIndex] = xMarkMap[seriesIndex] || {
min: Number.POSITIVE_INFINITY,
max: Number.NEGATIVE_INFINITY,
sum: 0,
counter: 0,
average: 0
};
if (value === '-') {
if (curPLMap[seriesIndex].length > 0) {
this.finalPLMap[seriesIndex] = this.finalPLMap[seriesIndex] || [];
this.finalPLMap[seriesIndex].push(curPLMap[seriesIndex]);
curPLMap[seriesIndex] = [];
}
continue;
}
if (value >= 0) {
lastYP -= m > 0 ? valueAxis.getCoordSize(value) : baseYP - valueAxis.getCoord(value);
y = lastYP;
} else if (value < 0) {
lastYN += m > 0 ? valueAxis.getCoordSize(value) : valueAxis.getCoord(value) - baseYN;
y = lastYN;
}
curPLMap[seriesIndex].push([
x,
y,
i,
categoryAxis.getNameByIndex(i),
x,
baseYP
]);
if (xMarkMap[seriesIndex].min > value) {
xMarkMap[seriesIndex].min = value;
xMarkMap[seriesIndex].minY = y;
xMarkMap[seriesIndex].minX = x;
}
if (xMarkMap[seriesIndex].max < value) {
xMarkMap[seriesIndex].max = value;
xMarkMap[seriesIndex].maxY = y;
xMarkMap[seriesIndex].maxX = x;
}
xMarkMap[seriesIndex].sum += value;
xMarkMap[seriesIndex].counter++;
}
}
lastYP = this.component.grid.getY();
var symbolSize;
for (var j = 0, k = locationMap.length; j < k; j++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
serie = series[seriesIndex];
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
if (value != '-') {
continue;
}
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
symbolSize = this.deepQuery([
data,
serie
], 'symbolSize');
lastYP += symbolSize * 2 + 5;
y = lastYP;
this.shapeList.push(this._getCalculableItem(seriesIndex, i, categoryAxis.getNameByIndex(i), x, y, 'horizontal'));
}
}
}
}
for (var sId in curPLMap) {
if (curPLMap[sId].length > 0) {
this.finalPLMap[sId] = this.finalPLMap[sId] || [];
this.finalPLMap[sId].push(curPLMap[sId]);
curPLMap[sId] = [];
}
}
this._calculMarkMapXY(xMarkMap, locationMap, 'y');
this._buildBorkenLine(seriesArray, this.finalPLMap, categoryAxis, 'horizontal');
},
_buildVertical: function (seriesArray, maxDataLength, locationMap, xMarkMap) {
var series = this.series;
var seriesIndex = locationMap[0][0];
var serie = series[seriesIndex];
var yAxisIndex = serie.yAxisIndex;
var categoryAxis = this.component.yAxis.getAxis(yAxisIndex);
var xAxisIndex;
var valueAxis;
var x;
var y;
var lastXP;
var baseXP;
var lastXN;
var baseXN;
var curPLMap = {};
var data;
var value;
for (var i = 0, l = maxDataLength; i < l; i++) {
if (categoryAxis.getNameByIndex(i) == null) {
break;
}
y = categoryAxis.getCoordByIndex(i);
for (var j = 0, k = locationMap.length; j < k; j++) {
xAxisIndex = series[locationMap[j][0]].xAxisIndex || 0;
valueAxis = this.component.xAxis.getAxis(xAxisIndex);
baseXP = lastXP = baseXN = lastXN = valueAxis.getCoord(0);
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
serie = series[seriesIndex];
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
curPLMap[seriesIndex] = curPLMap[seriesIndex] || [];
xMarkMap[seriesIndex] = xMarkMap[seriesIndex] || {
min: Number.POSITIVE_INFINITY,
max: Number.NEGATIVE_INFINITY,
sum: 0,
counter: 0,
average: 0
};
if (value === '-') {
if (curPLMap[seriesIndex].length > 0) {
this.finalPLMap[seriesIndex] = this.finalPLMap[seriesIndex] || [];
this.finalPLMap[seriesIndex].push(curPLMap[seriesIndex]);
curPLMap[seriesIndex] = [];
}
continue;
}
if (value >= 0) {
lastXP += m > 0 ? valueAxis.getCoordSize(value) : valueAxis.getCoord(value) - baseXP;
x = lastXP;
} else if (value < 0) {
lastXN -= m > 0 ? valueAxis.getCoordSize(value) : baseXN - valueAxis.getCoord(value);
x = lastXN;
}
curPLMap[seriesIndex].push([
x,
y,
i,
categoryAxis.getNameByIndex(i),
baseXP,
y
]);
if (xMarkMap[seriesIndex].min > value) {
xMarkMap[seriesIndex].min = value;
xMarkMap[seriesIndex].minX = x;
xMarkMap[seriesIndex].minY = y;
}
if (xMarkMap[seriesIndex].max < value) {
xMarkMap[seriesIndex].max = value;
xMarkMap[seriesIndex].maxX = x;
xMarkMap[seriesIndex].maxY = y;
}
xMarkMap[seriesIndex].sum += value;
xMarkMap[seriesIndex].counter++;
}
}
lastXP = this.component.grid.getXend();
var symbolSize;
for (var j = 0, k = locationMap.length; j < k; j++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
serie = series[seriesIndex];
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
if (value != '-') {
continue;
}
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
symbolSize = this.deepQuery([
data,
serie
], 'symbolSize');
lastXP -= symbolSize * 2 + 5;
x = lastXP;
this.shapeList.push(this._getCalculableItem(seriesIndex, i, categoryAxis.getNameByIndex(i), x, y, 'vertical'));
}
}
}
}
for (var sId in curPLMap) {
if (curPLMap[sId].length > 0) {
this.finalPLMap[sId] = this.finalPLMap[sId] || [];
this.finalPLMap[sId].push(curPLMap[sId]);
curPLMap[sId] = [];
}
}
this._calculMarkMapXY(xMarkMap, locationMap, 'x');
this._buildBorkenLine(seriesArray, this.finalPLMap, categoryAxis, 'vertical');
},
_buildOther: function (seriesArray, maxDataLength, locationMap, xMarkMap) {
var series = this.series;
var curPLMap = {};
var xAxis;
var yAxis;
for (var j = 0, k = locationMap.length; j < k; j++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
var seriesIndex = locationMap[j][m];
var serie = series[seriesIndex];
var xAxisIndex = serie.xAxisIndex || 0;
xAxis = this.component.xAxis.getAxis(xAxisIndex);
var yAxisIndex = serie.yAxisIndex || 0;
yAxis = this.component.yAxis.getAxis(yAxisIndex);
var baseY = yAxis.getCoord(0);
curPLMap[seriesIndex] = curPLMap[seriesIndex] || [];
xMarkMap[seriesIndex] = xMarkMap[seriesIndex] || {
min0: Number.POSITIVE_INFINITY,
min1: Number.POSITIVE_INFINITY,
max0: Number.NEGATIVE_INFINITY,
max1: Number.NEGATIVE_INFINITY,
sum0: 0,
sum1: 0,
counter0: 0,
counter1: 0,
average0: 0,
average1: 0
};
for (var i = 0, l = serie.data.length; i < l; i++) {
var data = serie.data[i];
var value = data != null ? data.value != null ? data.value : data : '-';
if (!(value instanceof Array)) {
continue;
}
var x = xAxis.getCoord(value[0]);
var y = yAxis.getCoord(value[1]);
curPLMap[seriesIndex].push([
x,
y,
i,
value[0],
x,
baseY
]);
if (xMarkMap[seriesIndex].min0 > value[0]) {
xMarkMap[seriesIndex].min0 = value[0];
xMarkMap[seriesIndex].minY0 = y;
xMarkMap[seriesIndex].minX0 = x;
}
if (xMarkMap[seriesIndex].max0 < value[0]) {
xMarkMap[seriesIndex].max0 = value[0];
xMarkMap[seriesIndex].maxY0 = y;
xMarkMap[seriesIndex].maxX0 = x;
}
xMarkMap[seriesIndex].sum0 += value[0];
xMarkMap[seriesIndex].counter0++;
if (xMarkMap[seriesIndex].min1 > value[1]) {
xMarkMap[seriesIndex].min1 = value[1];
xMarkMap[seriesIndex].minY1 = y;
xMarkMap[seriesIndex].minX1 = x;
}
if (xMarkMap[seriesIndex].max1 < value[1]) {
xMarkMap[seriesIndex].max1 = value[1];
xMarkMap[seriesIndex].maxY1 = y;
xMarkMap[seriesIndex].maxX1 = x;
}
xMarkMap[seriesIndex].sum1 += value[1];
xMarkMap[seriesIndex].counter1++;
}
}
}
for (var sId in curPLMap) {
if (curPLMap[sId].length > 0) {
this.finalPLMap[sId] = this.finalPLMap[sId] || [];
this.finalPLMap[sId].push(curPLMap[sId]);
curPLMap[sId] = [];
}
}
this._calculMarkMapXY(xMarkMap, locationMap, 'xy');
this._buildBorkenLine(seriesArray, this.finalPLMap, xAxis, 'other');
},
_buildBorkenLine: function (seriesArray, pointList, categoryAxis, curOrient) {
var orient = curOrient == 'other' ? 'horizontal' : curOrient;
var series = this.series;
var data;
for (var sIdx = seriesArray.length - 1; sIdx >= 0; sIdx--) {
var seriesIndex = seriesArray[sIdx];
var serie = series[seriesIndex];
var seriesPL = pointList[seriesIndex];
if (serie.type === this.type && seriesPL != null) {
var bbox = this._getBbox(seriesIndex, orient);
var defaultColor = this._sIndex2ColorMap[seriesIndex];
var lineWidth = this.query(serie, 'itemStyle.normal.lineStyle.width');
var lineType = this.query(serie, 'itemStyle.normal.lineStyle.type');
var lineColor = this.query(serie, 'itemStyle.normal.lineStyle.color');
var normalColor = this.getItemStyleColor(this.query(serie, 'itemStyle.normal.color'), seriesIndex, -1);
var isFill = this.query(serie, 'itemStyle.normal.areaStyle') != null;
var fillNormalColor = this.query(serie, 'itemStyle.normal.areaStyle.color');
for (var i = 0, l = seriesPL.length; i < l; i++) {
var singlePL = seriesPL[i];
var isLarge = curOrient != 'other' && this._isLarge(orient, singlePL);
if (!isLarge) {
for (var j = 0, k = singlePL.length; j < k; j++) {
data = serie.data[singlePL[j][2]];
if (this.deepQuery([
data,
serie,
this.option
], 'calculable') || this.deepQuery([
data,
serie
], 'showAllSymbol') || categoryAxis.type === 'categoryAxis' && categoryAxis.isMainAxis(singlePL[j][2]) && this.deepQuery([
data,
serie
], 'symbol') != 'none') {
this.shapeList.push(this._getSymbol(seriesIndex, singlePL[j][2], singlePL[j][3], singlePL[j][0], singlePL[j][1], orient));
}
}
} else {
singlePL = this._getLargePointList(orient, singlePL);
}
var brokenLineShape = new BrokenLineShape({
zlevel: this._zlevelBase,
style: {
miterLimit: lineWidth,
pointList: singlePL,
strokeColor: lineColor || normalColor || defaultColor,
lineWidth: lineWidth,
lineType: lineType,
smooth: this._getSmooth(serie.smooth),
smoothConstraint: bbox,
shadowColor: this.query(serie, 'itemStyle.normal.lineStyle.shadowColor'),
shadowBlur: this.query(serie, 'itemStyle.normal.lineStyle.shadowBlur'),
shadowOffsetX: this.query(serie, 'itemStyle.normal.lineStyle.shadowOffsetX'),
shadowOffsetY: this.query(serie, 'itemStyle.normal.lineStyle.shadowOffsetY')
},
hoverable: false,
_main: true,
_seriesIndex: seriesIndex,
_orient: orient
});
ecData.pack(brokenLineShape, series[seriesIndex], seriesIndex, 0, i, series[seriesIndex].name);
this.shapeList.push(brokenLineShape);
if (isFill) {
var halfSmoothPolygonShape = new HalfSmoothPolygonShape({
zlevel: this._zlevelBase,
style: {
miterLimit: lineWidth,
pointList: zrUtil.clone(singlePL).concat([
[
singlePL[singlePL.length - 1][4],
singlePL[singlePL.length - 1][5]
],
[
singlePL[0][4],
singlePL[0][5]
]
]),
brushType: 'fill',
smooth: this._getSmooth(serie.smooth),
smoothConstraint: bbox,
color: fillNormalColor ? fillNormalColor : zrColor.alpha(defaultColor, 0.5)
},
highlightStyle: { brushType: 'fill' },
hoverable: false,
_main: true,
_seriesIndex: seriesIndex,
_orient: orient
});
ecData.pack(halfSmoothPolygonShape, series[seriesIndex], seriesIndex, 0, i, series[seriesIndex].name);
this.shapeList.push(halfSmoothPolygonShape);
}
}
}
}
},
_getBbox: function (seriesIndex, orient) {
var bbox = this.component.grid.getBbox();
var xMarkMap = this.xMarkMap[seriesIndex];
if (xMarkMap.minX0 != null) {
return [
[
Math.min(xMarkMap.minX0, xMarkMap.maxX0, xMarkMap.minX1, xMarkMap.maxX1),
Math.min(xMarkMap.minY0, xMarkMap.maxY0, xMarkMap.minY1, xMarkMap.maxY1)
],
[
Math.max(xMarkMap.minX0, xMarkMap.maxX0, xMarkMap.minX1, xMarkMap.maxX1),
Math.max(xMarkMap.minY0, xMarkMap.maxY0, xMarkMap.minY1, xMarkMap.maxY1)
]
];
} else if (orient === 'horizontal') {
bbox[0][1] = Math.min(xMarkMap.minY, xMarkMap.maxY);
bbox[1][1] = Math.max(xMarkMap.minY, xMarkMap.maxY);
} else {
bbox[0][0] = Math.min(xMarkMap.minX, xMarkMap.maxX);
bbox[1][0] = Math.max(xMarkMap.minX, xMarkMap.maxX);
}
return bbox;
},
_isLarge: function (orient, singlePL) {
if (singlePL.length < 2) {
return false;
} else {
return orient === 'horizontal' ? Math.abs(singlePL[0][0] - singlePL[1][0]) < 0.5 : Math.abs(singlePL[0][1] - singlePL[1][1]) < 0.5;
}
},
_getLargePointList: function (orient, singlePL) {
var total;
if (orient === 'horizontal') {
total = this.component.grid.getWidth();
} else {
total = this.component.grid.getHeight();
}
var len = singlePL.length;
var newList = [];
for (var i = 0; i < total; i++) {
newList[i] = singlePL[Math.floor(len / total * i)];
}
return newList;
},
_getSmooth: function (isSmooth) {
if (isSmooth) {
return 0.3;
} else {
return 0;
}
},
_getCalculableItem: function (seriesIndex, dataIndex, name, x, y, orient) {
var series = this.series;
var color = series[seriesIndex].calculableHolderColor || this.ecTheme.calculableHolderColor;
var itemShape = this._getSymbol(seriesIndex, dataIndex, name, x, y, orient);
itemShape.style.color = color;
itemShape.style.strokeColor = color;
itemShape.rotation = [
0,
0
];
itemShape.hoverable = false;
itemShape.draggable = false;
itemShape.style.text = undefined;
return itemShape;
},
_getSymbol: function (seriesIndex, dataIndex, name, x, y, orient) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var itemShape = this.getSymbolShape(serie, seriesIndex, data, dataIndex, name, x, y, this._sIndex2ShapeMap[seriesIndex], this._sIndex2ColorMap[seriesIndex], '#fff', orient === 'vertical' ? 'horizontal' : 'vertical');
itemShape.zlevel = this._zlevelBase + 1;
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
this.setCalculable(itemShape);
itemShape.draggable = true;
}
return itemShape;
},
getMarkCoord: function (seriesIndex, mpData) {
var serie = this.series[seriesIndex];
var xMarkMap = this.xMarkMap[seriesIndex];
var xAxis = this.component.xAxis.getAxis(serie.xAxisIndex);
var yAxis = this.component.yAxis.getAxis(serie.yAxisIndex);
if (mpData.type && (mpData.type === 'max' || mpData.type === 'min' || mpData.type === 'average')) {
var valueIndex = mpData.valueIndex != null ? mpData.valueIndex : xMarkMap.maxX0 != null ? '1' : '';
return [
xMarkMap[mpData.type + 'X' + valueIndex],
xMarkMap[mpData.type + 'Y' + valueIndex],
xMarkMap[mpData.type + 'Line' + valueIndex],
xMarkMap[mpData.type + valueIndex]
];
}
return [
typeof mpData.xAxis != 'string' && xAxis.getCoordByIndex ? xAxis.getCoordByIndex(mpData.xAxis || 0) : xAxis.getCoord(mpData.xAxis || 0),
typeof mpData.yAxis != 'string' && yAxis.getCoordByIndex ? yAxis.getCoordByIndex(mpData.yAxis || 0) : yAxis.getCoord(mpData.yAxis || 0)
];
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
},
ontooltipHover: function (param, tipShape) {
var seriesIndex = param.seriesIndex;
var dataIndex = param.dataIndex;
var seriesPL;
var singlePL;
var len = seriesIndex.length;
while (len--) {
seriesPL = this.finalPLMap[seriesIndex[len]];
if (seriesPL) {
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePL = seriesPL[i];
for (var j = 0, k = singlePL.length; j < k; j++) {
if (dataIndex === singlePL[j][2]) {
tipShape.push(this._getSymbol(seriesIndex[len], singlePL[j][2], singlePL[j][3], singlePL[j][0], singlePL[j][1], 'horizontal'));
}
}
}
}
}
},
addDataAnimation: function (params) {
var series = this.series;
var aniMap = {};
for (var i = 0, l = params.length; i < l; i++) {
aniMap[params[i][0]] = params[i];
}
var x;
var dx;
var y;
var dy;
var seriesIndex;
var pointList;
var isHorizontal;
for (var i = this.shapeList.length - 1; i >= 0; i--) {
seriesIndex = this.shapeList[i]._seriesIndex;
if (aniMap[seriesIndex] && !aniMap[seriesIndex][3]) {
if (this.shapeList[i]._main && this.shapeList[i].style.pointList.length > 1) {
pointList = this.shapeList[i].style.pointList;
dx = Math.abs(pointList[0][0] - pointList[1][0]);
dy = Math.abs(pointList[0][1] - pointList[1][1]);
isHorizontal = this.shapeList[i]._orient === 'horizontal';
if (aniMap[seriesIndex][2]) {
if (this.shapeList[i].type === 'half-smooth-polygon') {
var len = pointList.length;
this.shapeList[i].style.pointList[len - 3] = pointList[len - 2];
this.shapeList[i].style.pointList[len - 3][isHorizontal ? 0 : 1] = pointList[len - 4][isHorizontal ? 0 : 1];
this.shapeList[i].style.pointList[len - 2] = pointList[len - 1];
}
this.shapeList[i].style.pointList.pop();
isHorizontal ? (x = dx, y = 0) : (x = 0, y = -dy);
} else {
this.shapeList[i].style.pointList.shift();
if (this.shapeList[i].type === 'half-smooth-polygon') {
var targetPoint = this.shapeList[i].style.pointList.pop();
isHorizontal ? targetPoint[0] = pointList[0][0] : targetPoint[1] = pointList[0][1];
this.shapeList[i].style.pointList.push(targetPoint);
}
isHorizontal ? (x = -dx, y = 0) : (x = 0, y = dy);
}
this.zr.modShape(this.shapeList[i].id, { style: { pointList: this.shapeList[i].style.pointList } }, true);
} else {
if (aniMap[seriesIndex][2] && this.shapeList[i]._dataIndex === series[seriesIndex].data.length - 1) {
this.zr.delShape(this.shapeList[i].id);
continue;
} else if (!aniMap[seriesIndex][2] && this.shapeList[i]._dataIndex === 0) {
this.zr.delShape(this.shapeList[i].id);
continue;
}
}
this.shapeList[i].position = [
0,
0
];
this.zr.animate(this.shapeList[i].id, '').when(500, {
position: [
x,
y
]
}).start();
}
}
}
};
function legendLineIcon(ctx, style, refreshNextFrame) {
var x = style.x;
var y = style.y;
var width = style.width;
var height = style.height;
var dy = height / 2;
if (style.symbol.match('empty')) {
ctx.fillStyle = '#fff';
}
style.brushType = 'both';
var symbol = style.symbol.replace('empty', '').toLowerCase();
if (symbol.match('star')) {
dy = symbol.replace('star', '') - 0 || 5;
y -= 1;
symbol = 'star';
} else if (symbol === 'rectangle' || symbol === 'arrow') {
x += (width - height) / 2;
width = height;
}
var imageLocation = '';
if (symbol.match('image')) {
imageLocation = symbol.replace(new RegExp('^image:\\/\\/'), '');
symbol = 'image';
x += Math.round((width - height) / 2) - 1;
width = height = height + 2;
}
symbol = IconShape.prototype.iconLibrary[symbol];
if (symbol) {
var x2 = style.x;
var y2 = style.y;
ctx.moveTo(x2, y2 + dy);
ctx.lineTo(x2 + 5, y2 + dy);
ctx.moveTo(x2 + style.width - 5, y2 + dy);
ctx.lineTo(x2 + style.width, y2 + dy);
var self = this;
symbol(ctx, {
x: x + 4,
y: y + 4,
width: width - 8,
height: height - 8,
n: dy,
image: imageLocation
}, function () {
self.modSelf();
refreshNextFrame();
});
} else {
ctx.moveTo(x, y + dy);
ctx.lineTo(x + width, y + dy);
}
}
IconShape.prototype.iconLibrary['legendLineIcon'] = legendLineIcon;
zrUtil.inherits(Line, ChartBase);
zrUtil.inherits(Line, ComponentBase);
require('../chart').define('line', Line);
return Line;
});define('echarts/util/shape/HalfSmoothPolygon', [
'require',
'zrender/shape/Base',
'zrender/shape/util/smoothBezier',
'zrender/tool/util',
'zrender/shape/Polygon'
], function (require) {
var Base = require('zrender/shape/Base');
var smoothBezier = require('zrender/shape/util/smoothBezier');
var zrUtil = require('zrender/tool/util');
function HalfSmoothPolygon(options) {
Base.call(this, options);
}
HalfSmoothPolygon.prototype = {
type: 'half-smooth-polygon',
buildPath: function (ctx, style) {
var pointList = style.pointList;
if (pointList.length < 2) {
return;
}
if (style.smooth) {
var controlPoints = smoothBezier(pointList.slice(0, -2), style.smooth, false, style.smoothConstraint);
ctx.moveTo(pointList[0][0], pointList[0][1]);
var cp1;
var cp2;
var p;
var l = pointList.length;
for (var i = 0; i < l - 3; i++) {
cp1 = controlPoints[i * 2];
cp2 = controlPoints[i * 2 + 1];
p = pointList[i + 1];
ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);
}
ctx.lineTo(pointList[l - 2][0], pointList[l - 2][1]);
ctx.lineTo(pointList[l - 1][0], pointList[l - 1][1]);
ctx.lineTo(pointList[0][0], pointList[0][1]);
} else {
require('zrender/shape/Polygon').prototype.buildPath(ctx, style);
}
return;
}
};
zrUtil.inherits(HalfSmoothPolygon, Base);
return HalfSmoothPolygon;
});define('echarts/chart/bar', [
'require',
'../component/base',
'./base',
'zrender/shape/Rectangle',
'../component/axis',
'../component/grid',
'../component/dataZoom',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/color',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var RectangleShape = require('zrender/shape/Rectangle');
require('../component/axis');
require('../component/grid');
require('../component/dataZoom');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
function Bar(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
Bar.prototype = {
type: ecConfig.CHART_TYPE_BAR,
_buildShape: function () {
this._bulidPosition();
},
_buildNormal: function (seriesArray, maxDataLength, locationMap, xMarkMap, orient) {
var series = this.series;
var seriesIndex = locationMap[0][0];
var serie = series[seriesIndex];
var xAxisIndex = serie.xAxisIndex;
var yAxisIndex = serie.yAxisIndex;
var categoryAxis = orient == 'horizontal' ? this.component.xAxis.getAxis(xAxisIndex) : this.component.yAxis.getAxis(yAxisIndex);
var valueAxis;
var size = this._mapSize(categoryAxis, locationMap);
var gap = size.gap;
var barGap = size.barGap;
var barWidthMap = size.barWidthMap;
var barMaxWidthMap = size.barMaxWidthMap;
var barWidth = size.barWidth;
var barMinHeightMap = size.barMinHeightMap;
var barHeight;
var curBarWidth;
var interval = size.interval;
var x;
var y;
var lastP;
var baseP;
var lastN;
var baseN;
var barShape;
var data;
var value;
for (var i = 0, l = maxDataLength; i < l; i++) {
if (categoryAxis.getNameByIndex(i) == null) {
break;
}
orient == 'horizontal' ? x = categoryAxis.getCoordByIndex(i) - gap / 2 : y = categoryAxis.getCoordByIndex(i) + gap / 2;
for (var j = 0, k = locationMap.length; j < k; j++) {
yAxisIndex = series[locationMap[j][0]].yAxisIndex || 0;
xAxisIndex = series[locationMap[j][0]].xAxisIndex || 0;
valueAxis = orient == 'horizontal' ? this.component.yAxis.getAxis(yAxisIndex) : this.component.xAxis.getAxis(xAxisIndex);
baseP = lastP = baseN = lastN = valueAxis.getCoord(0);
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
serie = series[seriesIndex];
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
xMarkMap[seriesIndex] = xMarkMap[seriesIndex] || {
min: Number.POSITIVE_INFINITY,
max: Number.NEGATIVE_INFINITY,
sum: 0,
counter: 0,
average: 0
};
if (value === '-') {
continue;
}
if (value > 0) {
barHeight = m > 0 ? valueAxis.getCoordSize(value) : orient == 'horizontal' ? baseP - valueAxis.getCoord(value) : valueAxis.getCoord(value) - baseP;
if (n === 1 && barMinHeightMap[seriesIndex] > barHeight) {
barHeight = barMinHeightMap[seriesIndex];
}
if (orient == 'horizontal') {
lastP -= barHeight;
y = lastP;
} else {
x = lastP;
lastP += barHeight;
}
} else if (value < 0) {
barHeight = m > 0 ? valueAxis.getCoordSize(value) : orient == 'horizontal' ? valueAxis.getCoord(value) - baseN : baseN - valueAxis.getCoord(value);
if (n === 1 && barMinHeightMap[seriesIndex] > barHeight) {
barHeight = barMinHeightMap[seriesIndex];
}
if (orient == 'horizontal') {
y = lastN;
lastN += barHeight;
} else {
lastN -= barHeight;
x = lastN;
}
} else {
barHeight = 0;
if (orient == 'horizontal') {
lastP -= barHeight;
y = lastP;
} else {
x = lastP;
lastP += barHeight;
}
}
var curBarWidth = Math.min(barMaxWidthMap[seriesIndex] || Number.MAX_VALUE, barWidthMap[seriesIndex] || barWidth);
xMarkMap[seriesIndex][i] = orient == 'horizontal' ? x + curBarWidth / 2 : y - curBarWidth / 2;
if (xMarkMap[seriesIndex].min > value) {
xMarkMap[seriesIndex].min = value;
if (orient == 'horizontal') {
xMarkMap[seriesIndex].minY = y;
xMarkMap[seriesIndex].minX = xMarkMap[seriesIndex][i];
} else {
xMarkMap[seriesIndex].minX = x + barHeight;
xMarkMap[seriesIndex].minY = xMarkMap[seriesIndex][i];
}
}
if (xMarkMap[seriesIndex].max < value) {
xMarkMap[seriesIndex].max = value;
if (orient == 'horizontal') {
xMarkMap[seriesIndex].maxY = y;
xMarkMap[seriesIndex].maxX = xMarkMap[seriesIndex][i];
} else {
xMarkMap[seriesIndex].maxX = x + barHeight;
xMarkMap[seriesIndex].maxY = xMarkMap[seriesIndex][i];
}
}
xMarkMap[seriesIndex].sum += value;
xMarkMap[seriesIndex].counter++;
if (i % interval === 0) {
barShape = this._getBarItem(seriesIndex, i, categoryAxis.getNameByIndex(i), x, y - (orient == 'horizontal' ? 0 : curBarWidth), orient == 'horizontal' ? curBarWidth : barHeight, orient == 'horizontal' ? barHeight : curBarWidth, orient == 'horizontal' ? 'vertical' : 'horizontal');
this.shapeList.push(new RectangleShape(barShape));
}
}
for (var m = 0, n = locationMap[j].length; m < n; m++) {
seriesIndex = locationMap[j][m];
serie = series[seriesIndex];
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
if (value != '-') {
continue;
}
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
if (orient == 'horizontal') {
lastP -= this.ecTheme.island.r;
y = lastP;
} else {
x = lastP;
lastP += this.ecTheme.island.r;
}
curBarWidth = Math.min(barMaxWidthMap[seriesIndex] || Number.MAX_VALUE, barWidthMap[seriesIndex] || barWidth);
barShape = this._getBarItem(seriesIndex, i, categoryAxis.getNameByIndex(i), x + 0.5, y + 0.5 - (orient == 'horizontal' ? 0 : curBarWidth), (orient == 'horizontal' ? curBarWidth : this.ecTheme.island.r) - 1, (orient == 'horizontal' ? this.ecTheme.island.r : curBarWidth) - 1, orient == 'horizontal' ? 'vertical' : 'horizontal');
barShape.hoverable = false;
barShape.draggable = false;
barShape.style.lineWidth = 1;
barShape.style.brushType = 'stroke';
barShape.style.strokeColor = serie.calculableHolderColor || this.ecTheme.calculableHolderColor;
this.shapeList.push(new RectangleShape(barShape));
}
}
orient == 'horizontal' ? x += curBarWidth + barGap : y -= curBarWidth + barGap;
}
}
this._calculMarkMapXY(xMarkMap, locationMap, orient == 'horizontal' ? 'y' : 'x');
},
_buildHorizontal: function (seriesArray, maxDataLength, locationMap, xMarkMap) {
return this._buildNormal(seriesArray, maxDataLength, locationMap, xMarkMap, 'horizontal');
},
_buildVertical: function (seriesArray, maxDataLength, locationMap, xMarkMap) {
return this._buildNormal(seriesArray, maxDataLength, locationMap, xMarkMap, 'vertical');
},
_buildOther: function (seriesArray, maxDataLength, locationMap, xMarkMap) {
var series = this.series;
for (var j = 0, k = locationMap.length; j < k; j++) {
for (var m = 0, n = locationMap[j].length; m < n; m++) {
var seriesIndex = locationMap[j][m];
var serie = series[seriesIndex];
var xAxisIndex = serie.xAxisIndex || 0;
var xAxis = this.component.xAxis.getAxis(xAxisIndex);
var baseX = xAxis.getCoord(0);
var yAxisIndex = serie.yAxisIndex || 0;
var yAxis = this.component.yAxis.getAxis(yAxisIndex);
var baseY = yAxis.getCoord(0);
xMarkMap[seriesIndex] = xMarkMap[seriesIndex] || {
min0: Number.POSITIVE_INFINITY,
min1: Number.POSITIVE_INFINITY,
max0: Number.NEGATIVE_INFINITY,
max1: Number.NEGATIVE_INFINITY,
sum0: 0,
sum1: 0,
counter0: 0,
counter1: 0,
average0: 0,
average1: 0
};
for (var i = 0, l = serie.data.length; i < l; i++) {
var data = serie.data[i];
var value = data != null ? data.value != null ? data.value : data : '-';
if (!(value instanceof Array)) {
continue;
}
var x = xAxis.getCoord(value[0]);
var y = yAxis.getCoord(value[1]);
var queryTarget = [
data,
serie
];
var barWidth = this.deepQuery(queryTarget, 'barWidth') || 10;
var barHeight = this.deepQuery(queryTarget, 'barHeight');
var orient;
var barShape;
if (barHeight != null) {
orient = 'horizontal';
if (value[0] > 0) {
barWidth = x - baseX;
x -= barWidth;
} else if (value[0] < 0) {
barWidth = baseX - x;
} else {
barWidth = 0;
}
barShape = this._getBarItem(seriesIndex, i, value[0], x, y - barHeight / 2, barWidth, barHeight, orient);
} else {
orient = 'vertical';
if (value[1] > 0) {
barHeight = baseY - y;
} else if (value[1] < 0) {
barHeight = y - baseY;
y -= barHeight;
} else {
barHeight = 0;
}
barShape = this._getBarItem(seriesIndex, i, value[0], x - barWidth / 2, y, barWidth, barHeight, orient);
}
this.shapeList.push(new RectangleShape(barShape));
x = xAxis.getCoord(value[0]);
y = yAxis.getCoord(value[1]);
if (xMarkMap[seriesIndex].min0 > value[0]) {
xMarkMap[seriesIndex].min0 = value[0];
xMarkMap[seriesIndex].minY0 = y;
xMarkMap[seriesIndex].minX0 = x;
}
if (xMarkMap[seriesIndex].max0 < value[0]) {
xMarkMap[seriesIndex].max0 = value[0];
xMarkMap[seriesIndex].maxY0 = y;
xMarkMap[seriesIndex].maxX0 = x;
}
xMarkMap[seriesIndex].sum0 += value[0];
xMarkMap[seriesIndex].counter0++;
if (xMarkMap[seriesIndex].min1 > value[1]) {
xMarkMap[seriesIndex].min1 = value[1];
xMarkMap[seriesIndex].minY1 = y;
xMarkMap[seriesIndex].minX1 = x;
}
if (xMarkMap[seriesIndex].max1 < value[1]) {
xMarkMap[seriesIndex].max1 = value[1];
xMarkMap[seriesIndex].maxY1 = y;
xMarkMap[seriesIndex].maxX1 = x;
}
xMarkMap[seriesIndex].sum1 += value[1];
xMarkMap[seriesIndex].counter1++;
}
}
}
this._calculMarkMapXY(xMarkMap, locationMap, 'xy');
},
_mapSize: function (categoryAxis, locationMap, ignoreUserDefined) {
var res = this._findSpecialBarSzie(locationMap, ignoreUserDefined);
var barWidthMap = res.barWidthMap;
var barMaxWidthMap = res.barMaxWidthMap;
var barMinHeightMap = res.barMinHeightMap;
var sBarWidthCounter = res.sBarWidthCounter;
var sBarWidthTotal = res.sBarWidthTotal;
var barGap = res.barGap;
var barCategoryGap = res.barCategoryGap;
var gap;
var barWidth;
var interval = 1;
if (locationMap.length != sBarWidthCounter) {
if (!ignoreUserDefined) {
gap = typeof barCategoryGap === 'string' && barCategoryGap.match(/%$/) ? Math.floor(categoryAxis.getGap() * (100 - parseFloat(barCategoryGap)) / 100) : categoryAxis.getGap() - barCategoryGap;
if (typeof barGap === 'string' && barGap.match(/%$/)) {
barGap = parseFloat(barGap) / 100;
barWidth = Math.floor((gap - sBarWidthTotal) / ((locationMap.length - 1) * barGap + locationMap.length - sBarWidthCounter));
barGap = Math.floor(barWidth * barGap);
} else {
barGap = parseFloat(barGap);
barWidth = Math.floor((gap - sBarWidthTotal - barGap * (locationMap.length - 1)) / (locationMap.length - sBarWidthCounter));
}
if (barWidth <= 0) {
return this._mapSize(categoryAxis, locationMap, true);
}
} else {
gap = categoryAxis.getGap();
barGap = 0;
barWidth = Math.floor(gap / locationMap.length);
if (barWidth <= 0) {
interval = Math.floor(locationMap.length / gap);
barWidth = 1;
}
}
} else {
gap = sBarWidthCounter > 1 ? typeof barCategoryGap === 'string' && barCategoryGap.match(/%$/) ? Math.floor(categoryAxis.getGap() * (100 - parseFloat(barCategoryGap)) / 100) : categoryAxis.getGap() - barCategoryGap : sBarWidthTotal;
barWidth = 0;
barGap = sBarWidthCounter > 1 ? Math.floor((gap - sBarWidthTotal) / (sBarWidthCounter - 1)) : 0;
if (barGap < 0) {
return this._mapSize(categoryAxis, locationMap, true);
}
}
return this._recheckBarMaxWidth(locationMap, barWidthMap, barMaxWidthMap, barMinHeightMap, gap, barWidth, barGap, interval);
},
_findSpecialBarSzie: function (locationMap, ignoreUserDefined) {
var series = this.series;
var barWidthMap = {};
var barMaxWidthMap = {};
var barMinHeightMap = {};
var sBarWidth;
var sBarMaxWidth;
var sBarWidthCounter = 0;
var sBarWidthTotal = 0;
var barGap;
var barCategoryGap;
for (var j = 0, k = locationMap.length; j < k; j++) {
var hasFound = {
barWidth: false,
barMaxWidth: false
};
for (var m = 0, n = locationMap[j].length; m < n; m++) {
var seriesIndex = locationMap[j][m];
var queryTarget = series[seriesIndex];
if (!ignoreUserDefined) {
if (!hasFound.barWidth) {
sBarWidth = this.query(queryTarget, 'barWidth');
if (sBarWidth != null) {
barWidthMap[seriesIndex] = sBarWidth;
sBarWidthTotal += sBarWidth;
sBarWidthCounter++;
hasFound.barWidth = true;
for (var ii = 0, ll = m; ii < ll; ii++) {
var pSeriesIndex = locationMap[j][ii];
barWidthMap[pSeriesIndex] = sBarWidth;
}
}
} else {
barWidthMap[seriesIndex] = sBarWidth;
}
if (!hasFound.barMaxWidth) {
sBarMaxWidth = this.query(queryTarget, 'barMaxWidth');
if (sBarMaxWidth != null) {
barMaxWidthMap[seriesIndex] = sBarMaxWidth;
hasFound.barMaxWidth = true;
for (var ii = 0, ll = m; ii < ll; ii++) {
var pSeriesIndex = locationMap[j][ii];
barMaxWidthMap[pSeriesIndex] = sBarMaxWidth;
}
}
} else {
barMaxWidthMap[seriesIndex] = sBarMaxWidth;
}
}
barMinHeightMap[seriesIndex] = this.query(queryTarget, 'barMinHeight');
barGap = barGap != null ? barGap : this.query(queryTarget, 'barGap');
barCategoryGap = barCategoryGap != null ? barCategoryGap : this.query(queryTarget, 'barCategoryGap');
}
}
return {
barWidthMap: barWidthMap,
barMaxWidthMap: barMaxWidthMap,
barMinHeightMap: barMinHeightMap,
sBarWidth: sBarWidth,
sBarMaxWidth: sBarMaxWidth,
sBarWidthCounter: sBarWidthCounter,
sBarWidthTotal: sBarWidthTotal,
barGap: barGap,
barCategoryGap: barCategoryGap
};
},
_recheckBarMaxWidth: function (locationMap, barWidthMap, barMaxWidthMap, barMinHeightMap, gap, barWidth, barGap, interval) {
for (var j = 0, k = locationMap.length; j < k; j++) {
var seriesIndex = locationMap[j][0];
if (barMaxWidthMap[seriesIndex] && barMaxWidthMap[seriesIndex] < barWidth) {
gap -= barWidth - barMaxWidthMap[seriesIndex];
}
}
return {
barWidthMap: barWidthMap,
barMaxWidthMap: barMaxWidthMap,
barMinHeightMap: barMinHeightMap,
gap: gap,
barWidth: barWidth,
barGap: barGap,
interval: interval
};
},
_getBarItem: function (seriesIndex, dataIndex, name, x, y, width, height, orient) {
var series = this.series;
var barShape;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var defaultColor = this._sIndex2ColorMap[seriesIndex];
var queryTarget = [
data,
serie
];
var normalColor = this.deepQuery(queryTarget, 'itemStyle.normal.color') || defaultColor;
var emphasisColor = this.deepQuery(queryTarget, 'itemStyle.emphasis.color');
var normal = this.deepMerge(queryTarget, 'itemStyle.normal');
var normalBorderWidth = normal.barBorderWidth;
var emphasis = this.deepMerge(queryTarget, 'itemStyle.emphasis');
barShape = {
zlevel: this._zlevelBase,
clickable: this.deepQuery(queryTarget, 'clickable'),
style: {
x: x,
y: y,
width: width,
height: height,
brushType: 'both',
color: this.getItemStyleColor(normalColor, seriesIndex, dataIndex, data),
radius: normal.barBorderRadius,
lineWidth: normalBorderWidth,
strokeColor: normal.barBorderColor
},
highlightStyle: {
color: this.getItemStyleColor(emphasisColor, seriesIndex, dataIndex, data),
radius: emphasis.barBorderRadius,
lineWidth: emphasis.barBorderWidth,
strokeColor: emphasis.barBorderColor
},
_orient: orient
};
barShape.highlightStyle.color = barShape.highlightStyle.color || (typeof barShape.style.color === 'string' ? zrColor.lift(barShape.style.color, -0.3) : barShape.style.color);
if (normalBorderWidth > 0 && barShape.style.height > normalBorderWidth && barShape.style.width > normalBorderWidth) {
barShape.style.y += normalBorderWidth / 2;
barShape.style.height -= normalBorderWidth;
barShape.style.x += normalBorderWidth / 2;
barShape.style.width -= normalBorderWidth;
} else {
barShape.style.brushType = 'fill';
}
barShape.highlightStyle.textColor = barShape.highlightStyle.color;
barShape = this.addLabel(barShape, serie, data, name, orient);
if (barShape.style.textPosition === 'insideLeft' || barShape.style.textPosition === 'insideRight' || barShape.style.textPosition === 'insideTop' || barShape.style.textPosition === 'insideBottom') {
var gap = 5;
switch (barShape.style.textPosition) {
case 'insideLeft':
barShape.style.textX = barShape.style.x + gap;
barShape.style.textY = barShape.style.y + barShape.style.height / 2;
barShape.style.textAlign = 'left';
barShape.style.textBaseline = 'middle';
break;
case 'insideRight':
barShape.style.textX = barShape.style.x + barShape.style.width - gap;
barShape.style.textY = barShape.style.y + barShape.style.height / 2;
barShape.style.textAlign = 'right';
barShape.style.textBaseline = 'middle';
break;
case 'insideTop':
barShape.style.textX = barShape.style.x + barShape.style.width / 2;
barShape.style.textY = barShape.style.y + gap / 2;
barShape.style.textAlign = 'center';
barShape.style.textBaseline = 'top';
break;
case 'insideBottom':
barShape.style.textX = barShape.style.x + barShape.style.width / 2;
barShape.style.textY = barShape.style.y + barShape.style.height - gap / 2;
barShape.style.textAlign = 'center';
barShape.style.textBaseline = 'bottom';
break;
}
barShape.style.textPosition = 'specific';
barShape.style.textColor = barShape.style.textColor || '#fff';
}
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
this.setCalculable(barShape);
barShape.draggable = true;
}
ecData.pack(barShape, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, name);
return barShape;
},
getMarkCoord: function (seriesIndex, mpData) {
var serie = this.series[seriesIndex];
var xMarkMap = this.xMarkMap[seriesIndex];
var xAxis = this.component.xAxis.getAxis(serie.xAxisIndex);
var yAxis = this.component.yAxis.getAxis(serie.yAxisIndex);
var dataIndex;
var pos;
if (mpData.type && (mpData.type === 'max' || mpData.type === 'min' || mpData.type === 'average')) {
var valueIndex = mpData.valueIndex != null ? mpData.valueIndex : xMarkMap.maxX0 != null ? '1' : '';
pos = [
xMarkMap[mpData.type + 'X' + valueIndex],
xMarkMap[mpData.type + 'Y' + valueIndex],
xMarkMap[mpData.type + 'Line' + valueIndex],
xMarkMap[mpData.type + valueIndex]
];
} else if (xMarkMap.isHorizontal) {
dataIndex = typeof mpData.xAxis === 'string' && xAxis.getIndexByName ? xAxis.getIndexByName(mpData.xAxis) : mpData.xAxis || 0;
var x = xMarkMap[dataIndex];
x = x != null ? x : typeof mpData.xAxis != 'string' && xAxis.getCoordByIndex ? xAxis.getCoordByIndex(mpData.xAxis || 0) : xAxis.getCoord(mpData.xAxis || 0);
pos = [
x,
yAxis.getCoord(mpData.yAxis || 0)
];
} else {
dataIndex = typeof mpData.yAxis === 'string' && yAxis.getIndexByName ? yAxis.getIndexByName(mpData.yAxis) : mpData.yAxis || 0;
var y = xMarkMap[dataIndex];
y = y != null ? y : typeof mpData.yAxis != 'string' && yAxis.getCoordByIndex ? yAxis.getCoordByIndex(mpData.yAxis || 0) : yAxis.getCoord(mpData.yAxis || 0);
pos = [
xAxis.getCoord(mpData.xAxis || 0),
y
];
}
return pos;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
},
addDataAnimation: function (params) {
var series = this.series;
var aniMap = {};
for (var i = 0, l = params.length; i < l; i++) {
aniMap[params[i][0]] = params[i];
}
var x;
var dx;
var y;
var dy;
var serie;
var seriesIndex;
var dataIndex;
for (var i = this.shapeList.length - 1; i >= 0; i--) {
seriesIndex = ecData.get(this.shapeList[i], 'seriesIndex');
if (aniMap[seriesIndex] && !aniMap[seriesIndex][3]) {
if (this.shapeList[i].type === 'rectangle') {
dataIndex = ecData.get(this.shapeList[i], 'dataIndex');
serie = series[seriesIndex];
if (aniMap[seriesIndex][2] && dataIndex === serie.data.length - 1) {
this.zr.delShape(this.shapeList[i].id);
continue;
} else if (!aniMap[seriesIndex][2] && dataIndex === 0) {
this.zr.delShape(this.shapeList[i].id);
continue;
}
if (this.shapeList[i]._orient === 'horizontal') {
dy = this.component.yAxis.getAxis(serie.yAxisIndex || 0).getGap();
y = aniMap[seriesIndex][2] ? -dy : dy;
x = 0;
} else {
dx = this.component.xAxis.getAxis(serie.xAxisIndex || 0).getGap();
x = aniMap[seriesIndex][2] ? dx : -dx;
y = 0;
}
this.shapeList[i].position = [
0,
0
];
this.zr.animate(this.shapeList[i].id, '').when(500, {
position: [
x,
y
]
}).start();
}
}
}
}
};
zrUtil.inherits(Bar, ChartBase);
zrUtil.inherits(Bar, ComponentBase);
require('../chart').define('bar', Bar);
return Bar;
});define('echarts/chart/scatter', [
'require',
'../component/base',
'./base',
'../util/shape/Symbol',
'../component/axis',
'../component/grid',
'../component/dataZoom',
'../component/dataRange',
'../config',
'zrender/tool/util',
'zrender/tool/color',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var SymbolShape = require('../util/shape/Symbol');
require('../component/axis');
require('../component/grid');
require('../component/dataZoom');
require('../component/dataRange');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
function Scatter(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
Scatter.prototype = {
type: ecConfig.CHART_TYPE_SCATTER,
_buildShape: function () {
var series = this.series;
this._sIndex2ColorMap = {};
this._symbol = this.option.symbolList;
this._sIndex2ShapeMap = {};
this.selectedMap = {};
this.xMarkMap = {};
var legend = this.component.legend;
var seriesArray = [];
var serie;
var serieName;
var iconShape;
var iconType;
for (var i = 0, l = series.length; i < l; i++) {
serie = series[i];
serieName = serie.name;
if (serie.type === ecConfig.CHART_TYPE_SCATTER) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
this._sIndex2ShapeMap[i] = this.query(serie, 'symbol') || this._symbol[i % this._symbol.length];
if (legend) {
this.selectedMap[serieName] = legend.isSelected(serieName);
this._sIndex2ColorMap[i] = zrColor.alpha(legend.getColor(serieName), 0.5);
iconShape = legend.getItemShape(serieName);
if (iconShape) {
var iconType = this._sIndex2ShapeMap[i];
iconShape.style.brushType = iconType.match('empty') ? 'stroke' : 'both';
iconType = iconType.replace('empty', '').toLowerCase();
if (iconType.match('rectangle')) {
iconShape.style.x += Math.round((iconShape.style.width - iconShape.style.height) / 2);
iconShape.style.width = iconShape.style.height;
}
if (iconType.match('star')) {
iconShape.style.n = iconType.replace('star', '') - 0 || 5;
iconType = 'star';
}
if (iconType.match('image')) {
iconShape.style.image = iconType.replace(new RegExp('^image:\\/\\/'), '');
iconShape.style.x += Math.round((iconShape.style.width - iconShape.style.height) / 2);
iconShape.style.width = iconShape.style.height;
iconType = 'image';
}
iconShape.style.iconType = iconType;
legend.setItemShape(serieName, iconShape);
}
} else {
this.selectedMap[serieName] = true;
this._sIndex2ColorMap[i] = zrColor.alpha(this.zr.getColor(i), 0.5);
}
if (this.selectedMap[serieName]) {
seriesArray.push(i);
}
}
}
this._buildSeries(seriesArray);
this.addShapeList();
},
_buildSeries: function (seriesArray) {
if (seriesArray.length === 0) {
return;
}
var series = this.series;
var seriesIndex;
var serie;
var data;
var value;
var xAxis;
var yAxis;
var pointList = {};
var x;
var y;
for (var j = 0, k = seriesArray.length; j < k; j++) {
seriesIndex = seriesArray[j];
serie = series[seriesIndex];
if (serie.data.length === 0) {
continue;
}
xAxis = this.component.xAxis.getAxis(serie.xAxisIndex || 0);
yAxis = this.component.yAxis.getAxis(serie.yAxisIndex || 0);
pointList[seriesIndex] = [];
for (var i = 0, l = serie.data.length; i < l; i++) {
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
if (value === '-' || value.length < 2) {
continue;
}
x = xAxis.getCoord(value[0]);
y = yAxis.getCoord(value[1]);
pointList[seriesIndex].push([
x,
y,
i,
data.name || ''
]);
}
this.xMarkMap[seriesIndex] = this._markMap(xAxis, yAxis, serie.data, pointList[seriesIndex]);
this.buildMark(seriesIndex);
}
this._buildPointList(pointList);
},
_markMap: function (xAxis, yAxis, data, pointList) {
var xMarkMap = {
min0: Number.POSITIVE_INFINITY,
max0: Number.NEGATIVE_INFINITY,
sum0: 0,
counter0: 0,
average0: 0,
min1: Number.POSITIVE_INFINITY,
max1: Number.NEGATIVE_INFINITY,
sum1: 0,
counter1: 0,
average1: 0
};
var value;
for (var i = 0, l = pointList.length; i < l; i++) {
value = data[pointList[i][2]].value || data[pointList[i][2]];
if (xMarkMap.min0 > value[0]) {
xMarkMap.min0 = value[0];
xMarkMap.minY0 = pointList[i][1];
xMarkMap.minX0 = pointList[i][0];
}
if (xMarkMap.max0 < value[0]) {
xMarkMap.max0 = value[0];
xMarkMap.maxY0 = pointList[i][1];
xMarkMap.maxX0 = pointList[i][0];
}
xMarkMap.sum0 += value[0];
xMarkMap.counter0++;
if (xMarkMap.min1 > value[1]) {
xMarkMap.min1 = value[1];
xMarkMap.minY1 = pointList[i][1];
xMarkMap.minX1 = pointList[i][0];
}
if (xMarkMap.max1 < value[1]) {
xMarkMap.max1 = value[1];
xMarkMap.maxY1 = pointList[i][1];
xMarkMap.maxX1 = pointList[i][0];
}
xMarkMap.sum1 += value[1];
xMarkMap.counter1++;
}
var gridX = this.component.grid.getX();
var gridXend = this.component.grid.getXend();
var gridY = this.component.grid.getY();
var gridYend = this.component.grid.getYend();
xMarkMap.average0 = (xMarkMap.sum0 / xMarkMap.counter0).toFixed(2) - 0;
var x = xAxis.getCoord(xMarkMap.average0);
xMarkMap.averageLine0 = [
[
x,
gridYend
],
[
x,
gridY
]
];
xMarkMap.minLine0 = [
[
xMarkMap.minX0,
gridYend
],
[
xMarkMap.minX0,
gridY
]
];
xMarkMap.maxLine0 = [
[
xMarkMap.maxX0,
gridYend
],
[
xMarkMap.maxX0,
gridY
]
];
xMarkMap.average1 = (xMarkMap.sum1 / xMarkMap.counter1).toFixed(2) - 0;
var y = yAxis.getCoord(xMarkMap.average1);
xMarkMap.averageLine1 = [
[
gridX,
y
],
[
gridXend,
y
]
];
xMarkMap.minLine1 = [
[
gridX,
xMarkMap.minY1
],
[
gridXend,
xMarkMap.minY1
]
];
xMarkMap.maxLine1 = [
[
gridX,
xMarkMap.maxY1
],
[
gridXend,
xMarkMap.maxY1
]
];
return xMarkMap;
},
_buildPointList: function (pointList) {
var series = this.series;
var serie;
var seriesPL;
var singlePoint;
var shape;
for (var seriesIndex in pointList) {
serie = series[seriesIndex];
seriesPL = pointList[seriesIndex];
if (serie.large && serie.data.length > serie.largeThreshold) {
this.shapeList.push(this._getLargeSymbol(seriesPL, this.getItemStyleColor(this.query(serie, 'itemStyle.normal.color'), seriesIndex, -1) || this._sIndex2ColorMap[seriesIndex]));
continue;
}
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePoint = seriesPL[i];
shape = this._getSymbol(seriesIndex, singlePoint[2], singlePoint[3], singlePoint[0], singlePoint[1]);
shape && this.shapeList.push(shape);
}
}
},
_getSymbol: function (seriesIndex, dataIndex, name, x, y) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var dataRange = this.component.dataRange;
var rangColor;
if (dataRange) {
rangColor = isNaN(data[2]) ? this._sIndex2ColorMap[seriesIndex] : dataRange.getColor(data[2]);
if (!rangColor) {
return null;
}
} else {
rangColor = this._sIndex2ColorMap[seriesIndex];
}
var itemShape = this.getSymbolShape(serie, seriesIndex, data, dataIndex, name, x, y, this._sIndex2ShapeMap[seriesIndex], rangColor, 'rgba(0,0,0,0)', 'vertical');
itemShape.zlevel = this._zlevelBase;
itemShape._main = true;
return itemShape;
},
_getLargeSymbol: function (pointList, nColor) {
return new SymbolShape({
zlevel: this._zlevelBase,
_main: true,
hoverable: false,
style: {
pointList: pointList,
color: nColor,
strokeColor: nColor
},
highlightStyle: { pointList: [] }
});
},
getMarkCoord: function (seriesIndex, mpData) {
var serie = this.series[seriesIndex];
var xMarkMap = this.xMarkMap[seriesIndex];
var xAxis = this.component.xAxis.getAxis(serie.xAxisIndex);
var yAxis = this.component.yAxis.getAxis(serie.yAxisIndex);
var pos;
if (mpData.type && (mpData.type === 'max' || mpData.type === 'min' || mpData.type === 'average')) {
var valueIndex = mpData.valueIndex != null ? mpData.valueIndex : 1;
pos = [
xMarkMap[mpData.type + 'X' + valueIndex],
xMarkMap[mpData.type + 'Y' + valueIndex],
xMarkMap[mpData.type + 'Line' + valueIndex],
xMarkMap[mpData.type + valueIndex]
];
} else {
pos = [
typeof mpData.xAxis != 'string' && xAxis.getCoordByIndex ? xAxis.getCoordByIndex(mpData.xAxis || 0) : xAxis.getCoord(mpData.xAxis || 0),
typeof mpData.yAxis != 'string' && yAxis.getCoordByIndex ? yAxis.getCoordByIndex(mpData.yAxis || 0) : yAxis.getCoord(mpData.yAxis || 0)
];
}
return pos;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
},
ondataRange: function (param, status) {
if (this.component.dataRange) {
this.refresh();
status.needRefresh = true;
}
return;
}
};
zrUtil.inherits(Scatter, ChartBase);
zrUtil.inherits(Scatter, ComponentBase);
require('../chart').define('scatter', Scatter);
return Scatter;
});define('echarts/component/dataRange', [
'require',
'./base',
'zrender/shape/Text',
'zrender/shape/Rectangle',
'../util/shape/HandlePolygon',
'../config',
'zrender/tool/util',
'zrender/tool/event',
'zrender/tool/area',
'zrender/tool/color',
'../component'
], function (require) {
var Base = require('./base');
var TextShape = require('zrender/shape/Text');
var RectangleShape = require('zrender/shape/Rectangle');
var HandlePolygonShape = require('../util/shape/HandlePolygon');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrEvent = require('zrender/tool/event');
var zrArea = require('zrender/tool/area');
var zrColor = require('zrender/tool/color');
function DataRange(ecTheme, messageCenter, zr, option, myChart) {
if (typeof this.query(option, 'dataRange.min') == 'undefined' || typeof this.query(option, 'dataRange.max') == 'undefined') {
console.error('option.dataRange.min or option.dataRange.max has not been defined.');
return;
}
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
var self = this;
self._ondrift = function (dx, dy) {
return self.__ondrift(this, dx, dy);
};
self._ondragend = function () {
return self.__ondragend();
};
self._dataRangeSelected = function (param) {
return self.__dataRangeSelected(param);
};
self._dispatchHoverLink = function (param) {
return self.__dispatchHoverLink(param);
};
self._onhoverlink = function (params) {
return self.__onhoverlink(params);
};
this._selectedMap = {};
this._range = {};
this.refresh(option);
messageCenter.bind(ecConfig.EVENT.HOVER, this._onhoverlink);
}
DataRange.prototype = {
type: ecConfig.COMPONENT_TYPE_DATARANGE,
_textGap: 10,
_buildShape: function () {
this._itemGroupLocation = this._getItemGroupLocation();
this._buildBackground();
if (this.dataRangeOption.splitNumber <= 0 || this.dataRangeOption.calculable) {
this._buildGradient();
} else {
this._buildItem();
}
if (this.dataRangeOption.show) {
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
}
this._syncShapeFromRange();
},
_buildItem: function () {
var data = this._valueTextList;
var dataLength = data.length;
var itemName;
var itemShape;
var textShape;
var font = this.getFont(this.dataRangeOption.textStyle);
var lastX = this._itemGroupLocation.x;
var lastY = this._itemGroupLocation.y;
var itemWidth = this.dataRangeOption.itemWidth;
var itemHeight = this.dataRangeOption.itemHeight;
var itemGap = this.dataRangeOption.itemGap;
var textHeight = zrArea.getTextHeight('国', font);
var color;
if (this.dataRangeOption.orient == 'vertical' && this.dataRangeOption.x == 'right') {
lastX = this._itemGroupLocation.x + this._itemGroupLocation.width - itemWidth;
}
var needValueText = true;
if (this.dataRangeOption.text) {
needValueText = false;
if (this.dataRangeOption.text[0]) {
textShape = this._getTextShape(lastX, lastY, this.dataRangeOption.text[0]);
if (this.dataRangeOption.orient == 'horizontal') {
lastX += zrArea.getTextWidth(this.dataRangeOption.text[0], font) + this._textGap;
} else {
lastY += textHeight + this._textGap;
textShape.style.y += textHeight / 2 + this._textGap;
textShape.style.textBaseline = 'bottom';
}
this.shapeList.push(new TextShape(textShape));
}
}
for (var i = 0; i < dataLength; i++) {
itemName = data[i];
color = this.getColorByIndex(i);
itemShape = this._getItemShape(lastX, lastY, itemWidth, itemHeight, this._selectedMap[i] ? color : '#ccc');
itemShape._idx = i;
itemShape.onmousemove = this._dispatchHoverLink;
itemShape.onclick = this._dataRangeSelected;
this.shapeList.push(new RectangleShape(itemShape));
if (needValueText) {
textShape = {
zlevel: this._zlevelBase,
style: {
x: lastX + itemWidth + 5,
y: lastY,
color: this._selectedMap[i] ? this.dataRangeOption.textStyle.color : '#ccc',
text: data[i],
textFont: font,
textBaseline: 'top'
},
highlightStyle: { brushType: 'fill' },
clickable: true
};
if (this.dataRangeOption.orient == 'vertical' && this.dataRangeOption.x == 'right') {
textShape.style.x -= itemWidth + 10;
textShape.style.textAlign = 'right';
}
textShape._idx = i;
textShape.onclick = this._dataRangeSelected;
this.shapeList.push(new TextShape(textShape));
}
if (this.dataRangeOption.orient == 'horizontal') {
lastX += itemWidth + (needValueText ? 5 : 0) + (needValueText ? zrArea.getTextWidth(itemName, font) : 0) + itemGap;
} else {
lastY += itemHeight + itemGap;
}
}
if (!needValueText && this.dataRangeOption.text[1]) {
if (this.dataRangeOption.orient == 'horizontal') {
lastX = lastX - itemGap + this._textGap;
} else {
lastY = lastY - itemGap + this._textGap;
}
textShape = this._getTextShape(lastX, lastY, this.dataRangeOption.text[1]);
if (this.dataRangeOption.orient != 'horizontal') {
textShape.style.y -= 5;
textShape.style.textBaseline = 'top';
}
this.shapeList.push(new TextShape(textShape));
}
},
_buildGradient: function () {
var itemShape;
var textShape;
var font = this.getFont(this.dataRangeOption.textStyle);
var lastX = this._itemGroupLocation.x;
var lastY = this._itemGroupLocation.y;
var itemWidth = this.dataRangeOption.itemWidth;
var itemHeight = this.dataRangeOption.itemHeight;
var textHeight = zrArea.getTextHeight('国', font);
var needValueText = true;
if (this.dataRangeOption.text) {
needValueText = false;
if (this.dataRangeOption.text[0]) {
textShape = this._getTextShape(lastX, lastY, this.dataRangeOption.text[0]);
if (this.dataRangeOption.orient == 'horizontal') {
lastX += zrArea.getTextWidth(this.dataRangeOption.text[0], font) + this._textGap;
} else {
lastY += textHeight + this._textGap;
textShape.style.y += textHeight / 2 + this._textGap;
textShape.style.textBaseline = 'bottom';
}
this.shapeList.push(new TextShape(textShape));
}
}
var zrColor = require('zrender/tool/color');
var per = 1 / (this.dataRangeOption.color.length - 1);
var colorList = [];
for (var i = 0, l = this.dataRangeOption.color.length; i < l; i++) {
colorList.push([
i * per,
this.dataRangeOption.color[i]
]);
}
if (this.dataRangeOption.orient == 'horizontal') {
itemShape = {
zlevel: this._zlevelBase,
style: {
x: lastX,
y: lastY,
width: itemWidth * 10,
height: itemHeight,
color: zrColor.getLinearGradient(lastX, lastY, lastX + itemWidth * 10, lastY, colorList)
},
hoverable: false
};
lastX += itemWidth * 10 + this._textGap;
} else {
itemShape = {
zlevel: this._zlevelBase,
style: {
x: lastX,
y: lastY,
width: itemWidth,
height: itemHeight * 10,
color: zrColor.getLinearGradient(lastX, lastY, lastX, lastY + itemHeight * 10, colorList)
},
hoverable: false
};
lastY += itemHeight * 10 + this._textGap;
}
this.shapeList.push(new RectangleShape(itemShape));
this._calculableLocation = itemShape.style;
if (this.dataRangeOption.calculable) {
this._buildFiller();
this._bulidMask();
this._bulidHandle();
}
this._buildIndicator();
if (!needValueText && this.dataRangeOption.text[1]) {
textShape = this._getTextShape(lastX, lastY, this.dataRangeOption.text[1]);
this.shapeList.push(new TextShape(textShape));
}
},
_buildIndicator: function () {
var x = this._calculableLocation.x;
var y = this._calculableLocation.y;
var width = this._calculableLocation.width;
var height = this._calculableLocation.height;
var size = 5;
var pointList;
var textPosition;
if (this.dataRangeOption.orient == 'horizontal') {
if (this.dataRangeOption.y != 'bottom') {
pointList = [
[
x,
y + height
],
[
x - size,
y + height + size
],
[
x + size,
y + height + size
]
];
textPosition = 'bottom';
} else {
pointList = [
[
x,
y
],
[
x - size,
y - size
],
[
x + size,
y - size
]
];
textPosition = 'top';
}
} else {
if (this.dataRangeOption.x != 'right') {
pointList = [
[
x + width,
y
],
[
x + width + size,
y - size
],
[
x + width + size,
y + size
]
];
textPosition = 'right';
} else {
pointList = [
[
x,
y
],
[
x - size,
y - size
],
[
x - size,
y + size
]
];
textPosition = 'left';
}
}
this._indicatorShape = {
style: {
pointList: pointList,
color: '#fff',
__rect: {
x: Math.min(pointList[0][0], pointList[1][0]),
y: Math.min(pointList[0][1], pointList[1][1]),
width: size * (this.dataRangeOption.orient == 'horizontal' ? 2 : 1),
height: size * (this.dataRangeOption.orient == 'horizontal' ? 1 : 2)
}
},
highlightStyle: {
brushType: 'fill',
textPosition: textPosition,
textColor: this.dataRangeOption.textStyle.color
},
hoverable: false
};
this._indicatorShape = new HandlePolygonShape(this._indicatorShape);
},
_buildFiller: function () {
this._fillerShape = {
zlevel: this._zlevelBase + 1,
style: {
x: this._calculableLocation.x,
y: this._calculableLocation.y,
width: this._calculableLocation.width,
height: this._calculableLocation.height,
color: 'rgba(255,255,255,0)'
},
highlightStyle: {
strokeColor: 'rgba(255,255,255,0.5)',
lineWidth: 1
},
draggable: true,
ondrift: this._ondrift,
ondragend: this._ondragend,
onmousemove: this._dispatchHoverLink,
_type: 'filler'
};
this._fillerShape = new RectangleShape(this._fillerShape);
this.shapeList.push(this._fillerShape);
},
_bulidHandle: function () {
var x = this._calculableLocation.x;
var y = this._calculableLocation.y;
var width = this._calculableLocation.width;
var height = this._calculableLocation.height;
var font = this.getFont(this.dataRangeOption.textStyle);
var textHeight = zrArea.getTextHeight('国', font);
var textWidth = Math.max(zrArea.getTextWidth(this._textFormat(this.dataRangeOption.max), font), zrArea.getTextWidth(this._textFormat(this.dataRangeOption.min), font)) + 2;
var pointListStart;
var textXStart;
var textYStart;
var coverRectStart;
var pointListEnd;
var textXEnd;
var textYEnd;
var coverRectEnd;
if (this.dataRangeOption.orient == 'horizontal') {
if (this.dataRangeOption.y != 'bottom') {
pointListStart = [
[
x,
y
],
[
x,
y + height + textHeight
],
[
x - textHeight,
y + height + textHeight
],
[
x - 1,
y + height
],
[
x - 1,
y
]
];
textXStart = x - textWidth / 2 - textHeight;
textYStart = y + height + textHeight / 2 + 2;
coverRectStart = {
x: x - textWidth - textHeight,
y: y + height,
width: textWidth + textHeight,
height: textHeight
};
pointListEnd = [
[
x + width,
y
],
[
x + width,
y + height + textHeight
],
[
x + width + textHeight,
y + height + textHeight
],
[
x + width + 1,
y + height
],
[
x + width + 1,
y
]
];
textXEnd = x + width + textWidth / 2 + textHeight;
textYEnd = textYStart;
coverRectEnd = {
x: x + width,
y: y + height,
width: textWidth + textHeight,
height: textHeight
};
} else {
pointListStart = [
[
x,
y + height
],
[
x,
y - textHeight
],
[
x - textHeight,
y - textHeight
],
[
x - 1,
y
],
[
x - 1,
y + height
]
];
textXStart = x - textWidth / 2 - textHeight;
textYStart = y - textHeight / 2 - 2;
coverRectStart = {
x: x - textWidth - textHeight,
y: y - textHeight,
width: textWidth + textHeight,
height: textHeight
};
pointListEnd = [
[
x + width,
y + height
],
[
x + width,
y - textHeight
],
[
x + width + textHeight,
y - textHeight
],
[
x + width + 1,
y
],
[
x + width + 1,
y + height
]
];
textXEnd = x + width + textWidth / 2 + textHeight;
textYEnd = textYStart;
coverRectEnd = {
x: x + width,
y: y - textHeight,
width: textWidth + textHeight,
height: textHeight
};
}
} else {
textWidth += textHeight;
if (this.dataRangeOption.x != 'right') {
pointListStart = [
[
x,
y
],
[
x + width + textHeight,
y
],
[
x + width + textHeight,
y - textHeight
],
[
x + width,
y - 1
],
[
x,
y - 1
]
];
textXStart = x + width + textWidth / 2 + textHeight / 2;
textYStart = y - textHeight / 2;
coverRectStart = {
x: x + width,
y: y - textHeight,
width: textWidth + textHeight,
height: textHeight
};
pointListEnd = [
[
x,
y + height
],
[
x + width + textHeight,
y + height
],
[
x + width + textHeight,
y + textHeight + height
],
[
x + width,
y + 1 + height
],
[
x,
y + height + 1
]
];
textXEnd = textXStart;
textYEnd = y + height + textHeight / 2;
coverRectEnd = {
x: x + width,
y: y + height,
width: textWidth + textHeight,
height: textHeight
};
} else {
pointListStart = [
[
x + width,
y
],
[
x - textHeight,
y
],
[
x - textHeight,
y - textHeight
],
[
x,
y - 1
],
[
x + width,
y - 1
]
];
textXStart = x - textWidth / 2 - textHeight / 2;
textYStart = y - textHeight / 2;
coverRectStart = {
x: x - textWidth - textHeight,
y: y - textHeight,
width: textWidth + textHeight,
height: textHeight
};
pointListEnd = [
[
x + width,
y + height
],
[
x - textHeight,
y + height
],
[
x - textHeight,
y + textHeight + height
],
[
x,
y + 1 + height
],
[
x + width,
y + height + 1
]
];
textXEnd = textXStart;
textYEnd = y + height + textHeight / 2;
coverRectEnd = {
x: x - textWidth - textHeight,
y: y + height,
width: textWidth + textHeight,
height: textHeight
};
}
}
this._startShape = {
style: {
pointList: pointListStart,
text: this._textFormat(this.dataRangeOption.max),
textX: textXStart,
textY: textYStart,
color: this.getColor(this.dataRangeOption.max),
rect: coverRectStart,
x: pointListStart[0][0],
y: pointListStart[0][1],
_x: pointListStart[0][0],
_y: pointListStart[0][1]
}
};
this._startShape.highlightStyle = {
strokeColor: this._startShape.style.color,
lineWidth: 1
};
this._endShape = {
style: {
pointList: pointListEnd,
text: this._textFormat(this.dataRangeOption.min),
textX: textXEnd,
textY: textYEnd,
color: this.getColor(this.dataRangeOption.min),
rect: coverRectEnd,
x: pointListEnd[0][0],
y: pointListEnd[0][1],
_x: pointListEnd[0][0],
_y: pointListEnd[0][1]
}
};
this._endShape.highlightStyle = {
strokeColor: this._endShape.style.color,
lineWidth: 1
};
this._startShape.zlevel = this._endShape.zlevel = this._zlevelBase + 1;
this._startShape.draggable = this._endShape.draggable = true;
this._startShape.ondrift = this._endShape.ondrift = this._ondrift;
this._startShape.ondragend = this._endShape.ondragend = this._ondragend;
this._startShape.style.textColor = this._endShape.style.textColor = this.dataRangeOption.textStyle.color;
this._startShape.style.textAlign = this._endShape.style.textAlign = 'center';
this._startShape.style.textPosition = this._endShape.style.textPosition = 'specific';
this._startShape.style.textBaseline = this._endShape.style.textBaseline = 'middle';
this._startShape.style.width = this._endShape.style.width = 0;
this._startShape.style.height = this._endShape.style.height = 0;
this._startShape.style.textPosition = this._endShape.style.textPosition = 'specific';
this._startShape = new HandlePolygonShape(this._startShape);
this._endShape = new HandlePolygonShape(this._endShape);
this.shapeList.push(this._startShape);
this.shapeList.push(this._endShape);
},
_bulidMask: function () {
var x = this._calculableLocation.x;
var y = this._calculableLocation.y;
var width = this._calculableLocation.width;
var height = this._calculableLocation.height;
this._startMask = {
zlevel: this._zlevelBase + 1,
style: {
x: x,
y: y,
width: this.dataRangeOption.orient == 'horizontal' ? 0 : width,
height: this.dataRangeOption.orient == 'horizontal' ? height : 0,
color: '#ccc'
},
hoverable: false
};
this._endMask = {
zlevel: this._zlevelBase + 1,
style: {
x: this.dataRangeOption.orient == 'horizontal' ? x + width : x,
y: this.dataRangeOption.orient == 'horizontal' ? y : y + height,
width: this.dataRangeOption.orient == 'horizontal' ? 0 : width,
height: this.dataRangeOption.orient == 'horizontal' ? height : 0,
color: '#ccc'
},
hoverable: false
};
this._startMask = new RectangleShape(this._startMask);
this._endMask = new RectangleShape(this._endMask);
this.shapeList.push(this._startMask);
this.shapeList.push(this._endMask);
},
_buildBackground: function () {
var padding = this.reformCssArray(this.dataRangeOption.padding);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._itemGroupLocation.x - padding[3],
y: this._itemGroupLocation.y - padding[0],
width: this._itemGroupLocation.width + padding[3] + padding[1],
height: this._itemGroupLocation.height + padding[0] + padding[2],
brushType: this.dataRangeOption.borderWidth === 0 ? 'fill' : 'both',
color: this.dataRangeOption.backgroundColor,
strokeColor: this.dataRangeOption.borderColor,
lineWidth: this.dataRangeOption.borderWidth
}
}));
},
_getItemGroupLocation: function () {
var data = this._valueTextList;
var dataLength = data.length;
var itemGap = this.dataRangeOption.itemGap;
var itemWidth = this.dataRangeOption.itemWidth;
var itemHeight = this.dataRangeOption.itemHeight;
var totalWidth = 0;
var totalHeight = 0;
var font = this.getFont(this.dataRangeOption.textStyle);
var textHeight = zrArea.getTextHeight('国', font);
if (this.dataRangeOption.orient == 'horizontal') {
if (this.dataRangeOption.text || this.dataRangeOption.splitNumber <= 0 || this.dataRangeOption.calculable) {
totalWidth = (this.dataRangeOption.splitNumber <= 0 || this.dataRangeOption.calculable ? itemWidth * 10 + itemGap : dataLength * (itemWidth + itemGap)) + (this.dataRangeOption.text && typeof this.dataRangeOption.text[0] != 'undefined' ? zrArea.getTextWidth(this.dataRangeOption.text[0], font) + this._textGap : 0) + (this.dataRangeOption.text && typeof this.dataRangeOption.text[1] != 'undefined' ? zrArea.getTextWidth(this.dataRangeOption.text[1], font) + this._textGap : 0);
} else {
itemWidth += 5;
for (var i = 0; i < dataLength; i++) {
totalWidth += itemWidth + zrArea.getTextWidth(data[i], font) + itemGap;
}
}
totalWidth -= itemGap;
totalHeight = Math.max(textHeight, itemHeight);
} else {
var maxWidth;
if (this.dataRangeOption.text || this.dataRangeOption.splitNumber <= 0 || this.dataRangeOption.calculable) {
totalHeight = (this.dataRangeOption.splitNumber <= 0 || this.dataRangeOption.calculable ? itemHeight * 10 + itemGap : dataLength * (itemHeight + itemGap)) + (this.dataRangeOption.text && typeof this.dataRangeOption.text[0] != 'undefined' ? this._textGap + textHeight : 0) + (this.dataRangeOption.text && typeof this.dataRangeOption.text[1] != 'undefined' ? this._textGap + textHeight : 0);
maxWidth = Math.max(zrArea.getTextWidth(this.dataRangeOption.text && this.dataRangeOption.text[0] || '', font), zrArea.getTextWidth(this.dataRangeOption.text && this.dataRangeOption.text[1] || '', font));
totalWidth = Math.max(itemWidth, maxWidth);
} else {
totalHeight = (itemHeight + itemGap) * dataLength;
itemWidth += 5;
maxWidth = 0;
for (var i = 0; i < dataLength; i++) {
maxWidth = Math.max(maxWidth, zrArea.getTextWidth(data[i], font));
}
totalWidth = itemWidth + maxWidth;
}
totalHeight -= itemGap;
}
var padding = this.reformCssArray(this.dataRangeOption.padding);
var x;
var zrWidth = this.zr.getWidth();
switch (this.dataRangeOption.x) {
case 'center':
x = Math.floor((zrWidth - totalWidth) / 2);
break;
case 'left':
x = padding[3] + this.dataRangeOption.borderWidth;
break;
case 'right':
x = zrWidth - totalWidth - padding[1] - this.dataRangeOption.borderWidth;
break;
default:
x = this.parsePercent(this.dataRangeOption.x, zrWidth);
x = isNaN(x) ? 0 : x;
break;
}
var y;
var zrHeight = this.zr.getHeight();
switch (this.dataRangeOption.y) {
case 'top':
y = padding[0] + this.dataRangeOption.borderWidth;
break;
case 'bottom':
y = zrHeight - totalHeight - padding[2] - this.dataRangeOption.borderWidth;
break;
case 'center':
y = Math.floor((zrHeight - totalHeight) / 2);
break;
default:
y = this.parsePercent(this.dataRangeOption.y, zrHeight);
y = isNaN(y) ? 0 : y;
break;
}
if (this.dataRangeOption.calculable) {
var handlerWidth = Math.max(zrArea.getTextWidth(this.dataRangeOption.max, font), zrArea.getTextWidth(this.dataRangeOption.min, font)) + textHeight;
if (this.dataRangeOption.orient == 'horizontal') {
if (x < handlerWidth) {
x = handlerWidth;
}
if (x + totalWidth + handlerWidth > zrWidth) {
x -= handlerWidth;
}
} else {
if (y < textHeight) {
y = textHeight;
}
if (y + totalHeight + textHeight > zrHeight) {
y -= textHeight;
}
}
}
return {
x: x,
y: y,
width: totalWidth,
height: totalHeight
};
},
_getTextShape: function (x, y, text) {
return {
zlevel: this._zlevelBase,
style: {
x: this.dataRangeOption.orient == 'horizontal' ? x : this._itemGroupLocation.x + this._itemGroupLocation.width / 2,
y: this.dataRangeOption.orient == 'horizontal' ? this._itemGroupLocation.y + this._itemGroupLocation.height / 2 : y,
color: this.dataRangeOption.textStyle.color,
text: text,
textFont: this.getFont(this.dataRangeOption.textStyle),
textBaseline: this.dataRangeOption.orient == 'horizontal' ? 'middle' : 'top',
textAlign: this.dataRangeOption.orient == 'horizontal' ? 'left' : 'center'
},
hoverable: false
};
},
_getItemShape: function (x, y, width, height, color) {
return {
zlevel: this._zlevelBase,
style: {
x: x,
y: y + 1,
width: width,
height: height - 2,
color: color
},
highlightStyle: {
strokeColor: color,
lineWidth: 1
},
clickable: true
};
},
__ondrift: function (shape, dx, dy) {
var x = this._calculableLocation.x;
var y = this._calculableLocation.y;
var width = this._calculableLocation.width;
var height = this._calculableLocation.height;
if (this.dataRangeOption.orient == 'horizontal') {
if (shape.style.x + dx <= x) {
shape.style.x = x;
} else if (shape.style.x + dx + shape.style.width >= x + width) {
shape.style.x = x + width - shape.style.width;
} else {
shape.style.x += dx;
}
} else {
if (shape.style.y + dy <= y) {
shape.style.y = y;
} else if (shape.style.y + dy + shape.style.height >= y + height) {
shape.style.y = y + height - shape.style.height;
} else {
shape.style.y += dy;
}
}
if (shape._type == 'filler') {
this._syncHandleShape();
} else {
this._syncFillerShape(shape);
}
if (this.dataRangeOption.realtime) {
this._syncData();
}
return true;
},
__ondragend: function () {
this.isDragend = true;
},
ondragend: function (param, status) {
if (!this.isDragend || !param.target) {
return;
}
!this.dataRangeOption.realtime && this._syncData();
status.dragOut = true;
status.dragIn = true;
if (!this.dataRangeOption.realtime) {
this.messageCenter.dispatch(ecConfig.EVENT.DATA_RANGE, null, {
range: {
start: this._range.end,
end: this._range.start
}
}, this.myChart);
}
status.needRefresh = false;
this.isDragend = false;
return;
},
_syncShapeFromRange: function () {
var range = this.dataRangeOption.range || {};
this._range.end = typeof this._range.end != 'undefined' ? this._range.end : typeof range.start != 'undefined' ? range.start : 0;
this._range.start = typeof this._range.start != 'undefined' ? this._range.start : typeof range.end != 'undefined' ? range.end : 100;
if (this._range.start != 100 || this._range.end !== 0) {
if (this.dataRangeOption.orient == 'horizontal') {
var width = this._fillerShape.style.width;
this._fillerShape.style.x += width * (100 - this._range.start) / 100;
this._fillerShape.style.width = width * (this._range.start - this._range.end) / 100;
} else {
var height = this._fillerShape.style.height;
this._fillerShape.style.y += height * (100 - this._range.start) / 100;
this._fillerShape.style.height = height * (this._range.start - this._range.end) / 100;
}
this.zr.modShape(this._fillerShape.id);
this._syncHandleShape();
}
},
_syncHandleShape: function () {
var x = this._calculableLocation.x;
var y = this._calculableLocation.y;
var width = this._calculableLocation.width;
var height = this._calculableLocation.height;
if (this.dataRangeOption.orient == 'horizontal') {
this._startShape.style.x = this._fillerShape.style.x;
this._startMask.style.width = this._startShape.style.x - x;
this._endShape.style.x = this._fillerShape.style.x + this._fillerShape.style.width;
this._endMask.style.x = this._endShape.style.x;
this._endMask.style.width = x + width - this._endShape.style.x;
this._range.start = Math.ceil(100 - (this._startShape.style.x - x) / width * 100);
this._range.end = Math.floor(100 - (this._endShape.style.x - x) / width * 100);
} else {
this._startShape.style.y = this._fillerShape.style.y;
this._startMask.style.height = this._startShape.style.y - y;
this._endShape.style.y = this._fillerShape.style.y + this._fillerShape.style.height;
this._endMask.style.y = this._endShape.style.y;
this._endMask.style.height = y + height - this._endShape.style.y;
this._range.start = Math.ceil(100 - (this._startShape.style.y - y) / height * 100);
this._range.end = Math.floor(100 - (this._endShape.style.y - y) / height * 100);
}
this._syncShape();
},
_syncFillerShape: function (e) {
var x = this._calculableLocation.x;
var y = this._calculableLocation.y;
var width = this._calculableLocation.width;
var height = this._calculableLocation.height;
var a;
var b;
if (this.dataRangeOption.orient == 'horizontal') {
a = this._startShape.style.x;
b = this._endShape.style.x;
if (e.id == this._startShape.id && a >= b) {
b = a;
this._endShape.style.x = a;
} else if (e.id == this._endShape.id && a >= b) {
a = b;
this._startShape.style.x = a;
}
this._fillerShape.style.x = a;
this._fillerShape.style.width = b - a;
this._startMask.style.width = a - x;
this._endMask.style.x = b;
this._endMask.style.width = x + width - b;
this._range.start = Math.ceil(100 - (a - x) / width * 100);
this._range.end = Math.floor(100 - (b - x) / width * 100);
} else {
a = this._startShape.style.y;
b = this._endShape.style.y;
if (e.id == this._startShape.id && a >= b) {
b = a;
this._endShape.style.y = a;
} else if (e.id == this._endShape.id && a >= b) {
a = b;
this._startShape.style.y = a;
}
this._fillerShape.style.y = a;
this._fillerShape.style.height = b - a;
this._startMask.style.height = a - y;
this._endMask.style.y = b;
this._endMask.style.height = y + height - b;
this._range.start = Math.ceil(100 - (a - y) / height * 100);
this._range.end = Math.floor(100 - (b - y) / height * 100);
}
this._syncShape();
},
_syncShape: function () {
this._startShape.position = [
this._startShape.style.x - this._startShape.style._x,
this._startShape.style.y - this._startShape.style._y
];
this._startShape.style.text = this._textFormat(this._gap * this._range.start + this.dataRangeOption.min);
this._startShape.style.color = this._startShape.highlightStyle.strokeColor = this.getColor(this._gap * this._range.start + this.dataRangeOption.min);
this._endShape.position = [
this._endShape.style.x - this._endShape.style._x,
this._endShape.style.y - this._endShape.style._y
];
this._endShape.style.text = this._textFormat(this._gap * this._range.end + this.dataRangeOption.min);
this._endShape.style.color = this._endShape.highlightStyle.strokeColor = this.getColor(this._gap * this._range.end + this.dataRangeOption.min);
this.zr.modShape(this._startShape.id);
this.zr.modShape(this._endShape.id);
this.zr.modShape(this._startMask.id);
this.zr.modShape(this._endMask.id);
this.zr.modShape(this._fillerShape.id);
this.zr.refresh();
},
_syncData: function () {
if (this.dataRangeOption.realtime) {
this.messageCenter.dispatch(ecConfig.EVENT.DATA_RANGE, null, {
range: {
start: this._range.end,
end: this._range.start
}
}, this.myChart);
}
},
__dataRangeSelected: function (param) {
var idx = param.target._idx;
this._selectedMap[idx] = !this._selectedMap[idx];
this.messageCenter.dispatch(ecConfig.EVENT.REFRESH, null, null, this.myChart);
},
__dispatchHoverLink: function (param) {
var valueMin;
var valueMax;
if (this.dataRangeOption.calculable) {
var totalValue = this.dataRangeOption.max - this.dataRangeOption.min;
var curValue;
if (this.dataRangeOption.orient == 'horizontal') {
curValue = (1 - (zrEvent.getX(param.event) - this._calculableLocation.x) / this._calculableLocation.width) * totalValue;
} else {
curValue = (1 - (zrEvent.getY(param.event) - this._calculableLocation.y) / this._calculableLocation.height) * totalValue;
}
valueMin = curValue - totalValue * 0.05;
valueMax = curValue + totalValue * 0.05;
} else {
var idx = param.target._idx;
valueMax = (this._colorList.length - idx) * this._gap + this.dataRangeOption.min;
valueMin = valueMax - this._gap;
}
this.messageCenter.dispatch(ecConfig.EVENT.DATA_RANGE_HOVERLINK, param.event, {
valueMin: valueMin,
valueMax: valueMax
}, this.myChart);
return;
},
__onhoverlink: function (param) {
if (this.dataRangeOption.show && this.dataRangeOption.hoverLink && this._indicatorShape && param && param.seriesIndex != null && param.dataIndex != null) {
var curValue = param.value;
if (isNaN(curValue)) {
return;
}
if (curValue < this.dataRangeOption.min) {
curValue = this.dataRangeOption.min;
} else if (curValue > this.dataRangeOption.max) {
curValue = this.dataRangeOption.max;
}
if (this.dataRangeOption.orient == 'horizontal') {
this._indicatorShape.position = [
(this.dataRangeOption.max - curValue) / (this.dataRangeOption.max - this.dataRangeOption.min) * this._calculableLocation.width,
0
];
} else {
this._indicatorShape.position = [
0,
(this.dataRangeOption.max - curValue) / (this.dataRangeOption.max - this.dataRangeOption.min) * this._calculableLocation.height
];
}
this._indicatorShape.style.text = param.value;
this._indicatorShape.style.color = this.getColor(curValue);
this.zr.addHoverShape(this._indicatorShape);
}
},
_textFormat: function (valueStart, valueEnd) {
valueStart = valueStart.toFixed(this.dataRangeOption.precision);
valueEnd = typeof valueEnd != 'undefined' ? valueEnd.toFixed(this.dataRangeOption.precision) : '';
if (this.dataRangeOption.formatter) {
if (typeof this.dataRangeOption.formatter == 'string') {
return this.dataRangeOption.formatter.replace('{value}', valueStart).replace('{value2}', valueEnd);
} else if (typeof this.dataRangeOption.formatter == 'function') {
return this.dataRangeOption.formatter.call(this.myChart, valueStart, valueEnd);
}
}
if (valueEnd !== '') {
return valueStart + ' - ' + valueEnd;
}
return valueStart;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.option.dataRange = this.reformOption(this.option.dataRange);
this.dataRangeOption = this.option.dataRange;
if (!this.myChart.canvasSupported) {
this.dataRangeOption.realtime = false;
}
var splitNumber = this.dataRangeOption.splitNumber <= 0 || this.dataRangeOption.calculable ? 100 : this.dataRangeOption.splitNumber;
this._colorList = zrColor.getGradientColors(this.dataRangeOption.color, Math.max((splitNumber - this.dataRangeOption.color.length) / (this.dataRangeOption.color.length - 1), 0) + 1);
if (this._colorList.length > splitNumber) {
var len = this._colorList.length;
var newColorList = [this._colorList[0]];
var step = len / (splitNumber - 1);
for (var i = 1; i < splitNumber - 1; i++) {
newColorList.push(this._colorList[Math.floor(i * step)]);
}
newColorList.push(this._colorList[len - 1]);
this._colorList = newColorList;
}
var precision = this.dataRangeOption.precision;
this._gap = (this.dataRangeOption.max - this.dataRangeOption.min) / splitNumber;
while (this._gap.toFixed(precision) - 0 != this._gap && precision < 5) {
precision++;
}
this.dataRangeOption.precision = precision;
this._gap = ((this.dataRangeOption.max - this.dataRangeOption.min) / splitNumber).toFixed(precision) - 0;
this._valueTextList = [];
for (var i = 0; i < splitNumber; i++) {
this._selectedMap[i] = true;
this._valueTextList.unshift(this._textFormat(i * this._gap + this.dataRangeOption.min, (i + 1) * this._gap + this.dataRangeOption.min));
}
}
this.clear();
this._buildShape();
},
getColor: function (value) {
if (isNaN(value)) {
return null;
}
if (this.dataRangeOption.min == this.dataRangeOption.max) {
return this._colorList[0];
}
if (value < this.dataRangeOption.min) {
value = this.dataRangeOption.min;
} else if (value > this.dataRangeOption.max) {
value = this.dataRangeOption.max;
}
if (this.dataRangeOption.calculable) {
if (value - (this._gap * this._range.start + this.dataRangeOption.min) > 0.00005 || value - (this._gap * this._range.end + this.dataRangeOption.min) < -0.00005) {
return null;
}
}
var idx = this._colorList.length - Math.ceil((value - this.dataRangeOption.min) / (this.dataRangeOption.max - this.dataRangeOption.min) * this._colorList.length);
if (idx == this._colorList.length) {
idx--;
}
if (this._selectedMap[idx]) {
return this._colorList[idx];
} else {
return null;
}
},
getColorByIndex: function (idx) {
if (idx >= this._colorList.length) {
idx = this._colorList.length - 1;
} else if (idx < 0) {
idx = 0;
}
return this._colorList[idx];
},
onbeforDispose: function () {
this.messageCenter.unbind(ecConfig.EVENT.HOVER, this._onhoverlink);
}
};
zrUtil.inherits(DataRange, Base);
require('../component').define('dataRange', DataRange);
return DataRange;
});define('echarts/util/shape/HandlePolygon', [
'require',
'zrender/shape/Base',
'zrender/shape/Polygon',
'zrender/tool/util'
], function (require) {
var Base = require('zrender/shape/Base');
var PolygonShape = require('zrender/shape/Polygon');
var zrUtil = require('zrender/tool/util');
function HandlePolygon(options) {
Base.call(this, options);
}
HandlePolygon.prototype = {
type: 'handle-polygon',
buildPath: function (ctx, style) {
PolygonShape.prototype.buildPath(ctx, style);
},
isCover: function (x, y) {
var originPos = this.getTansform(x, y);
x = originPos[0];
y = originPos[1];
var rect = this.style.rect;
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return true;
} else {
return false;
}
}
};
zrUtil.inherits(HandlePolygon, Base);
return HandlePolygon;
});define('echarts/chart/k', [
'require',
'../component/base',
'./base',
'../util/shape/Candle',
'../component/axis',
'../component/grid',
'../component/dataZoom',
'../config',
'../util/ecData',
'zrender/tool/util',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var CandleShape = require('../util/shape/Candle');
require('../component/axis');
require('../component/grid');
require('../component/dataZoom');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
function K(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
K.prototype = {
type: ecConfig.CHART_TYPE_K,
_buildShape: function () {
var series = this.series;
this.selectedMap = {};
var _position2sIndexMap = {
top: [],
bottom: []
};
var xAxis;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === ecConfig.CHART_TYPE_K) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
xAxis = this.component.xAxis.getAxis(series[i].xAxisIndex);
if (xAxis.type === ecConfig.COMPONENT_TYPE_AXIS_CATEGORY) {
_position2sIndexMap[xAxis.getPosition()].push(i);
}
}
}
for (var position in _position2sIndexMap) {
if (_position2sIndexMap[position].length > 0) {
this._buildSinglePosition(position, _position2sIndexMap[position]);
}
}
this.addShapeList();
},
_buildSinglePosition: function (position, seriesArray) {
var mapData = this._mapData(seriesArray);
var locationMap = mapData.locationMap;
var maxDataLength = mapData.maxDataLength;
if (maxDataLength === 0 || locationMap.length === 0) {
return;
}
this._buildHorizontal(seriesArray, maxDataLength, locationMap);
for (var i = 0, l = seriesArray.length; i < l; i++) {
this.buildMark(seriesArray[i]);
}
},
_mapData: function (seriesArray) {
var series = this.series;
var serie;
var serieName;
var legend = this.component.legend;
var locationMap = [];
var maxDataLength = 0;
for (var i = 0, l = seriesArray.length; i < l; i++) {
serie = series[seriesArray[i]];
serieName = serie.name;
if (legend) {
this.selectedMap[serieName] = legend.isSelected(serieName);
} else {
this.selectedMap[serieName] = true;
}
if (this.selectedMap[serieName]) {
locationMap.push(seriesArray[i]);
}
maxDataLength = Math.max(maxDataLength, serie.data.length);
}
return {
locationMap: locationMap,
maxDataLength: maxDataLength
};
},
_buildHorizontal: function (seriesArray, maxDataLength, locationMap) {
var series = this.series;
var seriesIndex;
var serie;
var xAxisIndex;
var categoryAxis;
var yAxisIndex;
var valueAxis;
var pointList = {};
var candleWidth;
var data;
var value;
var barMaxWidth;
for (var j = 0, k = locationMap.length; j < k; j++) {
seriesIndex = locationMap[j];
serie = series[seriesIndex];
xAxisIndex = serie.xAxisIndex || 0;
categoryAxis = this.component.xAxis.getAxis(xAxisIndex);
candleWidth = serie.barWidth || Math.floor(categoryAxis.getGap() / 2);
barMaxWidth = serie.barMaxWidth;
if (barMaxWidth && barMaxWidth < candleWidth) {
candleWidth = barMaxWidth;
}
yAxisIndex = serie.yAxisIndex || 0;
valueAxis = this.component.yAxis.getAxis(yAxisIndex);
pointList[seriesIndex] = [];
for (var i = 0, l = maxDataLength; i < l; i++) {
if (categoryAxis.getNameByIndex(i) == null) {
break;
}
data = serie.data[i];
value = data != null ? data.value != null ? data.value : data : '-';
if (value === '-' || value.length != 4) {
continue;
}
pointList[seriesIndex].push([
categoryAxis.getCoordByIndex(i),
candleWidth,
valueAxis.getCoord(value[0]),
valueAxis.getCoord(value[1]),
valueAxis.getCoord(value[2]),
valueAxis.getCoord(value[3]),
i,
categoryAxis.getNameByIndex(i)
]);
}
}
this._buildKLine(seriesArray, pointList);
},
_buildKLine: function (seriesArray, pointList) {
var series = this.series;
var nLineWidth;
var nLineColor;
var nLineColor0;
var nColor;
var nColor0;
var eLineWidth;
var eLineColor;
var eLineColor0;
var eColor;
var eColor0;
var serie;
var queryTarget;
var data;
var seriesPL;
var singlePoint;
var candleType;
var seriesIndex;
for (var sIdx = 0, len = seriesArray.length; sIdx < len; sIdx++) {
seriesIndex = seriesArray[sIdx];
serie = series[seriesIndex];
seriesPL = pointList[seriesIndex];
if (this._isLarge(seriesPL)) {
seriesPL = this._getLargePointList(seriesPL);
}
if (serie.type === ecConfig.CHART_TYPE_K && seriesPL != null) {
queryTarget = serie;
nLineWidth = this.query(queryTarget, 'itemStyle.normal.lineStyle.width');
nLineColor = this.query(queryTarget, 'itemStyle.normal.lineStyle.color');
nLineColor0 = this.query(queryTarget, 'itemStyle.normal.lineStyle.color0');
nColor = this.query(queryTarget, 'itemStyle.normal.color');
nColor0 = this.query(queryTarget, 'itemStyle.normal.color0');
eLineWidth = this.query(queryTarget, 'itemStyle.emphasis.lineStyle.width');
eLineColor = this.query(queryTarget, 'itemStyle.emphasis.lineStyle.color');
eLineColor0 = this.query(queryTarget, 'itemStyle.emphasis.lineStyle.color0');
eColor = this.query(queryTarget, 'itemStyle.emphasis.color');
eColor0 = this.query(queryTarget, 'itemStyle.emphasis.color0');
for (var i = 0, l = seriesPL.length; i < l; i++) {
singlePoint = seriesPL[i];
data = serie.data[singlePoint[6]];
queryTarget = data;
candleType = singlePoint[3] < singlePoint[2];
this.shapeList.push(this._getCandle(seriesIndex, singlePoint[6], singlePoint[7], singlePoint[0], singlePoint[1], singlePoint[2], singlePoint[3], singlePoint[4], singlePoint[5], candleType ? this.query(queryTarget, 'itemStyle.normal.color') || nColor : this.query(queryTarget, 'itemStyle.normal.color0') || nColor0, this.query(queryTarget, 'itemStyle.normal.lineStyle.width') || nLineWidth, candleType ? this.query(queryTarget, 'itemStyle.normal.lineStyle.color') || nLineColor : this.query(queryTarget, 'itemStyle.normal.lineStyle.color0') || nLineColor0, candleType ? this.query(queryTarget, 'itemStyle.emphasis.color') || eColor || nColor : this.query(queryTarget, 'itemStyle.emphasis.color0') || eColor0 || nColor0, this.query(queryTarget, 'itemStyle.emphasis.lineStyle.width') || eLineWidth || nLineWidth, candleType ? this.query(queryTarget, 'itemStyle.emphasis.lineStyle.color') || eLineColor || nLineColor : this.query(queryTarget, 'itemStyle.emphasis.lineStyle.color0') || eLineColor0 || nLineColor0));
}
}
}
},
_isLarge: function (singlePL) {
return singlePL[0][1] < 0.5;
},
_getLargePointList: function (singlePL) {
var total = this.component.grid.getWidth();
var len = singlePL.length;
var newList = [];
for (var i = 0; i < total; i++) {
newList[i] = singlePL[Math.floor(len / total * i)];
}
return newList;
},
_getCandle: function (seriesIndex, dataIndex, name, x, width, y0, y1, y2, y3, nColor, nLinewidth, nLineColor, eColor, eLinewidth, eLineColor) {
var series = this.series;
var itemShape = {
zlevel: this._zlevelBase,
clickable: this.deepQuery([
series[seriesIndex].data[dataIndex],
series[seriesIndex]
], 'clickable'),
style: {
x: x,
y: [
y0,
y1,
y2,
y3
],
width: width,
color: nColor,
strokeColor: nLineColor,
lineWidth: nLinewidth,
brushType: 'both'
},
highlightStyle: {
color: eColor,
strokeColor: eLineColor,
lineWidth: eLinewidth
},
_seriesIndex: seriesIndex
};
ecData.pack(itemShape, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, name);
itemShape = new CandleShape(itemShape);
return itemShape;
},
getMarkCoord: function (seriesIndex, mpData) {
var serie = this.series[seriesIndex];
var xAxis = this.component.xAxis.getAxis(serie.xAxisIndex);
var yAxis = this.component.yAxis.getAxis(serie.yAxisIndex);
return [
typeof mpData.xAxis != 'string' && xAxis.getCoordByIndex ? xAxis.getCoordByIndex(mpData.xAxis || 0) : xAxis.getCoord(mpData.xAxis || 0),
typeof mpData.yAxis != 'string' && yAxis.getCoordByIndex ? yAxis.getCoordByIndex(mpData.yAxis || 0) : yAxis.getCoord(mpData.yAxis || 0)
];
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
},
addDataAnimation: function (params) {
var series = this.series;
var aniMap = {};
for (var i = 0, l = params.length; i < l; i++) {
aniMap[params[i][0]] = params[i];
}
var x;
var dx;
var y;
var serie;
var seriesIndex;
var dataIndex;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
seriesIndex = this.shapeList[i]._seriesIndex;
if (aniMap[seriesIndex] && !aniMap[seriesIndex][3]) {
if (this.shapeList[i].type === 'candle') {
dataIndex = ecData.get(this.shapeList[i], 'dataIndex');
serie = series[seriesIndex];
if (aniMap[seriesIndex][2] && dataIndex === serie.data.length - 1) {
this.zr.delShape(this.shapeList[i].id);
continue;
} else if (!aniMap[seriesIndex][2] && dataIndex === 0) {
this.zr.delShape(this.shapeList[i].id);
continue;
}
dx = this.component.xAxis.getAxis(serie.xAxisIndex || 0).getGap();
x = aniMap[seriesIndex][2] ? dx : -dx;
y = 0;
this.zr.animate(this.shapeList[i].id, '').when(500, {
position: [
x,
y
]
}).start();
}
}
}
}
};
zrUtil.inherits(K, ChartBase);
zrUtil.inherits(K, ComponentBase);
require('../chart').define('k', K);
return K;
});define('echarts/chart/pie', [
'require',
'../component/base',
'./base',
'zrender/shape/Text',
'zrender/shape/Ring',
'zrender/shape/Circle',
'zrender/shape/Sector',
'zrender/shape/BrokenLine',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/math',
'zrender/tool/color',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var TextShape = require('zrender/shape/Text');
var RingShape = require('zrender/shape/Ring');
var CircleShape = require('zrender/shape/Circle');
var SectorShape = require('zrender/shape/Sector');
var BrokenLineShape = require('zrender/shape/BrokenLine');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrMath = require('zrender/tool/math');
var zrColor = require('zrender/tool/color');
function Pie(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
var self = this;
self.shapeHandler.onmouseover = function (param) {
var shape = param.target;
var seriesIndex = ecData.get(shape, 'seriesIndex');
var dataIndex = ecData.get(shape, 'dataIndex');
var percent = ecData.get(shape, 'special');
var center = [
shape.style.x,
shape.style.y
];
var startAngle = shape.style.startAngle;
var endAngle = shape.style.endAngle;
var midAngle = ((endAngle + startAngle) / 2 + 360) % 360;
var defaultColor = shape.highlightStyle.color;
var label = self.getLabel(seriesIndex, dataIndex, percent, center, midAngle, defaultColor, true);
if (label) {
self.zr.addHoverShape(label);
}
var labelLine = self.getLabelLine(seriesIndex, dataIndex, center, shape.style.r0, shape.style.r, midAngle, defaultColor, true);
if (labelLine) {
self.zr.addHoverShape(labelLine);
}
};
this.refresh(option);
}
Pie.prototype = {
type: ecConfig.CHART_TYPE_PIE,
_buildShape: function () {
var series = this.series;
var legend = this.component.legend;
this.selectedMap = {};
this._selected = {};
var center;
var radius;
var pieCase;
this._selectedMode = false;
var serieName;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === ecConfig.CHART_TYPE_PIE) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
serieName = series[i].name || '';
this.selectedMap[serieName] = legend ? legend.isSelected(serieName) : true;
if (!this.selectedMap[serieName]) {
continue;
}
center = this.parseCenter(this.zr, series[i].center);
radius = this.parseRadius(this.zr, series[i].radius);
this._selectedMode = this._selectedMode || series[i].selectedMode;
this._selected[i] = [];
if (this.deepQuery([
series[i],
this.option
], 'calculable')) {
pieCase = {
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: center[0],
y: center[1],
r0: radius[0] <= 10 ? 0 : radius[0] - 10,
r: radius[1] + 10,
brushType: 'stroke',
lineWidth: 1,
strokeColor: series[i].calculableHolderColor || this.ecTheme.calculableHolderColor
}
};
ecData.pack(pieCase, series[i], i, undefined, -1);
this.setCalculable(pieCase);
pieCase = radius[0] <= 10 ? new CircleShape(pieCase) : new RingShape(pieCase);
this.shapeList.push(pieCase);
}
this._buildSinglePie(i);
this.buildMark(i);
}
}
this.addShapeList();
},
_buildSinglePie: function (seriesIndex) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data;
var legend = this.component.legend;
var itemName;
var totalSelected = 0;
var totalSelectedValue0 = 0;
var totalValue = 0;
var maxValue = Number.NEGATIVE_INFINITY;
var singleShapeList = [];
for (var i = 0, l = data.length; i < l; i++) {
itemName = data[i].name;
this.selectedMap[itemName] = legend ? legend.isSelected(itemName) : true;
if (this.selectedMap[itemName] && !isNaN(data[i].value)) {
if (+data[i].value !== 0) {
totalSelected++;
} else {
totalSelectedValue0++;
}
totalValue += +data[i].value;
maxValue = Math.max(maxValue, +data[i].value);
}
}
if (totalValue === 0) {
return;
}
var percent = 100;
var clockWise = serie.clockWise;
var startAngle = (serie.startAngle.toFixed(2) - 0 + 360) % 360;
var endAngle;
var minAngle = serie.minAngle || 0.01;
var totalAngle = 360 - minAngle * totalSelected - 0.01 * totalSelectedValue0;
var defaultColor;
var roseType = serie.roseType;
var center;
var radius;
var r0;
var r1;
for (var i = 0, l = data.length; i < l; i++) {
itemName = data[i].name;
if (!this.selectedMap[itemName] || isNaN(data[i].value)) {
continue;
}
defaultColor = legend ? legend.getColor(itemName) : this.zr.getColor(i);
percent = data[i].value / totalValue;
if (roseType != 'area') {
endAngle = clockWise ? startAngle - percent * totalAngle - (percent !== 0 ? minAngle : 0.01) : percent * totalAngle + startAngle + (percent !== 0 ? minAngle : 0.01);
} else {
endAngle = clockWise ? startAngle - 360 / l : 360 / l + startAngle;
}
endAngle = endAngle.toFixed(2) - 0;
percent = (percent * 100).toFixed(2);
center = this.parseCenter(this.zr, serie.center);
radius = this.parseRadius(this.zr, serie.radius);
r0 = +radius[0];
r1 = +radius[1];
if (roseType === 'radius') {
r1 = data[i].value / maxValue * (r1 - r0) * 0.8 + (r1 - r0) * 0.2 + r0;
} else if (roseType === 'area') {
r1 = Math.sqrt(data[i].value / maxValue) * (r1 - r0) + r0;
}
if (clockWise) {
var temp;
temp = startAngle;
startAngle = endAngle;
endAngle = temp;
}
this._buildItem(singleShapeList, seriesIndex, i, percent, data[i].selected, center, r0, r1, startAngle, endAngle, defaultColor);
if (!clockWise) {
startAngle = endAngle;
}
}
this._autoLabelLayout(singleShapeList, center, r1);
for (var i = 0, l = singleShapeList.length; i < l; i++) {
this.shapeList.push(singleShapeList[i]);
}
singleShapeList = null;
},
_buildItem: function (singleShapeList, seriesIndex, dataIndex, percent, isSelected, center, r0, r1, startAngle, endAngle, defaultColor) {
var series = this.series;
var midAngle = ((endAngle + startAngle) / 2 + 360) % 360;
var sector = this.getSector(seriesIndex, dataIndex, percent, isSelected, center, r0, r1, startAngle, endAngle, defaultColor);
ecData.pack(sector, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, series[seriesIndex].data[dataIndex].name, percent);
singleShapeList.push(sector);
var label = this.getLabel(seriesIndex, dataIndex, percent, center, midAngle, defaultColor, false);
var labelLine = this.getLabelLine(seriesIndex, dataIndex, center, r0, r1, midAngle, defaultColor, false);
if (labelLine) {
ecData.pack(labelLine, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, series[seriesIndex].data[dataIndex].name, percent);
singleShapeList.push(labelLine);
}
if (label) {
ecData.pack(label, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, series[seriesIndex].data[dataIndex].name, percent);
label._labelLine = labelLine;
singleShapeList.push(label);
}
},
getSector: function (seriesIndex, dataIndex, percent, isSelected, center, r0, r1, startAngle, endAngle, defaultColor) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var queryTarget = [
data,
serie
];
var normal = this.deepMerge(queryTarget, 'itemStyle.normal') || {};
var emphasis = this.deepMerge(queryTarget, 'itemStyle.emphasis') || {};
var normalColor = this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data) || defaultColor;
var emphasisColor = this.getItemStyleColor(emphasis.color, seriesIndex, dataIndex, data) || (typeof normalColor === 'string' ? zrColor.lift(normalColor, -0.2) : normalColor);
var sector = {
zlevel: this._zlevelBase,
clickable: this.deepQuery(queryTarget, 'clickable'),
style: {
x: center[0],
y: center[1],
r0: r0,
r: r1,
startAngle: startAngle,
endAngle: endAngle,
brushType: 'both',
color: normalColor,
lineWidth: normal.borderWidth,
strokeColor: normal.borderColor,
lineJoin: 'round'
},
highlightStyle: {
color: emphasisColor,
lineWidth: emphasis.borderWidth,
strokeColor: emphasis.borderColor,
lineJoin: 'round'
},
_seriesIndex: seriesIndex,
_dataIndex: dataIndex
};
if (isSelected) {
var midAngle = ((sector.style.startAngle + sector.style.endAngle) / 2).toFixed(2) - 0;
sector.style._hasSelected = true;
sector.style._x = sector.style.x;
sector.style._y = sector.style.y;
var offset = this.query(serie, 'selectedOffset');
sector.style.x += zrMath.cos(midAngle, true) * offset;
sector.style.y -= zrMath.sin(midAngle, true) * offset;
this._selected[seriesIndex][dataIndex] = true;
} else {
this._selected[seriesIndex][dataIndex] = false;
}
if (this._selectedMode) {
sector.onclick = this.shapeHandler.onclick;
}
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
this.setCalculable(sector);
sector.draggable = true;
}
if (this._needLabel(serie, data, true) || this._needLabelLine(serie, data, true)) {
sector.onmouseover = this.shapeHandler.onmouseover;
}
sector = new SectorShape(sector);
return sector;
},
getLabel: function (seriesIndex, dataIndex, percent, center, midAngle, defaultColor, isEmphasis) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
if (!this._needLabel(serie, data, isEmphasis)) {
return;
}
var status = isEmphasis ? 'emphasis' : 'normal';
var itemStyle = zrUtil.merge(zrUtil.clone(data.itemStyle) || {}, serie.itemStyle);
var labelControl = itemStyle[status].label;
var textStyle = labelControl.textStyle || {};
var centerX = center[0];
var centerY = center[1];
var x;
var y;
var radius = this.parseRadius(this.zr, serie.radius);
var textAlign;
var textBaseline = 'middle';
labelControl.position = labelControl.position || itemStyle.normal.label.position;
if (labelControl.position === 'center') {
x = centerX;
y = centerY;
textAlign = 'center';
} else if (labelControl.position === 'inner' || labelControl.position === 'inside') {
radius = (radius[0] + radius[1]) / 2;
x = Math.round(centerX + radius * zrMath.cos(midAngle, true));
y = Math.round(centerY - radius * zrMath.sin(midAngle, true));
defaultColor = '#fff';
textAlign = 'center';
} else {
radius = radius[1] - -itemStyle[status].labelLine.length;
x = Math.round(centerX + radius * zrMath.cos(midAngle, true));
y = Math.round(centerY - radius * zrMath.sin(midAngle, true));
textAlign = midAngle >= 90 && midAngle <= 270 ? 'right' : 'left';
}
if (labelControl.position != 'center' && labelControl.position != 'inner' && labelControl.position != 'inside') {
x += textAlign === 'left' ? 20 : -20;
}
data.__labelX = x - (textAlign === 'left' ? 5 : -5);
data.__labelY = y;
var ts = new TextShape({
zlevel: this._zlevelBase + 1,
hoverable: false,
style: {
x: x,
y: y,
color: textStyle.color || defaultColor,
text: this.getLabelText(seriesIndex, dataIndex, percent, status),
textAlign: textStyle.align || textAlign,
textBaseline: textStyle.baseline || textBaseline,
textFont: this.getFont(textStyle)
},
highlightStyle: { brushType: 'fill' }
});
ts._radius = radius;
ts._labelPosition = labelControl.position || 'outer';
ts._rect = ts.getRect(ts.style);
ts._seriesIndex = seriesIndex;
ts._dataIndex = dataIndex;
return ts;
},
getLabelText: function (seriesIndex, dataIndex, percent, status) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var formatter = this.deepQuery([
data,
serie
], 'itemStyle.' + status + '.label.formatter');
if (formatter) {
if (typeof formatter === 'function') {
return formatter.call(this.myChart, serie.name, data.name, data.value, percent);
} else if (typeof formatter === 'string') {
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}').replace('{d}', '{d0}');
formatter = formatter.replace('{a0}', serie.name).replace('{b0}', data.name).replace('{c0}', data.value).replace('{d0}', percent);
return formatter;
}
} else {
return data.name;
}
},
getLabelLine: function (seriesIndex, dataIndex, center, r0, r1, midAngle, defaultColor, isEmphasis) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
if (this._needLabelLine(serie, data, isEmphasis)) {
var status = isEmphasis ? 'emphasis' : 'normal';
var itemStyle = zrUtil.merge(zrUtil.clone(data.itemStyle) || {}, serie.itemStyle);
var labelLineControl = itemStyle[status].labelLine;
var lineStyle = labelLineControl.lineStyle || {};
var centerX = center[0];
var centerY = center[1];
var minRadius = r1;
var maxRadius = this.parseRadius(this.zr, serie.radius)[1] - -labelLineControl.length;
var cosValue = zrMath.cos(midAngle, true);
var sinValue = zrMath.sin(midAngle, true);
return new BrokenLineShape({
zlevel: this._zlevelBase + 1,
hoverable: false,
style: {
pointList: [
[
centerX + minRadius * cosValue,
centerY - minRadius * sinValue
],
[
centerX + maxRadius * cosValue,
centerY - maxRadius * sinValue
],
[
data.__labelX,
data.__labelY
]
],
strokeColor: lineStyle.color || defaultColor,
lineType: lineStyle.type,
lineWidth: lineStyle.width
},
_seriesIndex: seriesIndex,
_dataIndex: dataIndex
});
} else {
return;
}
},
_needLabel: function (serie, data, isEmphasis) {
return this.deepQuery([
data,
serie
], 'itemStyle.' + (isEmphasis ? 'emphasis' : 'normal') + '.label.show');
},
_needLabelLine: function (serie, data, isEmphasis) {
return this.deepQuery([
data,
serie
], 'itemStyle.' + (isEmphasis ? 'emphasis' : 'normal') + '.labelLine.show');
},
_autoLabelLayout: function (sList, center, r) {
var leftList = [];
var rightList = [];
for (var i = 0, l = sList.length; i < l; i++) {
if (sList[i]._labelPosition === 'outer' || sList[i]._labelPosition === 'outside') {
sList[i]._rect._y = sList[i]._rect.y;
if (sList[i]._rect.x < center[0]) {
leftList.push(sList[i]);
} else {
rightList.push(sList[i]);
}
}
}
this._layoutCalculate(leftList, center, r, -1);
this._layoutCalculate(rightList, center, r, 1);
},
_layoutCalculate: function (tList, center, r, direction) {
tList.sort(function (a, b) {
return a._rect.y - b._rect.y;
});
function _changeDown(start, end, delta, direction) {
for (var j = start; j < end; j++) {
tList[j]._rect.y += delta;
tList[j].style.y += delta;
if (tList[j]._labelLine) {
tList[j]._labelLine.style.pointList[1][1] += delta;
tList[j]._labelLine.style.pointList[2][1] += delta;
}
if (j > start && j + 1 < end && tList[j + 1]._rect.y > tList[j]._rect.y + tList[j]._rect.height) {
_changeUp(j, delta / 2);
return;
}
}
_changeUp(end - 1, delta / 2);
}
function _changeUp(end, delta) {
for (var j = end; j >= 0; j--) {
tList[j]._rect.y -= delta;
tList[j].style.y -= delta;
if (tList[j]._labelLine) {
tList[j]._labelLine.style.pointList[1][1] -= delta;
tList[j]._labelLine.style.pointList[2][1] -= delta;
}
if (j > 0 && tList[j]._rect.y > tList[j - 1]._rect.y + tList[j - 1]._rect.height) {
break;
}
}
}
function _changeX(sList, isDownList, center, r, direction) {
var x = center[0];
var y = center[1];
var deltaX;
var deltaY;
var length;
var lastDeltaX = direction > 0 ? isDownList ? Number.MAX_VALUE : 0 : isDownList ? Number.MAX_VALUE : 0;
for (var i = 0, l = sList.length; i < l; i++) {
deltaY = Math.abs(sList[i]._rect.y - y);
length = sList[i]._radius - r;
deltaX = deltaY < r + length ? Math.sqrt((r + length + 20) * (r + length + 20) - Math.pow(sList[i]._rect.y - y, 2)) : Math.abs(sList[i]._rect.x + (direction > 0 ? 0 : sList[i]._rect.width) - x);
if (isDownList && deltaX >= lastDeltaX) {
deltaX = lastDeltaX - 10;
}
if (!isDownList && deltaX <= lastDeltaX) {
deltaX = lastDeltaX + 10;
}
sList[i]._rect.x = sList[i].style.x = x + deltaX * direction;
sList[i]._labelLine.style.pointList[2][0] = x + (deltaX - 5) * direction;
sList[i]._labelLine.style.pointList[1][0] = x + (deltaX - 20) * direction;
lastDeltaX = deltaX;
}
}
var lastY = 0;
var delta;
var len = tList.length;
var upList = [];
var downList = [];
for (var i = 0; i < len; i++) {
delta = tList[i]._rect.y - lastY;
if (delta < 0) {
_changeDown(i, len, -delta, direction);
}
lastY = tList[i]._rect.y + tList[i]._rect.height;
}
if (this.zr.getHeight() - lastY < 0) {
_changeUp(len - 1, lastY - this.zr.getHeight());
}
for (var i = 0; i < len; i++) {
if (tList[i]._rect.y >= center[1]) {
downList.push(tList[i]);
} else {
upList.push(tList[i]);
}
}
_changeX(downList, true, center, r, direction);
_changeX(upList, false, center, r, direction);
},
reformOption: function (opt) {
var _merge = zrUtil.merge;
opt = _merge(opt || {}, this.ecTheme.pie);
opt.itemStyle.normal.label.textStyle = _merge(opt.itemStyle.normal.label.textStyle || {}, this.ecTheme.textStyle);
opt.itemStyle.emphasis.label.textStyle = _merge(opt.itemStyle.emphasis.label.textStyle || {}, this.ecTheme.textStyle);
return opt;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
},
addDataAnimation: function (params) {
var series = this.series;
var aniMap = {};
for (var i = 0, l = params.length; i < l; i++) {
aniMap[params[i][0]] = params[i];
}
var sectorMap = {};
var textMap = {};
var lineMap = {};
var backupShapeList = this.shapeList;
this.shapeList = [];
var seriesIndex;
var isHead;
var dataGrow;
var deltaIdxMap = {};
for (var i = 0, l = params.length; i < l; i++) {
seriesIndex = params[i][0];
isHead = params[i][2];
dataGrow = params[i][3];
if (series[seriesIndex] && series[seriesIndex].type === ecConfig.CHART_TYPE_PIE) {
if (isHead) {
if (!dataGrow) {
sectorMap[seriesIndex + '_' + series[seriesIndex].data.length] = 'delete';
}
deltaIdxMap[seriesIndex] = 1;
} else {
if (!dataGrow) {
sectorMap[seriesIndex + '_-1'] = 'delete';
deltaIdxMap[seriesIndex] = -1;
} else {
deltaIdxMap[seriesIndex] = 0;
}
}
this._buildSinglePie(seriesIndex);
}
}
var dataIndex;
var key;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
seriesIndex = this.shapeList[i]._seriesIndex;
dataIndex = this.shapeList[i]._dataIndex;
key = seriesIndex + '_' + dataIndex;
switch (this.shapeList[i].type) {
case 'sector':
sectorMap[key] = this.shapeList[i];
break;
case 'text':
textMap[key] = this.shapeList[i];
break;
case 'broken-line':
lineMap[key] = this.shapeList[i];
break;
}
}
this.shapeList = [];
var targeSector;
for (var i = 0, l = backupShapeList.length; i < l; i++) {
seriesIndex = backupShapeList[i]._seriesIndex;
if (aniMap[seriesIndex]) {
dataIndex = backupShapeList[i]._dataIndex + deltaIdxMap[seriesIndex];
key = seriesIndex + '_' + dataIndex;
targeSector = sectorMap[key];
if (!targeSector) {
continue;
}
if (backupShapeList[i].type === 'sector') {
if (targeSector != 'delete') {
this.zr.animate(backupShapeList[i].id, 'style').when(400, {
startAngle: targeSector.style.startAngle,
endAngle: targeSector.style.endAngle
}).start();
} else {
this.zr.animate(backupShapeList[i].id, 'style').when(400, deltaIdxMap[seriesIndex] < 0 ? { startAngle: backupShapeList[i].style.startAngle } : { endAngle: backupShapeList[i].style.endAngle }).start();
}
} else if (backupShapeList[i].type === 'text' || backupShapeList[i].type === 'broken-line') {
if (targeSector === 'delete') {
this.zr.delShape(backupShapeList[i].id);
} else {
switch (backupShapeList[i].type) {
case 'text':
targeSector = textMap[key];
this.zr.animate(backupShapeList[i].id, 'style').when(400, {
x: targeSector.style.x,
y: targeSector.style.y
}).start();
break;
case 'broken-line':
targeSector = lineMap[key];
this.zr.animate(backupShapeList[i].id, 'style').when(400, { pointList: targeSector.style.pointList }).start();
break;
}
}
}
}
}
this.shapeList = backupShapeList;
},
onclick: function (param) {
var series = this.series;
if (!this.isClick || !param.target) {
return;
}
this.isClick = false;
var offset;
var target = param.target;
var style = target.style;
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
for (var i = 0, len = this.shapeList.length; i < len; i++) {
if (this.shapeList[i].id === target.id) {
seriesIndex = ecData.get(target, 'seriesIndex');
dataIndex = ecData.get(target, 'dataIndex');
if (!style._hasSelected) {
var midAngle = ((style.startAngle + style.endAngle) / 2).toFixed(2) - 0;
target.style._hasSelected = true;
this._selected[seriesIndex][dataIndex] = true;
target.style._x = target.style.x;
target.style._y = target.style.y;
offset = this.query(series[seriesIndex], 'selectedOffset');
target.style.x += zrMath.cos(midAngle, true) * offset;
target.style.y -= zrMath.sin(midAngle, true) * offset;
} else {
target.style.x = target.style._x;
target.style.y = target.style._y;
target.style._hasSelected = false;
this._selected[seriesIndex][dataIndex] = false;
}
this.zr.modShape(target.id, target);
} else if (this.shapeList[i].style._hasSelected && this._selectedMode === 'single') {
seriesIndex = ecData.get(this.shapeList[i], 'seriesIndex');
dataIndex = ecData.get(this.shapeList[i], 'dataIndex');
this.shapeList[i].style.x = this.shapeList[i].style._x;
this.shapeList[i].style.y = this.shapeList[i].style._y;
this.shapeList[i].style._hasSelected = false;
this._selected[seriesIndex][dataIndex] = false;
this.zr.modShape(this.shapeList[i].id, this.shapeList[i]);
}
}
this.messageCenter.dispatch(ecConfig.EVENT.PIE_SELECTED, param.event, {
selected: this._selected,
target: ecData.get(target, 'name')
}, this.myChart);
this.zr.refresh();
}
};
zrUtil.inherits(Pie, ChartBase);
zrUtil.inherits(Pie, ComponentBase);
require('../chart').define('pie', Pie);
return Pie;
});define('echarts/chart/radar', [
'require',
'../component/base',
'./base',
'zrender/shape/Polygon',
'../component/polar',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/color',
'../util/accMath',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var PolygonShape = require('zrender/shape/Polygon');
require('../component/polar');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
function Radar(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
Radar.prototype = {
type: ecConfig.CHART_TYPE_RADAR,
_buildShape: function () {
this.selectedMap = {};
this._symbol = this.option.symbolList;
this._queryTarget;
this._dropBoxList = [];
this._radarDataCounter = 0;
var series = this.series;
var legend = this.component.legend;
var serieName;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === ecConfig.CHART_TYPE_RADAR) {
this.serie = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
serieName = this.serie.name || '';
this.selectedMap[serieName] = legend ? legend.isSelected(serieName) : true;
if (this.selectedMap[serieName]) {
this._queryTarget = [
this.serie,
this.option
];
if (this.deepQuery(this._queryTarget, 'calculable')) {
this._addDropBox(i);
}
this._buildSingleRadar(i);
this.buildMark(i);
}
}
}
this.addShapeList();
},
_buildSingleRadar: function (index) {
var legend = this.component.legend;
var iconShape;
var data = this.serie.data;
var defaultColor;
var name;
var pointList;
var calculable = this.deepQuery(this._queryTarget, 'calculable');
for (var i = 0; i < data.length; i++) {
name = data[i].name || '';
this.selectedMap[name] = legend ? legend.isSelected(name) : true;
if (!this.selectedMap[name]) {
continue;
}
if (legend) {
defaultColor = legend.getColor(name);
iconShape = legend.getItemShape(name);
if (iconShape) {
iconShape.style.brushType = this.deepQuery([
data[i],
this.serie
], 'itemStyle.normal.areaStyle') ? 'both' : 'stroke';
legend.setItemShape(name, iconShape);
}
} else {
defaultColor = this.zr.getColor(i);
}
pointList = this._getPointList(this.serie.polarIndex, data[i]);
this._addSymbol(pointList, defaultColor, i, index, this.serie.polarIndex);
this._addDataShape(pointList, defaultColor, data[i], index, i, calculable);
this._radarDataCounter++;
}
},
_getPointList: function (polarIndex, dataArr) {
var pointList = [];
var vector;
var polar = this.component.polar;
var value;
for (var i = 0, l = dataArr.value.length; i < l; i++) {
value = dataArr.value[i].value != null ? dataArr.value[i].value : dataArr.value[i];
vector = value != '-' ? polar.getVector(polarIndex, i, value) : false;
if (vector) {
pointList.push(vector);
}
}
return pointList;
},
_addSymbol: function (pointList, defaultColor, dataIndex, seriesIndex, polarIndex) {
var series = this.series;
var itemShape;
var polar = this.component.polar;
for (var i = 0, l = pointList.length; i < l; i++) {
itemShape = this.getSymbolShape(this.deepMerge([
series[seriesIndex].data[dataIndex],
series[seriesIndex]
]), seriesIndex, series[seriesIndex].data[dataIndex].value[i], i, polar.getIndicatorText(polarIndex, i), pointList[i][0], pointList[i][1], this._symbol[this._radarDataCounter % this._symbol.length], defaultColor, '#fff', 'vertical');
itemShape.zlevel = this._zlevelBase + 1;
ecData.set(itemShape, 'data', series[seriesIndex].data[dataIndex]);
ecData.set(itemShape, 'value', series[seriesIndex].data[dataIndex].value);
ecData.set(itemShape, 'dataIndex', dataIndex);
ecData.set(itemShape, 'special', i);
this.shapeList.push(itemShape);
}
},
_addDataShape: function (pointList, defaultColor, data, seriesIndex, dataIndex, calculable) {
var series = this.series;
var queryTarget = [
data,
this.serie
];
var nColor = this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), seriesIndex, dataIndex, data);
var nLineWidth = this.deepQuery(queryTarget, 'itemStyle.normal.lineStyle.width');
var nLineType = this.deepQuery(queryTarget, 'itemStyle.normal.lineStyle.type');
var nAreaColor = this.deepQuery(queryTarget, 'itemStyle.normal.areaStyle.color');
var nIsAreaFill = this.deepQuery(queryTarget, 'itemStyle.normal.areaStyle');
var shape = {
zlevel: this._zlevelBase,
style: {
pointList: pointList,
brushType: nIsAreaFill ? 'both' : 'stroke',
color: nAreaColor || nColor || (typeof defaultColor === 'string' ? zrColor.alpha(defaultColor, 0.5) : defaultColor),
strokeColor: nColor || defaultColor,
lineWidth: nLineWidth,
lineType: nLineType
},
highlightStyle: {
brushType: this.deepQuery(queryTarget, 'itemStyle.emphasis.areaStyle') || nIsAreaFill ? 'both' : 'stroke',
color: this.deepQuery(queryTarget, 'itemStyle.emphasis.areaStyle.color') || nAreaColor || nColor || (typeof defaultColor === 'string' ? zrColor.alpha(defaultColor, 0.5) : defaultColor),
strokeColor: this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.emphasis.color'), seriesIndex, dataIndex, data) || nColor || defaultColor,
lineWidth: this.deepQuery(queryTarget, 'itemStyle.emphasis.lineStyle.width') || nLineWidth,
lineType: this.deepQuery(queryTarget, 'itemStyle.emphasis.lineStyle.type') || nLineType
}
};
ecData.pack(shape, series[seriesIndex], seriesIndex, data, dataIndex, data.name, this.component.polar.getIndicator(series[seriesIndex].polarIndex));
if (calculable) {
shape.draggable = true;
this.setCalculable(shape);
}
shape = new PolygonShape(shape);
this.shapeList.push(shape);
},
_addDropBox: function (index) {
var series = this.series;
var polarIndex = this.deepQuery(this._queryTarget, 'polarIndex');
if (!this._dropBoxList[polarIndex]) {
var shape = this.component.polar.getDropBox(polarIndex);
shape.zlevel = this._zlevelBase;
this.setCalculable(shape);
ecData.pack(shape, series, index, undefined, -1);
this.shapeList.push(shape);
this._dropBoxList[polarIndex] = true;
}
},
ondragend: function (param, status) {
var series = this.series;
if (!this.isDragend || !param.target) {
return;
}
var target = param.target;
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
this.component.legend && this.component.legend.del(series[seriesIndex].data[dataIndex].name);
series[seriesIndex].data.splice(dataIndex, 1);
status.dragOut = true;
status.needRefresh = true;
this.isDragend = false;
return;
},
ondrop: function (param, status) {
var series = this.series;
if (!this.isDrop || !param.target) {
return;
}
var target = param.target;
var dragged = param.dragged;
var seriesIndex = ecData.get(target, 'seriesIndex');
var dataIndex = ecData.get(target, 'dataIndex');
var data;
var legend = this.component.legend;
var value;
if (dataIndex === -1) {
data = {
value: ecData.get(dragged, 'value'),
name: ecData.get(dragged, 'name')
};
series[seriesIndex].data.push(data);
legend && legend.add(data.name, dragged.style.color || dragged.style.strokeColor);
} else {
var accMath = require('../util/accMath');
data = series[seriesIndex].data[dataIndex];
legend && legend.del(data.name);
data.name += this.option.nameConnector + ecData.get(dragged, 'name');
value = ecData.get(dragged, 'value');
for (var i = 0; i < value.length; i++) {
data.value[i] = accMath.accAdd(data.value[i], value[i]);
}
legend && legend.add(data.name, dragged.style.color || dragged.style.strokeColor);
}
status.dragIn = status.dragIn || true;
this.isDrop = false;
return;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
}
};
zrUtil.inherits(Radar, ChartBase);
zrUtil.inherits(Radar, ComponentBase);
require('../chart').define('radar', Radar);
return Radar;
});define('echarts/component/polar', [
'require',
'./base',
'zrender/shape/Text',
'zrender/shape/Line',
'zrender/shape/Polygon',
'zrender/shape/Circle',
'zrender/shape/Ring',
'../config',
'zrender/tool/util',
'../util/coordinates',
'../util/accMath',
'../util/smartSteps',
'../component'
], function (require) {
var Base = require('./base');
var TextShape = require('zrender/shape/Text');
var LineShape = require('zrender/shape/Line');
var PolygonShape = require('zrender/shape/Polygon');
var Circle = require('zrender/shape/Circle');
var Ring = require('zrender/shape/Ring');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var ecCoordinates = require('../util/coordinates');
function Polar(ecTheme, messageCenter, zr, option, myChart) {
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.refresh(option);
}
Polar.prototype = {
type: ecConfig.COMPONENT_TYPE_POLAR,
_buildShape: function () {
for (var i = 0; i < this.polar.length; i++) {
this._index = i;
this.reformOption(this.polar[i]);
this._queryTarget = [
this.polar[i],
this.option
];
this._createVector(i);
this._buildSpiderWeb(i);
this._buildText(i);
this._adjustIndicatorValue(i);
this._addAxisLabel(i);
}
for (var i = 0; i < this.shapeList.length; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_createVector: function (index) {
var item = this.polar[index];
var indicator = this.deepQuery(this._queryTarget, 'indicator');
var length = indicator.length;
var startAngle = item.startAngle;
var dStep = 2 * Math.PI / length;
var radius = this._getRadius();
var __ecIndicator = item.__ecIndicator = [];
var vector;
for (var i = 0; i < length; i++) {
vector = ecCoordinates.polar2cartesian(radius, startAngle * Math.PI / 180 + dStep * i);
__ecIndicator.push({
vector: [
vector[1],
-vector[0]
]
});
}
},
_getRadius: function () {
var item = this.polar[this._index];
return this.parsePercent(item.radius, Math.min(this.zr.getWidth(), this.zr.getHeight()) / 2);
},
_buildSpiderWeb: function (index) {
var item = this.polar[index];
var __ecIndicator = item.__ecIndicator;
var splitArea = item.splitArea;
var splitLine = item.splitLine;
var center = this.getCenter(index);
var splitNumber = item.splitNumber;
var strokeColor = splitLine.lineStyle.color;
var lineWidth = splitLine.lineStyle.width;
var show = splitLine.show;
var axisLine = this.deepQuery(this._queryTarget, 'axisLine');
this._addArea(__ecIndicator, splitNumber, center, splitArea, strokeColor, lineWidth, show);
axisLine.show && this._addLine(__ecIndicator, center, axisLine);
},
_addAxisLabel: function (index) {
var accMath = require('../util/accMath');
var item = this.polar[index];
var indicator = this.deepQuery(this._queryTarget, 'indicator');
var __ecIndicator = item.__ecIndicator;
var axisLabel;
var vector;
var style;
var newStyle;
var splitNumber = this.deepQuery(this._queryTarget, 'splitNumber');
var center = this.getCenter(index);
var vector;
var value;
var text;
var theta;
var offset;
var interval;
for (var i = 0; i < indicator.length; i++) {
axisLabel = this.deepQuery([
indicator[i],
item,
this.option
], 'axisLabel');
if (axisLabel.show) {
style = {};
style.textFont = this.getFont();
style = zrUtil.merge(style, axisLabel);
style.lineWidth = style.width;
vector = __ecIndicator[i].vector;
value = __ecIndicator[i].value;
theta = i / indicator.length * 2 * Math.PI;
offset = axisLabel.offset || 10;
interval = axisLabel.interval || 0;
if (!value) {
return;
}
for (var j = 1; j <= splitNumber; j += interval + 1) {
newStyle = zrUtil.merge({}, style);
text = accMath.accAdd(value.min, accMath.accMul(value.step, j));
newStyle.text = this.numAddCommas(text);
newStyle.x = j * vector[0] / splitNumber + Math.cos(theta) * offset + center[0];
newStyle.y = j * vector[1] / splitNumber + Math.sin(theta) * offset + center[1];
this.shapeList.push(new TextShape({
zlevel: this._zlevelBase,
style: newStyle,
draggable: false,
hoverable: false
}));
}
}
}
},
_buildText: function (index) {
var item = this.polar[index];
var __ecIndicator = item.__ecIndicator;
var vector;
var indicator = this.deepQuery(this._queryTarget, 'indicator');
var center = this.getCenter(index);
var style;
var textAlign;
var name;
var rotation;
var x = 0;
var y = 0;
var margin;
var textStyle;
for (var i = 0; i < indicator.length; i++) {
name = this.deepQuery([
indicator[i],
item,
this.option
], 'name');
if (!name.show) {
continue;
}
textStyle = this.deepQuery([
name,
item,
this.option
], 'textStyle');
style = {};
style.textFont = this.getFont(textStyle);
style.color = textStyle.color;
if (typeof name.formatter == 'function') {
style.text = name.formatter.call(this.myChart, indicator[i].text, i);
} else if (typeof name.formatter == 'string') {
style.text = name.formatter.replace('{value}', indicator[i].text);
} else {
style.text = indicator[i].text;
}
__ecIndicator[i].text = style.text;
vector = __ecIndicator[i].vector;
if (Math.round(vector[0]) > 0) {
textAlign = 'left';
} else if (Math.round(vector[0]) < 0) {
textAlign = 'right';
} else {
textAlign = 'center';
}
if (!name.margin) {
vector = this._mapVector(vector, center, 1.2);
} else {
margin = name.margin;
x = vector[0] > 0 ? margin : -margin;
y = vector[1] > 0 ? margin : -margin;
x = vector[0] === 0 ? 0 : x;
y = vector[1] === 0 ? 0 : y;
vector = this._mapVector(vector, center, 1);
}
style.textAlign = textAlign;
style.x = vector[0] + x;
style.y = vector[1] + y;
if (name.rotate) {
rotation = [
name.rotate / 180 * Math.PI,
vector[0],
vector[1]
];
} else {
rotation = [
0,
0,
0
];
}
this.shapeList.push(new TextShape({
zlevel: this._zlevelBase,
style: style,
draggable: false,
hoverable: false,
rotation: rotation
}));
}
},
getIndicatorText: function (polarIndex, indicatorIndex) {
return this.polar[polarIndex] && this.polar[polarIndex].__ecIndicator[indicatorIndex] && this.polar[polarIndex].__ecIndicator[indicatorIndex].text;
},
getDropBox: function (index) {
var index = index || 0;
var item = this.polar[index];
var center = this.getCenter(index);
var __ecIndicator = item.__ecIndicator;
var len = __ecIndicator.length;
var pointList = [];
var vector;
var shape;
var type = item.type;
if (type == 'polygon') {
for (var i = 0; i < len; i++) {
vector = __ecIndicator[i].vector;
pointList.push(this._mapVector(vector, center, 1.2));
}
shape = this._getShape(pointList, 'fill', 'rgba(0,0,0,0)', '', 1);
} else if (type == 'circle') {
shape = this._getCircle('', 1, 1.2, center, 'fill', 'rgba(0,0,0,0)');
}
return shape;
},
_addArea: function (__ecIndicator, splitNumber, center, splitArea, strokeColor, lineWidth, show) {
var shape;
var scale;
var scale1;
var pointList;
var type = this.deepQuery(this._queryTarget, 'type');
for (var i = 0; i < splitNumber; i++) {
scale = (splitNumber - i) / splitNumber;
if (show) {
if (type == 'polygon') {
pointList = this._getPointList(__ecIndicator, scale, center);
shape = this._getShape(pointList, 'stroke', '', strokeColor, lineWidth);
} else if (type == 'circle') {
shape = this._getCircle(strokeColor, lineWidth, scale, center, 'stroke');
}
this.shapeList.push(shape);
}
if (splitArea.show) {
scale1 = (splitNumber - i - 1) / splitNumber;
this._addSplitArea(__ecIndicator, splitArea, scale, scale1, center, i);
}
}
},
_getCircle: function (strokeColor, lineWidth, scale, center, brushType, color) {
var radius = this._getRadius();
return new Circle({
zlevel: this._zlevelBase,
style: {
x: center[0],
y: center[1],
r: radius * scale,
brushType: brushType,
strokeColor: strokeColor,
lineWidth: lineWidth,
color: color
},
hoverable: false,
draggable: false
});
},
_getRing: function (color, scale0, scale1, center) {
var radius = this._getRadius();
return new Ring({
zlevel: this._zlevelBase,
style: {
x: center[0],
y: center[1],
r: scale0 * radius,
r0: scale1 * radius,
color: color,
brushType: 'fill'
},
hoverable: false,
draggable: false
});
},
_getPointList: function (__ecIndicator, scale, center) {
var pointList = [];
var len = __ecIndicator.length;
var vector;
for (var i = 0; i < len; i++) {
vector = __ecIndicator[i].vector;
pointList.push(this._mapVector(vector, center, scale));
}
return pointList;
},
_getShape: function (pointList, brushType, color, strokeColor, lineWidth) {
return new PolygonShape({
zlevel: this._zlevelBase,
style: {
pointList: pointList,
brushType: brushType,
color: color,
strokeColor: strokeColor,
lineWidth: lineWidth
},
hoverable: false,
draggable: false
});
},
_addSplitArea: function (__ecIndicator, splitArea, scale, scale1, center, colorInd) {
var indLen = __ecIndicator.length;
var color;
var colorArr = splitArea.areaStyle.color;
var colorLen;
var vector;
var vector1;
var pointList = [];
var indLen = __ecIndicator.length;
var shape;
var type = this.deepQuery(this._queryTarget, 'type');
if (typeof colorArr == 'string') {
colorArr = [colorArr];
}
colorLen = colorArr.length;
color = colorArr[colorInd % colorLen];
if (type == 'polygon') {
for (var i = 0; i < indLen; i++) {
pointList = [];
vector = __ecIndicator[i].vector;
vector1 = __ecIndicator[(i + 1) % indLen].vector;
pointList.push(this._mapVector(vector, center, scale));
pointList.push(this._mapVector(vector, center, scale1));
pointList.push(this._mapVector(vector1, center, scale1));
pointList.push(this._mapVector(vector1, center, scale));
shape = this._getShape(pointList, 'fill', color, '', 1);
this.shapeList.push(shape);
}
} else if (type == 'circle') {
shape = this._getRing(color, scale, scale1, center);
this.shapeList.push(shape);
}
},
_mapVector: function (vector, center, scale) {
return [
vector[0] * scale + center[0],
vector[1] * scale + center[1]
];
},
getCenter: function (index) {
var index = index || 0;
return this.parseCenter(this.zr, this.polar[index].center);
},
_addLine: function (__ecIndicator, center, axisLine) {
var indLen = __ecIndicator.length;
var line;
var vector;
var lineStyle = axisLine.lineStyle;
var strokeColor = lineStyle.color;
var lineWidth = lineStyle.width;
var lineType = lineStyle.type;
for (var i = 0; i < indLen; i++) {
vector = __ecIndicator[i].vector;
line = this._getLine(center[0], center[1], vector[0] + center[0], vector[1] + center[1], strokeColor, lineWidth, lineType);
this.shapeList.push(line);
}
},
_getLine: function (xStart, yStart, xEnd, yEnd, strokeColor, lineWidth, lineType) {
return new LineShape({
zlevel: this._zlevelBase,
style: {
xStart: xStart,
yStart: yStart,
xEnd: xEnd,
yEnd: yEnd,
strokeColor: strokeColor,
lineWidth: lineWidth,
lineType: lineType
},
hoverable: false
});
},
_adjustIndicatorValue: function (index) {
var item = this.polar[index];
var indicator = this.deepQuery(this._queryTarget, 'indicator');
var len = indicator.length;
var __ecIndicator = item.__ecIndicator;
var max;
var min;
var data = this._getSeriesData(index);
var boundaryGap = item.boundaryGap;
var splitNumber = item.splitNumber;
var scale = item.scale;
var smartSteps = require('../util/smartSteps');
for (var i = 0; i < len; i++) {
if (typeof indicator[i].max == 'number') {
max = indicator[i].max;
min = indicator[i].min || 0;
} else {
var value = this._findValue(data, i, splitNumber, boundaryGap);
min = value.min;
max = value.max;
}
if (!scale && min >= 0 && max >= 0) {
min = 0;
}
if (!scale && min <= 0 && max <= 0) {
max = 0;
}
var stepOpt = smartSteps(min, max, splitNumber);
__ecIndicator[i].value = {
min: stepOpt.min,
max: stepOpt.max,
step: stepOpt.step
};
}
},
_getSeriesData: function (index) {
var data = [];
var serie;
var serieData;
var legend = this.component.legend;
var polarIndex;
for (var i = 0; i < this.series.length; i++) {
serie = this.series[i];
if (serie.type != ecConfig.CHART_TYPE_RADAR) {
continue;
}
serieData = serie.data || [];
for (var j = 0; j < serieData.length; j++) {
polarIndex = this.deepQuery([
serieData[j],
serie,
this.option
], 'polarIndex') || 0;
if (polarIndex == index && (!legend || legend.isSelected(serieData[j].name))) {
data.push(serieData[j]);
}
}
}
return data;
},
_findValue: function (data, index, splitNumber, boundaryGap) {
var max;
var min;
var value;
var one;
if (!data || data.length === 0) {
return;
}
function _compare(item) {
(item > max || max === undefined) && (max = item);
(item < min || min === undefined) && (min = item);
}
if (data.length == 1) {
min = 0;
}
if (data.length != 1) {
for (var i = 0; i < data.length; i++) {
value = typeof data[i].value[index].value != 'undefined' ? data[i].value[index].value : data[i].value[index];
_compare(value);
}
} else {
one = data[0];
for (var i = 0; i < one.value.length; i++) {
_compare(typeof one.value[i].value != 'undefined' ? one.value[i].value : one.value[i]);
}
}
var gap = Math.abs(max - min);
min = min - Math.abs(gap * boundaryGap[0]);
max = max + Math.abs(gap * boundaryGap[1]);
if (min === max) {
if (max === 0) {
max = 1;
} else if (max > 0) {
min = max / splitNumber;
} else {
max = max / splitNumber;
}
}
return {
max: max,
min: min
};
},
getVector: function (polarIndex, indicatorIndex, value) {
polarIndex = polarIndex || 0;
indicatorIndex = indicatorIndex || 0;
var __ecIndicator = this.polar[polarIndex].__ecIndicator;
if (indicatorIndex >= __ecIndicator.length) {
return;
}
var indicator = this.polar[polarIndex].__ecIndicator[indicatorIndex];
var center = this.getCenter(polarIndex);
var vector = indicator.vector;
var max = indicator.value.max;
var min = indicator.value.min;
var alpha;
if (typeof value == 'undefined') {
return center;
}
switch (value) {
case 'min':
value = min;
break;
case 'max':
value = max;
break;
case 'center':
value = (max + min) / 2;
break;
}
if (max != min) {
alpha = (value - min) / (max - min);
} else {
alpha = 0.5;
}
return this._mapVector(vector, center, alpha);
},
isInside: function (vector) {
var polar = this.getNearestIndex(vector);
if (polar) {
return polar.polarIndex;
}
return -1;
},
getNearestIndex: function (vector) {
var item;
var center;
var radius;
var polarVector;
var startAngle;
var indicator;
var len;
var angle;
var finalAngle;
for (var i = 0; i < this.polar.length; i++) {
item = this.polar[i];
center = this.getCenter(i);
if (vector[0] == center[0] && vector[1] == center[1]) {
return {
polarIndex: i,
valueIndex: 0
};
}
radius = this._getRadius();
startAngle = item.startAngle;
indicator = item.indicator;
len = indicator.length;
angle = 2 * Math.PI / len;
polarVector = ecCoordinates.cartesian2polar(vector[0] - center[0], center[1] - vector[1]);
if (vector[0] - center[0] < 0) {
polarVector[1] += Math.PI;
}
if (polarVector[1] < 0) {
polarVector[1] += 2 * Math.PI;
}
finalAngle = polarVector[1] - startAngle / 180 * Math.PI + Math.PI * 2;
if (Math.abs(Math.cos(finalAngle % (angle / 2))) * radius > polarVector[0]) {
return {
polarIndex: i,
valueIndex: Math.floor((finalAngle + angle / 2) / angle) % len
};
}
}
},
getIndicator: function (index) {
var index = index || 0;
return this.polar[index].indicator;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.polar = this.option.polar;
this.series = this.option.series;
}
this.clear();
this._buildShape();
}
};
zrUtil.inherits(Polar, Base);
require('../component').define('polar', Polar);
return Polar;
});define('echarts/util/coordinates', [
'require',
'zrender/tool/math'
], function (require) {
var zrMath = require('zrender/tool/math');
function polar2cartesian(r, theta) {
return [
r * zrMath.sin(theta),
r * zrMath.cos(theta)
];
}
function cartesian2polar(x, y) {
return [
Math.sqrt(x * x + y * y),
Math.atan(y / x)
];
}
return {
polar2cartesian: polar2cartesian,
cartesian2polar: cartesian2polar
};
});define('echarts/chart/chord', [
'require',
'../component/base',
'./base',
'zrender/shape/Text',
'zrender/shape/Line',
'zrender/shape/Sector',
'../util/shape/Ribbon',
'../util/shape/Icon',
'zrender/shape/BezierCurve',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/tool/vector',
'../data/Graph',
'../layout/Chord',
'../chart'
], function (require) {
'use strict';
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var TextShape = require('zrender/shape/Text');
var LineShape = require('zrender/shape/Line');
var SectorShape = require('zrender/shape/Sector');
var RibbonShape = require('../util/shape/Ribbon');
var IconShape = require('../util/shape/Icon');
var BezierCurveShape = require('zrender/shape/BezierCurve');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var vec2 = require('zrender/tool/vector');
var Graph = require('../data/Graph');
var ChordLayout = require('../layout/Chord');
function Chord(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.scaleLineLength = 4;
this.scaleUnitAngle = 4;
this.refresh(option);
}
Chord.prototype = {
type: ecConfig.CHART_TYPE_CHORD,
_init: function () {
var series = this.series;
this.selectedMap = {};
var chordSeriesMap = {};
var chordSeriesGroups = {};
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === this.type) {
var _isSelected = this.isSelected(series[i].name);
this.selectedMap[series[i].name] = _isSelected;
if (_isSelected) {
this.buildMark(i);
}
this.reformOption(series[i]);
chordSeriesMap[series[i].name] = series[i];
}
}
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === this.type) {
if (series[i].insertToSerie) {
var referenceSerie = chordSeriesMap[series[i].insertToSerie];
series[i]._referenceSerie = referenceSerie;
} else {
chordSeriesGroups[series[i].name] = [series[i]];
}
}
}
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === this.type) {
if (series[i].insertToSerie) {
var mainSerie = series[i]._referenceSerie;
while (mainSerie && mainSerie._referenceSerie) {
mainSerie = mainSerie._referenceSerie;
}
if (chordSeriesGroups[mainSerie.name] && this.selectedMap[series[i].name]) {
chordSeriesGroups[mainSerie.name].push(series[i]);
}
}
}
}
for (var name in chordSeriesGroups) {
this._buildChords(chordSeriesGroups[name]);
}
this.addShapeList();
},
_getNodeCategory: function (serie, group) {
return serie.categories && serie.categories[group.category || 0];
},
_getNodeQueryTarget: function (serie, group) {
var category = this._getNodeCategory(serie, group);
return [
group,
category,
serie
];
},
_getEdgeQueryTarget: function (serie, edge, type) {
type = type || 'normal';
return [
edge.itemStyle && edge.itemStyle[type],
serie.itemStyle[type].chordStyle
];
},
_buildChords: function (series) {
var graphs = [];
var mainSerie = series[0];
var nodeFilter = function (n) {
return n.layout.size > 0;
};
for (var i = 0; i < series.length; i++) {
var serie = series[i];
if (this.selectedMap[serie.name]) {
var graph;
if (serie.data && serie.matrix) {
graph = this._getSerieGraphFromDataMatrix(serie, mainSerie);
} else if (serie.nodes && serie.links) {
graph = this._getSerieGraphFromNodeLinks(serie, mainSerie);
}
graph.filterNode(nodeFilter, this);
graphs.push(graph);
graph.__serie = serie;
}
}
if (!graphs.length) {
return;
}
var mainGraph = graphs[0];
if (!mainSerie.ribbonType) {
var minRadius = mainSerie.minRadius;
var maxRadius = mainSerie.maxRadius;
var min = Infinity, max = -Infinity;
mainGraph.eachNode(function (node) {
max = Math.max(node.layout.size, max);
min = Math.min(node.layout.size, min);
});
var multiplier = (maxRadius - minRadius) / (max - min);
mainGraph.eachNode(function (node) {
var queryTarget = this._getNodeQueryTarget(mainSerie, node);
var symbolSize = this.query(queryTarget, 'symbolSize');
if (max === min) {
node.layout.size = symbolSize || min;
} else {
node.layout.size = symbolSize || (node.layout.size - min) * multiplier + minRadius;
}
}, this);
}
var layout = new ChordLayout();
layout.clockWise = mainSerie.clockWise;
layout.startAngle = mainSerie.startAngle * Math.PI / 180;
if (!layout.clockWise) {
layout.startAngle = -layout.startAngle;
}
layout.padding = mainSerie.padding * Math.PI / 180;
layout.sort = mainSerie.sort;
layout.sortSub = mainSerie.sortSub;
layout.directed = mainSerie.ribbonType;
layout.run(graphs);
var showLabel = this.query(mainSerie, 'itemStyle.normal.label.show');
if (mainSerie.ribbonType) {
this._buildSectors(mainSerie, 0, mainGraph, mainSerie, graphs);
if (showLabel) {
this._buildLabels(mainSerie, 0, mainGraph, mainSerie, graphs);
}
for (var i = 0, j = 0; i < series.length; i++) {
if (this.selectedMap[series[i].name]) {
this._buildRibbons(series, i, graphs[j++], mainSerie);
}
}
if (mainSerie.showScale) {
this._buildScales(mainSerie, 0, mainGraph);
}
} else {
this._buildNodeIcons(mainSerie, 0, mainGraph, mainSerie, graphs);
if (showLabel) {
this._buildLabels(mainSerie, 0, mainGraph, mainSerie, graphs);
}
for (var i = 0, j = 0; i < series.length; i++) {
if (this.selectedMap[series[i].name]) {
this._buildEdgeCurves(series, i, graphs[j++], mainSerie, mainGraph);
}
}
}
this._initHoverHandler(series, graphs);
},
_getSerieGraphFromDataMatrix: function (serie, mainSerie) {
var nodesData = [];
var count = 0;
var matrix = [];
for (var i = 0; i < serie.matrix.length; i++) {
matrix[i] = serie.matrix[i].slice();
}
var data = serie.data || serie.nodes;
for (var i = 0; i < data.length; i++) {
var node = {};
var group = data[i];
group.rawIndex = i;
for (var key in group) {
if (key === 'name') {
node['id'] = group['name'];
} else {
node[key] = group[key];
}
}
var category = this._getNodeCategory(mainSerie, group);
var name = category ? category.name : group.name;
this.selectedMap[name] = this.isSelected(name);
if (this.selectedMap[name]) {
nodesData.push(node);
count++;
} else {
matrix.splice(count, 1);
for (var j = 0; j < matrix.length; j++) {
matrix[j].splice(count, 1);
}
}
}
var graph = Graph.fromMatrix(nodesData, matrix, true);
graph.eachNode(function (n, idx) {
n.layout = { size: n.data.outValue };
n.rawIndex = n.data.rawIndex;
});
graph.eachEdge(function (e) {
e.layout = { weight: e.data.weight };
});
return graph;
},
_getSerieGraphFromNodeLinks: function (serie, mainSerie) {
var graph = new Graph(true);
var nodes = serie.data || serie.nodes;
for (var i = 0, len = nodes.length; i < len; i++) {
var n = nodes[i];
if (!n || n.ignore) {
continue;
}
var category = this._getNodeCategory(mainSerie, n);
var name = category ? category.name : n.name;
this.selectedMap[name] = this.isSelected(name);
if (this.selectedMap[name]) {
var node = graph.addNode(n.name, n);
node.rawIndex = i;
}
}
for (var i = 0, len = serie.links.length; i < len; i++) {
var e = serie.links[i];
var n1 = e.source;
var n2 = e.target;
if (typeof n1 === 'number') {
n1 = nodes[n1];
if (n1) {
n1 = n1.name;
}
}
if (typeof n2 === 'number') {
n2 = nodes[n2];
if (n2) {
n2 = n2.name;
}
}
var edge = graph.addEdge(n1, n2, e);
if (edge) {
edge.rawIndex = i;
}
}
graph.eachNode(function (n) {
var value = n.data.value;
if (value == null) {
value = 0;
if (mainSerie.ribbonType) {
for (var i = 0; i < n.outEdges.length; i++) {
value += n.outEdges[i].data.weight || 0;
}
} else {
for (var i = 0; i < n.edges.length; i++) {
value += n.edges[i].data.weight || 0;
}
}
}
n.layout = { size: value };
});
graph.eachEdge(function (e) {
e.layout = { weight: e.data.weight == null ? 1 : e.data.weight };
});
return graph;
},
_initHoverHandler: function (series, graphs) {
var mainSerie = series[0];
var mainGraph = graphs[0];
var self = this;
mainGraph.eachNode(function (node) {
node.shape.onmouseover = function () {
mainGraph.eachNode(function (n) {
n.shape.style.opacity = 0.1;
if (n.labelShape) {
n.labelShape.style.opacity = 0.1;
n.labelShape.modSelf();
}
n.shape.modSelf();
});
for (var i = 0; i < graphs.length; i++) {
for (var j = 0; j < graphs[i].edges.length; j++) {
var e = graphs[i].edges[j];
var queryTarget = self._getEdgeQueryTarget(graphs[i].__serie, e.data);
e.shape.style.opacity = self.deepQuery(queryTarget, 'opacity') * 0.1;
e.shape.modSelf();
}
}
node.shape.style.opacity = 1;
if (node.labelShape) {
node.labelShape.style.opacity = 1;
}
for (var i = 0; i < graphs.length; i++) {
var n = graphs[i].getNodeById(node.id);
if (n) {
for (var j = 0; j < n.outEdges.length; j++) {
var e = n.outEdges[j];
var queryTarget = self._getEdgeQueryTarget(graphs[i].__serie, e.data);
e.shape.style.opacity = self.deepQuery(queryTarget, 'opacity');
var other = graphs[0].getNodeById(e.node2.id);
if (other) {
if (other.shape) {
other.shape.style.opacity = 1;
}
if (other.labelShape) {
other.labelShape.style.opacity = 1;
}
}
}
}
}
self.zr.refreshNextFrame();
};
node.shape.onmouseout = function () {
mainGraph.eachNode(function (n) {
n.shape.style.opacity = 1;
if (n.labelShape) {
n.labelShape.style.opacity = 1;
n.labelShape.modSelf();
}
n.shape.modSelf();
});
for (var i = 0; i < graphs.length; i++) {
for (var j = 0; j < graphs[i].edges.length; j++) {
var e = graphs[i].edges[j];
var queryTarget = [
e.data,
mainSerie
];
e.shape.style.opacity = self.deepQuery(queryTarget, 'itemStyle.normal.chordStyle.opacity');
e.shape.modSelf();
}
}
self.zr.refreshNextFrame();
};
});
},
_buildSectors: function (serie, serieIdx, graph, mainSerie) {
var center = this.parseCenter(this.zr, mainSerie.center);
var radius = this.parseRadius(this.zr, mainSerie.radius);
var clockWise = mainSerie.clockWise;
var sign = clockWise ? 1 : -1;
graph.eachNode(function (node) {
var category = this._getNodeCategory(mainSerie, node.data);
var color = category ? this.getColor(category.name) : this.getColor(node.id);
var startAngle = node.layout.startAngle / Math.PI * 180 * sign;
var endAngle = node.layout.endAngle / Math.PI * 180 * sign;
var sector = new SectorShape({
zlevel: this.getZlevelBase(),
style: {
x: center[0],
y: center[1],
r0: radius[0],
r: radius[1],
startAngle: startAngle,
endAngle: endAngle,
brushType: 'fill',
opacity: 1,
color: color,
clockWise: clockWise
},
clickable: mainSerie.clickable,
highlightStyle: { brushType: 'fill' }
});
sector.style.lineWidth = this.deepQuery([
node.data,
mainSerie
], 'itemStyle.normal.borderWidth');
sector.highlightStyle.lineWidth = this.deepQuery([
node.data,
mainSerie
], 'itemStyle.emphasis.borderWidth');
sector.style.strokeColor = this.deepQuery([
node.data,
mainSerie
], 'itemStyle.normal.borderColor');
sector.highlightStyle.strokeColor = this.deepQuery([
node.data,
mainSerie
], 'itemStyle.emphasis.borderColor');
if (sector.style.lineWidth > 0) {
sector.style.brushType = 'both';
}
if (sector.highlightStyle.lineWidth > 0) {
sector.highlightStyle.brushType = 'both';
}
ecData.pack(sector, serie, serieIdx, node.data, node.rawIndex, node.id, node.category);
this.shapeList.push(sector);
node.shape = sector;
}, this);
},
_buildNodeIcons: function (serie, serieIdx, graph, mainSerie) {
var center = this.parseCenter(this.zr, mainSerie.center);
var radius = this.parseRadius(this.zr, mainSerie.radius);
var r = radius[1];
graph.eachNode(function (node) {
var startAngle = node.layout.startAngle;
var endAngle = node.layout.endAngle;
var angle = (startAngle + endAngle) / 2;
var x = r * Math.cos(angle);
var y = r * Math.sin(angle);
var queryTarget = this._getNodeQueryTarget(mainSerie, node.data);
var category = this._getNodeCategory(mainSerie, node.data);
var color = this.deepQuery(queryTarget, 'itemStyle.normal.color');
if (!color) {
color = category ? this.getColor(category.name) : this.getColor(node.id);
}
var iconShape = new IconShape({
zlevel: this.getZlevelBase(),
z: 1,
style: {
x: -node.layout.size,
y: -node.layout.size,
width: node.layout.size * 2,
height: node.layout.size * 2,
iconType: this.deepQuery(queryTarget, 'symbol'),
color: color,
brushType: 'both',
lineWidth: this.deepQuery(queryTarget, 'itemStyle.normal.borderWidth'),
strokeColor: this.deepQuery(queryTarget, 'itemStyle.normal.borderColor')
},
highlightStyle: {
color: this.deepQuery(queryTarget, 'itemStyle.emphasis.color'),
lineWidth: this.deepQuery(queryTarget, 'itemStyle.emphasis.borderWidth'),
strokeColor: this.deepQuery(queryTarget, 'itemStyle.emphasis.borderColor')
},
clickable: mainSerie.clickable,
position: [
x + center[0],
y + center[1]
]
});
ecData.pack(iconShape, serie, serieIdx, node.data, node.rawIndex, node.id, node.category);
this.shapeList.push(iconShape);
node.shape = iconShape;
}, this);
},
_buildLabels: function (serie, serieIdx, graph, mainSerie) {
var labelColor = this.query(mainSerie, 'itemStyle.normal.label.color');
var rotateLabel = this.query(mainSerie, 'itemStyle.normal.label.rotate');
var labelDistance = this.query(mainSerie, 'itemStyle.normal.label.distance');
var center = this.parseCenter(this.zr, mainSerie.center);
var radius = this.parseRadius(this.zr, mainSerie.radius);
var clockWise = mainSerie.clockWise;
var sign = clockWise ? 1 : -1;
graph.eachNode(function (node) {
var startAngle = node.layout.startAngle / Math.PI * 180 * sign;
var endAngle = node.layout.endAngle / Math.PI * 180 * sign;
var angle = (startAngle * -sign + endAngle * -sign) / 2;
angle %= 360;
if (angle < 0) {
angle += 360;
}
var isRightSide = angle <= 90 || angle >= 270;
angle = angle * Math.PI / 180;
var v = [
Math.cos(angle),
-Math.sin(angle)
];
var distance = 0;
if (mainSerie.ribbonType) {
distance = mainSerie.showScaleText ? 35 + labelDistance : labelDistance;
} else {
distance = labelDistance + node.layout.size;
}
var start = vec2.scale([], v, radius[1] + distance);
vec2.add(start, start, center);
var labelShape = {
zlevel: this.getZlevelBase() + 1,
hoverable: false,
style: {
text: node.data.label == null ? node.id : node.data.label,
textAlign: isRightSide ? 'left' : 'right',
color: labelColor || '#000000'
}
};
if (rotateLabel) {
labelShape.rotation = isRightSide ? angle : Math.PI + angle;
if (isRightSide) {
labelShape.style.x = radius[1] + distance;
} else {
labelShape.style.x = -radius[1] - distance;
}
labelShape.style.y = 0;
labelShape.position = center.slice();
} else {
labelShape.style.x = start[0];
labelShape.style.y = start[1];
}
labelShape.style.textColor = this.deepQuery([
node.data,
mainSerie
], 'itemStyle.normal.label.textStyle.color') || '#fff';
labelShape.style.textFont = this.getFont(this.deepQuery([
node.data,
mainSerie
], 'itemStyle.normal.label.textStyle'));
labelShape = new TextShape(labelShape);
this.shapeList.push(labelShape);
node.labelShape = labelShape;
}, this);
},
_buildRibbons: function (series, serieIdx, graph, mainSerie) {
var serie = series[serieIdx];
var center = this.parseCenter(this.zr, mainSerie.center);
var radius = this.parseRadius(this.zr, mainSerie.radius);
graph.eachEdge(function (edge, idx) {
var color;
var other = graph.getEdge(edge.node2, edge.node1);
if (!other || edge.shape) {
return;
}
if (other.shape) {
edge.shape = other.shape;
return;
}
var s0 = edge.layout.startAngle / Math.PI * 180;
var s1 = edge.layout.endAngle / Math.PI * 180;
var t0 = other.layout.startAngle / Math.PI * 180;
var t1 = other.layout.endAngle / Math.PI * 180;
if (series.length === 1) {
if (edge.layout.weight <= other.layout.weight) {
color = this.getColor(edge.node1.id);
} else {
color = this.getColor(edge.node2.id);
}
} else {
color = this.getColor(serie.name);
}
var queryTarget = this._getEdgeQueryTarget(serie, edge.data);
var queryTargetEmphasis = this._getEdgeQueryTarget(serie, edge.data, 'emphasis');
var ribbon = new RibbonShape({
zlevel: this.getZlevelBase(),
style: {
x: center[0],
y: center[1],
r: radius[0],
source0: s0,
source1: s1,
target0: t0,
target1: t1,
brushType: 'both',
opacity: this.deepQuery(queryTarget, 'opacity'),
color: color,
lineWidth: this.deepQuery(queryTarget, 'borderWidth'),
strokeColor: this.deepQuery(queryTarget, 'borderColor'),
clockWise: mainSerie.clockWise
},
clickable: mainSerie.clickable,
highlightStyle: {
brushType: 'both',
opacity: this.deepQuery(queryTargetEmphasis, 'opacity'),
lineWidth: this.deepQuery(queryTargetEmphasis, 'borderWidth'),
strokeColor: this.deepQuery(queryTargetEmphasis, 'borderColor')
}
});
ecData.pack(ribbon, serie, serieIdx, edge.data, edge.rawIndex == null ? idx : edge.rawIndex, edge.data.name || edge.node1.id + '-' + edge.node2.id, edge.node1.id, edge.node2.id);
this.shapeList.push(ribbon);
edge.shape = ribbon;
}, this);
},
_buildEdgeCurves: function (series, serieIdx, graph, mainSerie, mainGraph) {
var serie = series[serieIdx];
var center = this.parseCenter(this.zr, mainSerie.center);
graph.eachEdge(function (e, idx) {
var node1 = mainGraph.getNodeById(e.node1.id);
var node2 = mainGraph.getNodeById(e.node2.id);
var shape1 = node1.shape;
var shape2 = node2.shape;
var queryTarget = this._getEdgeQueryTarget(serie, e.data);
var queryTargetEmphasis = this._getEdgeQueryTarget(serie, e.data, 'emphasis');
var curveShape = new BezierCurveShape({
zlevel: this.getZlevelBase(),
z: 0,
style: {
xStart: shape1.position[0],
yStart: shape1.position[1],
xEnd: shape2.position[0],
yEnd: shape2.position[1],
cpX1: center[0],
cpY1: center[1],
lineWidth: this.deepQuery(queryTarget, 'width'),
strokeColor: this.deepQuery(queryTarget, 'color'),
opacity: this.deepQuery(queryTarget, 'opacity')
},
highlightStyle: {
lineWidth: this.deepQuery(queryTargetEmphasis, 'width'),
strokeColor: this.deepQuery(queryTargetEmphasis, 'color'),
opacity: this.deepQuery(queryTargetEmphasis, 'opacity')
}
});
ecData.pack(curveShape, serie, serieIdx, e.data, e.rawIndex == null ? idx : e.rawIndex, e.data.name || e.node1.id + '-' + e.node2.id, e.node1.id, e.node2.id);
this.shapeList.push(curveShape);
e.shape = curveShape;
}, this);
},
_buildScales: function (serie, serieIdx, graph) {
var clockWise = serie.clockWise;
var center = this.parseCenter(this.zr, serie.center);
var radius = this.parseRadius(this.zr, serie.radius);
var sign = clockWise ? 1 : -1;
var sumValue = 0;
var maxValue = -Infinity;
var unitPostfix;
var unitScale;
if (serie.showScaleText) {
graph.eachNode(function (node) {
var val = node.data.value;
if (val > maxValue) {
maxValue = val;
}
sumValue += val;
});
if (maxValue > 10000000000) {
unitPostfix = 'b';
unitScale = 1e-9;
} else if (maxValue > 10000000) {
unitPostfix = 'm';
unitScale = 0.000001;
} else if (maxValue > 10000) {
unitPostfix = 'k';
unitScale = 0.001;
} else {
unitPostfix = '';
unitScale = 1;
}
}
var unitValue = sumValue / (360 - serie.padding);
graph.eachNode(function (node) {
var startAngle = node.layout.startAngle / Math.PI * 180;
var endAngle = node.layout.endAngle / Math.PI * 180;
var scaleAngle = startAngle;
while (true) {
if (clockWise && scaleAngle > endAngle || !clockWise && scaleAngle < endAngle) {
break;
}
var theta = scaleAngle / 180 * Math.PI;
var v = [
Math.cos(theta),
Math.sin(theta)
];
var start = vec2.scale([], v, radius[1] + 1);
vec2.add(start, start, center);
var end = vec2.scale([], v, radius[1] + this.scaleLineLength);
vec2.add(end, end, center);
var scaleShape = new LineShape({
zlevel: this.getZlevelBase() - 1,
hoverable: false,
style: {
xStart: start[0],
yStart: start[1],
xEnd: end[0],
yEnd: end[1],
lineCap: 'round',
brushType: 'stroke',
strokeColor: '#666',
lineWidth: 1
}
});
this.shapeList.push(scaleShape);
scaleAngle += sign * this.scaleUnitAngle;
}
if (!serie.showScaleText) {
return;
}
var scaleTextAngle = startAngle;
var step = unitValue * 5 * this.scaleUnitAngle;
var scaleValue = 0;
while (true) {
if (clockWise && scaleTextAngle > endAngle || !clockWise && scaleTextAngle < endAngle) {
break;
}
var theta = scaleTextAngle;
theta = theta % 360;
if (theta < 0) {
theta += 360;
}
var isRightSide = theta <= 90 || theta >= 270;
var textShape = new TextShape({
zlevel: this.getZlevelBase() - 1,
hoverable: false,
style: {
x: isRightSide ? radius[1] + this.scaleLineLength + 4 : -radius[1] - this.scaleLineLength - 4,
y: 0,
text: Math.round(scaleValue * 10) / 10 + unitPostfix,
textAlign: isRightSide ? 'left' : 'right'
},
position: center.slice(),
rotation: isRightSide ? [
-theta / 180 * Math.PI,
0,
0
] : [
-(theta + 180) / 180 * Math.PI,
0,
0
]
});
this.shapeList.push(textShape);
scaleValue += step * unitScale;
scaleTextAngle += sign * this.scaleUnitAngle * 5;
}
}, this);
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.legend = this.component.legend;
if (this.legend) {
this.getColor = function (param) {
return this.legend.getColor(param);
};
this.isSelected = function (param) {
return this.legend.isSelected(param);
};
} else {
var colorMap = {};
var count = 0;
this.getColor = function (key) {
if (colorMap[key]) {
return colorMap[key];
}
if (!colorMap[key]) {
colorMap[key] = this.zr.getColor(count++);
}
return colorMap[key];
};
this.isSelected = function () {
return true;
};
}
this.backupShapeList();
this._init();
},
reformOption: function (opt) {
var _merge = zrUtil.merge;
opt = _merge(opt || {}, this.ecTheme.chord);
opt.itemStyle.normal.label.textStyle = _merge(opt.itemStyle.normal.label.textStyle || {}, this.ecTheme.textStyle);
}
};
zrUtil.inherits(Chord, ChartBase);
zrUtil.inherits(Chord, ComponentBase);
require('../chart').define('chord', Chord);
return Chord;
});define('echarts/util/shape/Ribbon', [
'require',
'zrender/shape/Base',
'zrender/shape/util/PathProxy',
'zrender/tool/util',
'zrender/tool/area'
], function (require) {
var Base = require('zrender/shape/Base');
var PathProxy = require('zrender/shape/util/PathProxy');
var zrUtil = require('zrender/tool/util');
var area = require('zrender/tool/area');
function RibbonShape(options) {
Base.call(this, options);
this._pathProxy = new PathProxy();
}
RibbonShape.prototype = {
type: 'ribbon',
buildPath: function (ctx, style) {
var clockWise = style.clockWise || false;
var path = this._pathProxy;
path.begin(ctx);
var cx = style.x;
var cy = style.y;
var r = style.r;
var s0 = style.source0 / 180 * Math.PI;
var s1 = style.source1 / 180 * Math.PI;
var t0 = style.target0 / 180 * Math.PI;
var t1 = style.target1 / 180 * Math.PI;
var sx0 = cx + Math.cos(s0) * r;
var sy0 = cy + Math.sin(s0) * r;
var sx1 = cx + Math.cos(s1) * r;
var sy1 = cy + Math.sin(s1) * r;
var tx0 = cx + Math.cos(t0) * r;
var ty0 = cy + Math.sin(t0) * r;
var tx1 = cx + Math.cos(t1) * r;
var ty1 = cy + Math.sin(t1) * r;
path.moveTo(sx0, sy0);
path.arc(cx, cy, style.r, s0, s1, !clockWise);
path.bezierCurveTo((cx - sx1) * 0.7 + sx1, (cy - sy1) * 0.7 + sy1, (cx - tx0) * 0.7 + tx0, (cy - ty0) * 0.7 + ty0, tx0, ty0);
if (style.source0 === style.target0 && style.source1 === style.target1) {
return;
}
path.arc(cx, cy, style.r, t0, t1, !clockWise);
path.bezierCurveTo((cx - tx1) * 0.7 + tx1, (cy - ty1) * 0.7 + ty1, (cx - sx0) * 0.7 + sx0, (cy - sy0) * 0.7 + sy0, sx0, sy0);
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
if (!this._pathProxy.isEmpty()) {
this.buildPath(null, style);
}
return this._pathProxy.fastBoundingRect();
},
isCover: function (x, y) {
var rect = this.getRect(this.style);
if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
return area.isInsidePath(this._pathProxy.pathCommands, 0, 'fill', x, y);
}
}
};
zrUtil.inherits(RibbonShape, Base);
return RibbonShape;
});define('zrender/shape/BezierCurve', [
'require',
'./Base',
'../tool/util'
], function (require) {
'use strict';
var Base = require('./Base');
var BezierCurve = function (options) {
this.brushTypeOnly = 'stroke';
this.textPosition = 'end';
Base.call(this, options);
};
BezierCurve.prototype = {
type: 'bezier-curve',
buildPath: function (ctx, style) {
ctx.moveTo(style.xStart, style.yStart);
if (typeof style.cpX2 != 'undefined' && typeof style.cpY2 != 'undefined') {
ctx.bezierCurveTo(style.cpX1, style.cpY1, style.cpX2, style.cpY2, style.xEnd, style.yEnd);
} else {
ctx.quadraticCurveTo(style.cpX1, style.cpY1, style.xEnd, style.yEnd);
}
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var _minX = Math.min(style.xStart, style.xEnd, style.cpX1);
var _minY = Math.min(style.yStart, style.yEnd, style.cpY1);
var _maxX = Math.max(style.xStart, style.xEnd, style.cpX1);
var _maxY = Math.max(style.yStart, style.yEnd, style.cpY1);
var _x2 = style.cpX2;
var _y2 = style.cpY2;
if (typeof _x2 != 'undefined' && typeof _y2 != 'undefined') {
_minX = Math.min(_minX, _x2);
_minY = Math.min(_minY, _y2);
_maxX = Math.max(_maxX, _x2);
_maxY = Math.max(_maxY, _y2);
}
var lineWidth = style.lineWidth || 1;
style.__rect = {
x: _minX - lineWidth,
y: _minY - lineWidth,
width: _maxX - _minX + lineWidth,
height: _maxY - _minY + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(BezierCurve, Base);
return BezierCurve;
});define('echarts/data/Graph', [
'require',
'zrender/tool/util'
], function (require) {
var util = require('zrender/tool/util');
'use strict';
var Graph = function (directed) {
this._directed = directed || false;
this.nodes = [];
this.edges = [];
this._nodesMap = {};
this._edgesMap = {};
};
Graph.prototype.isDirected = function () {
return this._directed;
};
Graph.prototype.addNode = function (id, data) {
if (this._nodesMap[id]) {
return this._nodesMap[id];
}
var node = new Graph.Node(id, data);
this.nodes.push(node);
this._nodesMap[id] = node;
return node;
};
Graph.prototype.getNodeById = function (id) {
return this._nodesMap[id];
};
Graph.prototype.addEdge = function (n1, n2, data) {
if (typeof n1 == 'string') {
n1 = this._nodesMap[n1];
}
if (typeof n2 == 'string') {
n2 = this._nodesMap[n2];
}
if (!n1 || !n2) {
return;
}
var key = n1.id + '-' + n2.id;
if (this._edgesMap[key]) {
return this._edgesMap[key];
}
var edge = new Graph.Edge(n1, n2, data);
if (this._directed) {
n1.outEdges.push(edge);
n2.inEdges.push(edge);
}
n1.edges.push(edge);
if (n1 !== n2) {
n2.edges.push(edge);
}
this.edges.push(edge);
this._edgesMap[key] = edge;
return edge;
};
Graph.prototype.removeEdge = function (edge) {
var n1 = edge.node1;
var n2 = edge.node2;
var key = n1.id + '-' + n2.id;
if (this._directed) {
n1.outEdges.splice(util.indexOf(n1.outEdges, edge), 1);
n2.inEdges.splice(util.indexOf(n2.inEdges, edge), 1);
}
n1.edges.splice(util.indexOf(n1.edges, edge), 1);
if (n1 !== n2) {
n2.edges.splice(util.indexOf(n2.edges, edge), 1);
}
delete this._edgesMap[key];
this.edges.splice(util.indexOf(this.edges, edge), 1);
};
Graph.prototype.getEdge = function (n1, n2) {
if (typeof n1 !== 'string') {
n1 = n1.id;
}
if (typeof n2 !== 'string') {
n2 = n2.id;
}
if (this._directed) {
return this._edgesMap[n1 + '-' + n2] || this._edgesMap[n2 + '-' + n1];
} else {
return this._edgesMap[n1 + '-' + n2];
}
};
Graph.prototype.removeNode = function (node) {
if (typeof node === 'string') {
node = this._nodesMap[node];
if (!node) {
return;
}
}
delete this._nodesMap[node.id];
this.nodes.splice(util.indexOf(this.nodes, node), 1);
for (var i = 0; i < this.edges.length;) {
var edge = this.edges[i];
if (edge.node1 === node || edge.node2 === node) {
this.removeEdge(edge);
} else {
i++;
}
}
};
Graph.prototype.filterNode = function (cb, context) {
var len = this.nodes.length;
for (var i = 0; i < len;) {
if (cb.call(context, this.nodes[i], i)) {
i++;
} else {
this.removeNode(this.nodes[i]);
len--;
}
}
};
Graph.prototype.filterEdge = function (cb, context) {
var len = this.edges.length;
for (var i = 0; i < len;) {
if (cb.call(context, this.edges[i], i)) {
i++;
} else {
this.removeEdge(this.edges[i]);
len--;
}
}
};
Graph.prototype.eachNode = function (cb, context) {
var len = this.nodes.length;
for (var i = 0; i < len; i++) {
if (this.nodes[i]) {
cb.call(context, this.nodes[i], i);
}
}
};
Graph.prototype.eachEdge = function (cb, context) {
var len = this.edges.length;
for (var i = 0; i < len; i++) {
if (this.edges[i]) {
cb.call(context, this.edges[i], i);
}
}
};
Graph.prototype.clear = function () {
this.nodes.length = 0;
this.edges.length = 0;
this._nodesMap = {};
this._edgesMap = {};
};
Graph.prototype.breadthFirstTraverse = function (cb, startNode, direction, context) {
if (typeof startNode === 'string') {
startNode = this._nodesMap[startNode];
}
if (!startNode) {
return;
}
var edgeType = 'edges';
if (direction === 'out') {
edgeType = 'outEdges';
} else if (direction === 'in') {
edgeType = 'inEdges';
}
for (var i = 0; i < this.nodes.length; i++) {
this.nodes[i].__visited = false;
}
if (cb.call(context, startNode, null)) {
return;
}
var queue = [startNode];
while (queue.length) {
var currentNode = queue.shift();
var edges = currentNode[edgeType];
for (var i = 0; i < edges.length; i++) {
var e = edges[i];
var otherNode = e.node1 === currentNode ? e.node2 : e.node1;
if (!otherNode.__visited) {
if (cb.call(otherNode, otherNode, currentNode)) {
return;
}
queue.push(otherNode);
otherNode.__visited = true;
}
}
}
};
Graph.prototype.clone = function () {
var graph = new Graph(this._directed);
for (var i = 0; i < this.nodes.length; i++) {
graph.addNode(this.nodes[i].id, this.nodes[i].data);
}
for (var i = 0; i < this.edges.length; i++) {
var e = this.edges[i];
graph.addEdge(e.node1.id, e.node2.id, e.data);
}
return graph;
};
var Node = function (id, data) {
this.id = id;
this.data = data || null;
this.inEdges = [];
this.outEdges = [];
this.edges = [];
};
Node.prototype.degree = function () {
return this.edges.length;
};
Node.prototype.inDegree = function () {
return this.inEdges.length;
};
Node.prototype.outDegree = function () {
return this.outEdges.length;
};
var Edge = function (node1, node2, data) {
this.node1 = node1;
this.node2 = node2;
this.data = data || null;
};
Graph.Node = Node;
Graph.Edge = Edge;
Graph.fromMatrix = function (nodesData, matrix, directed) {
if (!matrix || !matrix.length || matrix[0].length !== matrix.length || nodesData.length !== matrix.length) {
return;
}
var size = matrix.length;
var graph = new Graph(directed);
for (var i = 0; i < size; i++) {
var node = graph.addNode(nodesData[i].id, nodesData[i]);
node.data.value = 0;
if (directed) {
node.data.outValue = node.data.inValue = 0;
}
}
for (var i = 0; i < size; i++) {
for (var j = 0; j < size; j++) {
var item = matrix[i][j];
if (directed) {
graph.nodes[i].data.outValue += item;
graph.nodes[j].data.inValue += item;
}
graph.nodes[i].data.value += item;
graph.nodes[j].data.value += item;
}
}
for (var i = 0; i < size; i++) {
for (var j = i; j < size; j++) {
var item = matrix[i][j];
if (item === 0) {
continue;
}
var n1 = graph.nodes[i];
var n2 = graph.nodes[j];
var edge = graph.addEdge(n1, n2, {});
edge.data.weight = item;
if (i !== j) {
if (directed && matrix[j][i]) {
var inEdge = graph.addEdge(n2, n1, {});
inEdge.data.weight = matrix[j][i];
}
}
}
}
return graph;
};
return Graph;
});define('echarts/layout/Chord', ['require'], function (require) {
var ChordLayout = function (opts) {
opts = opts || {};
this.sort = opts.sort || null;
this.sortSub = opts.sortSub || null;
this.padding = 0.05;
this.startAngle = opts.startAngle || 0;
this.clockWise = opts.clockWise == null ? false : opts.clockWise;
this.center = opts.center || [
0,
0
];
this.directed = true;
};
ChordLayout.prototype.run = function (graphs) {
if (!(graphs instanceof Array)) {
graphs = [graphs];
}
var gl = graphs.length;
if (!gl) {
return;
}
var graph0 = graphs[0];
var nl = graph0.nodes.length;
var groups = [];
var sumSize = 0;
for (var i = 0; i < nl; i++) {
var g0node = graph0.nodes[i];
var group = {
size: 0,
subGroups: [],
node: g0node
};
groups.push(group);
var sumWeight = 0;
for (var k = 0; k < graphs.length; k++) {
var graph = graphs[k];
var node = graph.getNodeById(g0node.id);
if (!node) {
continue;
}
group.size += node.layout.size;
var edges = this.directed ? node.outEdges : node.edges;
for (var j = 0; j < edges.length; j++) {
var e = edges[j];
var w = e.layout.weight;
group.subGroups.push({
weight: w,
edge: e,
graph: graph
});
sumWeight += w;
}
}
sumSize += group.size;
var multiplier = group.size / sumWeight;
for (var j = 0; j < group.subGroups.length; j++) {
group.subGroups[j].weight *= multiplier;
}
if (this.sortSub === 'ascending') {
group.subGroups.sort(compareSubGroups);
} else if (this.sort === 'descending') {
group.subGroups.sort(compareSubGroups);
group.subGroups.reverse();
}
}
if (this.sort === 'ascending') {
groups.sort(compareGroups);
} else if (this.sort === 'descending') {
groups.sort(compareGroups);
groups.reverse();
}
var multiplier = (Math.PI * 2 - this.padding * nl) / sumSize;
var angle = this.startAngle;
var sign = this.clockWise ? 1 : -1;
for (var i = 0; i < nl; i++) {
var group = groups[i];
group.node.layout.startAngle = angle;
group.node.layout.endAngle = angle + sign * group.size * multiplier;
group.node.layout.subGroups = [];
for (var j = 0; j < group.subGroups.length; j++) {
var subGroup = group.subGroups[j];
subGroup.edge.layout.startAngle = angle;
angle += sign * subGroup.weight * multiplier;
subGroup.edge.layout.endAngle = angle;
}
angle = group.node.layout.endAngle + sign * this.padding;
}
};
var compareSubGroups = function (a, b) {
return a.weight - b.weight;
};
var compareGroups = function (a, b) {
return a.size - b.size;
};
return ChordLayout;
});define('echarts/chart/force', [
'require',
'../component/base',
'./base',
'../data/Graph',
'../layout/Force',
'zrender/shape/Line',
'zrender/shape/BezierCurve',
'zrender/shape/Image',
'../util/shape/Icon',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/config',
'zrender/tool/vector',
'../chart'
], function (require) {
'use strict';
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var Graph = require('../data/Graph');
var ForceLayout = require('../layout/Force');
var LineShape = require('zrender/shape/Line');
var BezierCurveShape = require('zrender/shape/BezierCurve');
var ImageShape = require('zrender/shape/Image');
var IconShape = require('../util/shape/Icon');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrConfig = require('zrender/config');
var vec2 = require('zrender/tool/vector');
function Force(ecTheme, messageCenter, zr, option, myChart) {
var self = this;
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.__nodePositionMap = {};
this._graph = new Graph(true);
this._layout = new ForceLayout();
this._layout.onupdate = function () {
self._step();
};
this._steps = 1;
this.ondragstart = function () {
ondragstart.apply(self, arguments);
};
this.ondragend = function () {
ondragend.apply(self, arguments);
};
this.ondrop = function () {
};
this.shapeHandler.ondragstart = function () {
self.isDragstart = true;
};
this.onmousemove = function () {
onmousemove.apply(self, arguments);
};
this.refresh(option);
}
Force.prototype = {
constructor: Force,
type: ecConfig.CHART_TYPE_FORCE,
_init: function () {
var legend = this.component.legend;
var series = this.series;
var serieName;
this.clear();
for (var i = 0, l = series.length; i < l; i++) {
var serie = series[i];
if (serie.type === ecConfig.CHART_TYPE_FORCE) {
series[i] = this.reformOption(series[i]);
serieName = series[i].name || '';
this.selectedMap[serieName] = legend ? legend.isSelected(serieName) : true;
if (!this.selectedMap[serieName]) {
continue;
}
this.buildMark(i);
this._initSerie(serie, i);
break;
}
}
},
_getNodeCategory: function (serie, node) {
return serie.categories && serie.categories[node.category || 0];
},
_getNodeQueryTarget: function (serie, node, type) {
type = type || 'normal';
var category = this._getNodeCategory(serie, node) || {};
return [
node.itemStyle && node.itemStyle[type],
category && category.itemStyle && category.itemStyle[type],
serie.itemStyle[type].nodeStyle
];
},
_getEdgeQueryTarget: function (serie, edge, type) {
type = type || 'normal';
return [
edge.itemStyle && edge.itemStyle[type],
serie.itemStyle[type].linkStyle
];
},
_initSerie: function (serie, serieIdx) {
this._temperature = 1;
if (serie.data) {
this._graph = this._getSerieGraphFromDataMatrix(serie);
} else {
this._graph = this._getSerieGraphFromNodeLinks(serie);
}
this._buildLinkShapes(serie, serieIdx);
this._buildNodeShapes(serie, serieIdx);
this.zr.modLayer(this.getZlevelBase(), {
panable: serie.roam === true || serie.roam === 'move',
zoomable: serie.roam === true || serie.roam === 'scale'
});
this._initLayout(serie);
this._step();
},
_getSerieGraphFromDataMatrix: function (serie) {
var nodesData = [];
var count = 0;
var matrix = [];
for (var i = 0; i < serie.matrix.length; i++) {
matrix[i] = serie.matrix[i].slice();
}
var data = serie.data || serie.nodes;
for (var i = 0; i < data.length; i++) {
var node = {};
var group = data[i];
for (var key in group) {
if (key === 'name') {
node['id'] = group['name'];
} else {
node[key] = group[key];
}
}
var category = this._getNodeCategory(serie, group);
var name = category ? category.name : group.name;
this.selectedMap[name] = this.isSelected(name);
if (this.selectedMap[name]) {
nodesData.push(node);
count++;
} else {
matrix.splice(count, 1);
for (var j = 0; j < matrix.length; j++) {
matrix[j].splice(count, 1);
}
}
}
var graph = Graph.fromMatrix(nodesData, matrix, true);
graph.eachNode(function (n, idx) {
n.layout = {
size: n.data.value,
mass: 0
};
n.rawIndex = idx;
});
graph.eachEdge(function (e) {
e.layout = { weight: e.data.weight };
});
return graph;
},
_getSerieGraphFromNodeLinks: function (serie) {
var graph = new Graph(true);
var nodes = serie.data || serie.nodes;
for (var i = 0, len = nodes.length; i < len; i++) {
var n = nodes[i];
if (!n || n.ignore) {
continue;
}
var category = this._getNodeCategory(serie, n);
var name = category ? category.name : n.name;
this.selectedMap[name] = this.isSelected(name);
if (this.selectedMap[name]) {
var node = graph.addNode(n.name, n);
node.rawIndex = i;
}
}
for (var i = 0, len = serie.links.length; i < len; i++) {
var e = serie.links[i];
var n1 = e.source;
var n2 = e.target;
if (typeof n1 === 'number') {
n1 = nodes[n1];
if (n1) {
n1 = n1.name;
}
}
if (typeof n2 === 'number') {
n2 = nodes[n2];
if (n2) {
n2 = n2.name;
}
}
var edge = graph.addEdge(n1, n2, e);
if (edge) {
edge.rawIndex = i;
}
}
graph.eachNode(function (n) {
var value = n.data.value;
if (value == null) {
value = 0;
for (var i = 0; i < n.edges.length; i++) {
value += n.edges[i].data.weight || 0;
}
}
n.layout = {
size: value,
mass: 0
};
});
graph.eachEdge(function (e) {
e.layout = { weight: e.data.weight == null ? 1 : e.data.weight };
});
return graph;
},
_initLayout: function (serie) {
var graph = this._graph;
var len = graph.nodes.length;
var minRadius = this.query(serie, 'minRadius');
var maxRadius = this.query(serie, 'maxRadius');
this._steps = serie.steps || 1;
this._layout.center = this.parseCenter(this.zr, serie.center);
this._layout.width = this.parsePercent(serie.size, this.zr.getWidth());
this._layout.height = this.parsePercent(serie.size, this.zr.getHeight());
this._layout.large = serie.large;
this._layout.scaling = serie.scaling;
this._layout.ratioScaling = serie.ratioScaling;
this._layout.gravity = serie.gravity;
this._layout.temperature = 1;
this._layout.coolDown = serie.coolDown;
this._layout.preventNodeEdgeOverlap = serie.preventOverlap;
this._layout.preventNodeOverlap = serie.preventOverlap;
var min = Infinity;
var max = -Infinity;
for (var i = 0; i < len; i++) {
var gNode = graph.nodes[i];
max = Math.max(gNode.layout.size, max);
min = Math.min(gNode.layout.size, min);
}
var divider = max - min;
for (var i = 0; i < len; i++) {
var gNode = graph.nodes[i];
if (divider > 0) {
gNode.layout.size = (gNode.layout.size - min) * (maxRadius - minRadius) / divider + minRadius;
gNode.layout.mass = gNode.layout.size / maxRadius;
} else {
gNode.layout.size = (maxRadius - minRadius) / 2;
gNode.layout.mass = 0.5;
}
}
for (var i = 0; i < len; i++) {
var gNode = graph.nodes[i];
if (typeof this.__nodePositionMap[gNode.id] !== 'undefined') {
gNode.layout.position = vec2.create();
vec2.copy(gNode.layout.position, this.__nodePositionMap[gNode.id]);
} else if (typeof gNode.data.initial !== 'undefined') {
gNode.layout.position = vec2.create();
vec2.copy(gNode.layout.position, gNode.data.initial);
} else {
var center = this._layout.center;
var size = Math.min(this._layout.width, this._layout.height);
gNode.layout.position = _randomInSquare(center[0], center[1], size * 0.8);
}
var style = gNode.shape.style;
var radius = gNode.layout.size;
style.width = style.width || radius * 2;
style.height = style.height || radius * 2;
style.x = -style.width / 2;
style.y = -style.height / 2;
vec2.copy(gNode.shape.position, gNode.layout.position);
}
len = graph.edges.length;
max = -Infinity;
for (var i = 0; i < len; i++) {
var e = graph.edges[i];
if (e.layout.weight > max) {
max = e.layout.weight;
}
}
for (var i = 0; i < len; i++) {
var e = graph.edges[i];
e.layout.weight /= max;
}
this._layout.init(graph, serie.useWorker);
},
_buildNodeShapes: function (serie, serieIdx) {
var graph = this._graph;
var categories = this.query(serie, 'categories');
graph.eachNode(function (node) {
var category = this._getNodeCategory(serie, node.data);
var queryTarget = [
node.data,
category,
serie
];
var styleQueryTarget = this._getNodeQueryTarget(serie, node.data);
var emphasisStyleQueryTarget = this._getNodeQueryTarget(serie, node.data, 'emphasis');
var shape = new IconShape({
style: {
x: 0,
y: 0,
color: this.deepQuery(styleQueryTarget, 'color'),
brushType: 'both',
strokeColor: this.deepQuery(styleQueryTarget, 'strokeColor') || this.deepQuery(styleQueryTarget, 'borderColor'),
lineWidth: this.deepQuery(styleQueryTarget, 'lineWidth') || this.deepQuery(styleQueryTarget, 'borderWidth')
},
highlightStyle: {
color: this.deepQuery(emphasisStyleQueryTarget, 'color', 'emphasis'),
strokeColor: this.deepQuery(emphasisStyleQueryTarget, 'strokeColor', 'emphasis') || this.deepQuery(emphasisStyleQueryTarget, 'borderColor', 'emphasis'),
lineWidth: this.deepQuery(emphasisStyleQueryTarget, 'lineWidth', 'emphasis') || this.deepQuery(emphasisStyleQueryTarget, 'borderWidth', 'emphasis')
},
clickable: serie.clickable,
zlevel: this.getZlevelBase()
});
if (!shape.style.color) {
shape.style.color = category ? this.getColor(category.name) : this.getColor(node.id);
}
shape.style.iconType = this.deepQuery(queryTarget, 'symbol');
shape.style.width = shape.style.height = (this.deepQuery(queryTarget, 'symbolSize') || 0) * 2;
if (shape.style.iconType.match('image')) {
shape.style.image = shape.style.iconType.replace(new RegExp('^image:\\/\\/'), '');
shape = new ImageShape({
style: shape.style,
highlightStyle: shape.highlightStyle,
clickable: shape.clickable
});
}
if (this.deepQuery(queryTarget, 'itemStyle.normal.label.show')) {
shape.style.text = node.data.label == null ? node.id : node.data.label;
shape.style.textPosition = this.deepQuery(queryTarget, 'itemStyle.normal.label.position');
shape.style.textColor = this.deepQuery(queryTarget, 'itemStyle.normal.label.textStyle.color');
shape.style.textFont = this.getFont(this.deepQuery(queryTarget, 'itemStyle.normal.label.textStyle') || {});
}
if (this.deepQuery(queryTarget, 'itemStyle.emphasis.label.show')) {
shape.highlightStyle.textPosition = this.deepQuery(queryTarget, 'itemStyle.emphasis.label.position');
shape.highlightStyle.textColor = this.deepQuery(queryTarget, 'itemStyle.emphasis.label.textStyle.color');
shape.highlightStyle.textFont = this.getFont(this.deepQuery(queryTarget, 'itemStyle.emphasis.label.textStyle') || {});
}
if (this.deepQuery(queryTarget, 'draggable')) {
this.setCalculable(shape);
shape.dragEnableTime = 0;
shape.draggable = true;
shape.ondragstart = this.shapeHandler.ondragstart;
shape.ondragover = null;
}
var categoryName = '';
if (typeof node.category !== 'undefined') {
var category = categories[node.category];
categoryName = category && category.name || '';
}
ecData.pack(shape, serie, serieIdx, node.data, node.rawIndex, node.data.name || '', node.category);
this.shapeList.push(shape);
this.zr.addShape(shape);
node.shape = shape;
}, this);
},
_buildLinkShapes: function (serie, serieIdx) {
var graph = this._graph;
var len = graph.edges.length;
for (var i = 0; i < len; i++) {
var gEdge = graph.edges[i];
var link = gEdge.data;
var source = gEdge.node1;
var target = gEdge.node2;
var queryTarget = this._getEdgeQueryTarget(serie, gEdge);
var linkType = this.deepQuery(queryTarget, 'type');
if (serie.linkSymbol && serie.linkSymbol !== 'none') {
linkType = 'line';
}
var LinkShapeCtor = linkType === 'line' ? LineShape : BezierCurveShape;
var linkShape = new LinkShapeCtor({
style: {
xStart: 0,
yStart: 0,
xEnd: 0,
yEnd: 0,
lineWidth: 1
},
clickable: this.query(serie, 'clickable'),
highlightStyle: {},
zlevel: this.getZlevelBase()
});
zrUtil.merge(linkShape.style, this.query(serie, 'itemStyle.normal.linkStyle'), true);
zrUtil.merge(linkShape.highlightStyle, this.query(serie, 'itemStyle.emphasis.linkStyle'), true);
if (typeof link.itemStyle !== 'undefined') {
if (link.itemStyle.normal) {
zrUtil.merge(linkShape.style, link.itemStyle.normal, true);
}
if (link.itemStyle.emphasis) {
zrUtil.merge(linkShape.highlightStyle, link.itemStyle.emphasis, true);
}
}
linkShape.style.lineWidth = linkShape.style.lineWidth || linkShape.style.width;
linkShape.style.strokeColor = linkShape.style.strokeColor || linkShape.style.color;
linkShape.highlightStyle.lineWidth = linkShape.highlightStyle.lineWidth || linkShape.highlightStyle.width;
linkShape.highlightStyle.strokeColor = linkShape.highlightStyle.strokeColor || linkShape.highlightStyle.color;
ecData.pack(linkShape, serie, serieIdx, gEdge.data, gEdge.rawIndex == null ? i : gEdge.rawIndex, gEdge.data.name || source.id + ' - ' + target.id, source.id, target.id);
this.shapeList.push(linkShape);
this.zr.addShape(linkShape);
gEdge.shape = linkShape;
if (serie.linkSymbol && serie.linkSymbol !== 'none') {
var symbolShape = new IconShape({
style: {
x: -5,
y: 0,
width: serie.linkSymbolSize[0],
height: serie.linkSymbolSize[1],
iconType: serie.linkSymbol,
brushType: 'fill',
color: linkShape.style.strokeColor,
opacity: linkShape.style.opacity,
shadowBlur: linkShape.style.shadowBlur,
shadowColor: linkShape.style.shadowColor,
shadowOffsetX: linkShape.style.shadowOffsetX,
shadowOffsetY: linkShape.style.shadowOffsetY
},
highlightStyle: { brushType: 'fill' },
position: [
0,
0
],
rotation: 0
});
linkShape._symbolShape = symbolShape;
this.shapeList.push(symbolShape);
this.zr.addShape(symbolShape);
}
}
},
_updateLinkShapes: function () {
var v = vec2.create();
var edges = this._graph.edges;
for (var i = 0, len = edges.length; i < len; i++) {
var edge = edges[i];
var sourceShape = edge.node1.shape;
var targetShape = edge.node2.shape;
var p1 = sourceShape.position;
var p2 = targetShape.position;
edge.shape.style.xStart = p1[0];
edge.shape.style.yStart = p1[1];
edge.shape.style.xEnd = p2[0];
edge.shape.style.yEnd = p2[1];
if (edge.shape.type === 'bezier-curve') {
edge.shape.style.cpX1 = (p1[0] + p2[0]) / 2 - (p2[1] - p1[1]) / 4;
edge.shape.style.cpY1 = (p1[1] + p2[1]) / 2 - (p1[0] - p2[0]) / 4;
}
edge.shape.modSelf();
if (edge.shape._symbolShape) {
var symbolShape = edge.shape._symbolShape;
vec2.copy(symbolShape.position, targetShape.position);
vec2.sub(v, sourceShape.position, targetShape.position);
vec2.normalize(v, v);
vec2.scaleAndAdd(symbolShape.position, symbolShape.position, v, targetShape.style.width / 2 + 2);
var angle = Math.atan2(v[1], v[0]);
symbolShape.rotation = Math.PI / 2 - angle;
symbolShape.modSelf();
}
}
},
_syncNodePositions: function () {
var graph = this._graph;
for (var i = 0; i < graph.nodes.length; i++) {
var gNode = graph.nodes[i];
var position = gNode.layout.position;
var node = gNode.data;
var shape = gNode.shape;
if (shape.fixed || node.fixX && node.fixY) {
vec2.copy(position, shape.position);
} else if (node.fixX) {
position[0] = shape.position[0];
shape.position[1] = position[1];
} else if (node.fixY) {
position[1] = shape.position[1];
shape.position[0] = position[0];
} else if (isNaN(node.fixX - 0) == false && isNaN(node.fixY - 0) == false) {
shape.position[0] += (position[0] - shape.position[0]) * node.fixX;
position[0] = shape.position[0];
shape.position[1] += (position[1] - shape.position[1]) * node.fixY;
position[1] = shape.position[1];
} else if (isNaN(node.fixX - 0) == false) {
shape.position[0] += (position[0] - shape.position[0]) * node.fixX;
position[0] = shape.position[0];
shape.position[1] = position[1];
} else if (isNaN(node.fixY - 0) == false) {
shape.position[1] += (position[1] - shape.position[1]) * node.fixY;
position[1] = shape.position[1];
shape.position[0] = position[0];
} else {
vec2.copy(shape.position, position);
}
var nodeName = node.name;
if (nodeName) {
var gPos = this.__nodePositionMap[nodeName];
if (!gPos) {
gPos = this.__nodePositionMap[nodeName] = vec2.create();
}
vec2.copy(gPos, position);
}
shape.modSelf();
}
},
_step: function (e) {
this._syncNodePositions();
this._updateLinkShapes();
this.zr.refreshNextFrame();
if (this._layout.temperature > 0.01) {
this._layout.step(this._steps);
} else {
this.messageCenter.dispatch(ecConfig.EVENT.FORCE_LAYOUT_END, {}, {}, this.myChart);
}
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = this.option.series;
}
this.legend = this.component.legend;
if (this.legend) {
this.getColor = function (param) {
return this.legend.getColor(param);
};
this.isSelected = function (param) {
return this.legend.isSelected(param);
};
} else {
var colorMap = {};
var count = 0;
this.getColor = function (key) {
if (colorMap[key]) {
return colorMap[key];
}
if (!colorMap[key]) {
colorMap[key] = this.zr.getColor(count++);
}
return colorMap[key];
};
this.isSelected = function () {
return true;
};
}
this._init();
},
dispose: function () {
this.clear();
this.shapeList = null;
this.effectList = null;
this._layout.dispose();
this._layout = null;
this.__nodePositionMap = {};
},
getPosition: function () {
var position = [];
this._graph.eachNode(function (n) {
if (n.layout) {
position.push({
name: n.data.name,
position: Array.prototype.slice.call(n.layout.position)
});
}
});
return position;
}
};
function ondragstart(param) {
if (!this.isDragstart || !param.target) {
return;
}
var shape = param.target;
shape.fixed = true;
this.isDragstart = false;
this.zr.on(zrConfig.EVENT.MOUSEMOVE, this.onmousemove);
}
function onmousemove() {
this._layout.temperature = 0.8;
this._step();
}
function ondragend(param, status) {
if (!this.isDragend || !param.target) {
return;
}
var shape = param.target;
shape.fixed = false;
status.dragIn = true;
status.needRefresh = false;
this.isDragend = false;
this.zr.un(zrConfig.EVENT.MOUSEMOVE, this.onmousemove);
}
function _randomInSquare(x, y, size) {
var v = vec2.create();
v[0] = (Math.random() - 0.5) * size + x;
v[1] = (Math.random() - 0.5) * size + y;
return v;
}
zrUtil.inherits(Force, ChartBase);
zrUtil.inherits(Force, ComponentBase);
require('../chart').define('force', Force);
return Force;
});define('echarts/layout/Force', [
'require',
'./forceLayoutWorker',
'zrender/tool/vector'
], function (require) {
var ForceLayoutWorker = require('./forceLayoutWorker');
var vec2 = require('zrender/tool/vector');
var requestAnimationFrame = window.requestAnimationFrame || window.msRequestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function (func) {
setTimeout(func, 16);
};
var ArrayCtor = typeof Float32Array == 'undefined' ? Array : Float32Array;
var workerUrl;
function getToken() {
return Math.round(new Date().getTime() / 100) % 10000000;
}
function createWorkerUrl() {
if (typeof Worker !== 'undefined' && typeof Blob !== 'undefined') {
try {
var blob = new Blob([ForceLayoutWorker.getWorkerCode()]);
workerUrl = window.URL.createObjectURL(blob);
} catch (e) {
workerUrl = '';
}
}
return workerUrl;
}
var ForceLayout = function (opts) {
if (typeof workerUrl === 'undefined') {
createWorkerUrl();
}
opts = opts || {};
this.width = opts.width || 500;
this.height = opts.height || 500;
this.center = opts.center || [
this.width / 2,
this.height / 2
];
this.ratioScaling = opts.ratioScaling || false;
this.scaling = opts.scaling || 1;
this.gravity = typeof opts.gravity !== 'undefined' ? opts.gravity : 1;
this.large = opts.large || false;
this.preventNodeOverlap = opts.preventNodeOverlap || false;
this.preventNodeEdgeOverlap = opts.preventNodeEdgeOverlap || false;
this.maxSpeedIncrease = opts.maxSpeedIncrease || 1;
this.onupdate = opts.onupdate || function () {
};
this.temperature = opts.temperature || 1;
this.coolDown = opts.coolDown || 0.99;
this._layout = null;
this._layoutWorker = null;
this._token = 0;
var self = this;
var _$onupdate = this._$onupdate;
this._$onupdate = function (e) {
_$onupdate.call(self, e);
};
};
ForceLayout.prototype.updateConfig = function () {
var width = this.width;
var height = this.height;
var size = Math.min(width, height);
var config = {
center: this.center,
width: this.ratioScaling ? width : size,
height: this.ratioScaling ? height : size,
scaling: this.scaling || 1,
gravity: this.gravity || 1,
barnesHutOptimize: this.large,
preventNodeOverlap: this.preventNodeOverlap,
preventNodeEdgeOverlap: this.preventNodeEdgeOverlap,
maxSpeedIncrease: this.maxSpeedIncrease
};
if (this._layoutWorker) {
this._layoutWorker.postMessage({
cmd: 'updateConfig',
config: config
});
} else {
for (var name in config) {
this._layout[name] = config[name];
}
}
};
ForceLayout.prototype.init = function (graph, useWorker) {
if (workerUrl && useWorker) {
try {
if (!this._layoutWorker) {
this._layoutWorker = new Worker(workerUrl);
this._layoutWorker.onmessage = this._$onupdate;
}
this._layout = null;
} catch (e) {
this._layoutWorker = null;
if (!this._layout) {
this._layout = new ForceLayoutWorker();
}
}
} else {
if (!this._layout) {
this._layout = new ForceLayoutWorker();
}
if (this._layoutWorker) {
this._layoutWorker.terminate();
this._layoutWorker = null;
}
}
this.temperature = 1;
this.graph = graph;
var len = graph.nodes.length;
var positionArr = new ArrayCtor(len * 2);
var massArr = new ArrayCtor(len);
var sizeArr = new ArrayCtor(len);
for (var i = 0; i < len; i++) {
var n = graph.nodes[i];
positionArr[i * 2] = n.layout.position[0];
positionArr[i * 2 + 1] = n.layout.position[1];
massArr[i] = typeof n.layout.mass === 'undefined' ? 1 : n.layout.mass;
sizeArr[i] = typeof n.layout.size === 'undefined' ? 1 : n.layout.size;
n.layout.__index = i;
}
len = graph.edges.length;
var edgeArr = new ArrayCtor(len * 2);
var edgeWeightArr = new ArrayCtor(len);
for (var i = 0; i < len; i++) {
var edge = graph.edges[i];
edgeArr[i * 2] = edge.node1.layout.__index;
edgeArr[i * 2 + 1] = edge.node2.layout.__index;
edgeWeightArr[i] = edge.layout.weight || 1;
}
this._token = getToken();
if (this._layoutWorker) {
this._layoutWorker.postMessage({
cmd: 'init',
nodesPosition: positionArr,
nodesMass: massArr,
nodesSize: sizeArr,
edges: edgeArr,
edgesWeight: edgeWeightArr,
token: this._token
});
} else {
this._layout.setToken(this._token);
this._layout.initNodes(positionArr, massArr, sizeArr);
this._layout.initEdges(edgeArr, edgeWeightArr);
}
this.updateConfig();
};
ForceLayout.prototype.step = function (steps) {
var nodes = this.graph.nodes;
if (this._layoutWorker) {
var positionArr = new ArrayCtor(nodes.length * 2 + 1);
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
positionArr[i * 2 + 1] = n.layout.position[0];
positionArr[i * 2 + 2] = n.layout.position[1];
}
this._layoutWorker.postMessage(positionArr.buffer, [positionArr.buffer]);
this._layoutWorker.postMessage({
cmd: 'update',
steps: steps,
temperature: this.temperature,
coolDown: this.coolDown
});
for (var i = 0; i < steps; i++) {
this.temperature *= this.coolDown;
}
} else {
requestAnimationFrame(this._$onupdate);
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
vec2.copy(this._layout.nodes[i].position, n.layout.position);
}
for (var i = 0; i < steps; i++) {
this._layout.temperature = this.temperature;
this._layout.update();
this.temperature *= this.coolDown;
}
}
};
ForceLayout.prototype._$onupdate = function (e) {
if (this._layoutWorker) {
var positionArr = new Float32Array(e.data);
var token = positionArr[0];
if (token === this._token) {
for (var i = 0; i < this.graph.nodes.length; i++) {
var n = this.graph.nodes[i];
n.layout.position[0] = positionArr[i * 2 + 1];
n.layout.position[1] = positionArr[i * 2 + 2];
}
this.onupdate && this.onupdate();
}
} else if (this._layout) {
if (this._layout.tokenMatch(this._token)) {
for (var i = 0; i < this.graph.nodes.length; i++) {
var n = this.graph.nodes[i];
vec2.copy(n.layout.position, this._layout.nodes[i].position);
}
this.onupdate && this.onupdate();
}
}
};
ForceLayout.prototype.dispose = function () {
if (this._layoutWorker) {
this._layoutWorker.terminate();
}
this._layoutWorker = null;
this._layout = null;
this._token = 0;
};
return ForceLayout;
});define('echarts/layout/forceLayoutWorker', [
'require',
'zrender/tool/vector'
], function __echartsForceLayoutWorker(require) {
'use strict';
var vec2;
var inWorker = typeof window === 'undefined' && typeof require === 'undefined';
if (inWorker) {
vec2 = {
create: function (x, y) {
var out = new Float32Array(2);
out[0] = x || 0;
out[1] = y || 0;
return out;
},
dist: function (a, b) {
var x = b[0] - a[0];
var y = b[1] - a[1];
return Math.sqrt(x * x + y * y);
},
len: function (a) {
var x = a[0];
var y = a[1];
return Math.sqrt(x * x + y * y);
},
scaleAndAdd: function (out, a, b, scale) {
out[0] = a[0] + b[0] * scale;
out[1] = a[1] + b[1] * scale;
return out;
},
scale: function (out, a, b) {
out[0] = a[0] * b;
out[1] = a[1] * b;
return out;
},
add: function (out, a, b) {
out[0] = a[0] + b[0];
out[1] = a[1] + b[1];
return out;
},
sub: function (out, a, b) {
out[0] = a[0] - b[0];
out[1] = a[1] - b[1];
return out;
},
dot: function (v1, v2) {
return v1[0] * v2[0] + v1[1] * v2[1];
},
normalize: function (out, a) {
var x = a[0];
var y = a[1];
var len = x * x + y * y;
if (len > 0) {
len = 1 / Math.sqrt(len);
out[0] = a[0] * len;
out[1] = a[1] * len;
}
return out;
},
negate: function (out, a) {
out[0] = -a[0];
out[1] = -a[1];
return out;
},
copy: function (out, a) {
out[0] = a[0];
out[1] = a[1];
return out;
},
set: function (out, x, y) {
out[0] = x;
out[1] = y;
return out;
}
};
} else {
vec2 = require('zrender/tool/vector');
}
var ArrayCtor = typeof Float32Array == 'undefined' ? Array : Float32Array;
function Region() {
this.subRegions = [];
this.nSubRegions = 0;
this.node = null;
this.mass = 0;
this.centerOfMass = null;
this.bbox = new ArrayCtor(4);
this.size = 0;
}
Region.prototype.beforeUpdate = function () {
for (var i = 0; i < this.nSubRegions; i++) {
this.subRegions[i].beforeUpdate();
}
this.mass = 0;
if (this.centerOfMass) {
this.centerOfMass[0] = 0;
this.centerOfMass[1] = 0;
}
this.nSubRegions = 0;
this.node = null;
};
Region.prototype.afterUpdate = function () {
this.subRegions.length = this.nSubRegions;
for (var i = 0; i < this.nSubRegions; i++) {
this.subRegions[i].afterUpdate();
}
};
Region.prototype.addNode = function (node) {
if (this.nSubRegions === 0) {
if (this.node == null) {
this.node = node;
return;
} else {
this._addNodeToSubRegion(this.node);
this.node = null;
}
}
this._addNodeToSubRegion(node);
this._updateCenterOfMass(node);
};
Region.prototype.findSubRegion = function (x, y) {
for (var i = 0; i < this.nSubRegions; i++) {
var region = this.subRegions[i];
if (region.contain(x, y)) {
return region;
}
}
};
Region.prototype.contain = function (x, y) {
return this.bbox[0] <= x && this.bbox[2] >= x && this.bbox[1] <= y && this.bbox[3] >= y;
};
Region.prototype.setBBox = function (minX, minY, maxX, maxY) {
this.bbox[0] = minX;
this.bbox[1] = minY;
this.bbox[2] = maxX;
this.bbox[3] = maxY;
this.size = (maxX - minX + maxY - minY) / 2;
};
Region.prototype._newSubRegion = function () {
var subRegion = this.subRegions[this.nSubRegions];
if (!subRegion) {
subRegion = new Region();
this.subRegions[this.nSubRegions] = subRegion;
}
this.nSubRegions++;
return subRegion;
};
Region.prototype._addNodeToSubRegion = function (node) {
var subRegion = this.findSubRegion(node.position[0], node.position[1]);
var bbox = this.bbox;
if (!subRegion) {
var cx = (bbox[0] + bbox[2]) / 2;
var cy = (bbox[1] + bbox[3]) / 2;
var w = (bbox[2] - bbox[0]) / 2;
var h = (bbox[3] - bbox[1]) / 2;
var xi = node.position[0] >= cx ? 1 : 0;
var yi = node.position[1] >= cy ? 1 : 0;
var subRegion = this._newSubRegion();
subRegion.setBBox(xi * w + bbox[0], yi * h + bbox[1], (xi + 1) * w + bbox[0], (yi + 1) * h + bbox[1]);
}
subRegion.addNode(node);
};
Region.prototype._updateCenterOfMass = function (node) {
if (this.centerOfMass == null) {
this.centerOfMass = vec2.create();
}
var x = this.centerOfMass[0] * this.mass;
var y = this.centerOfMass[1] * this.mass;
x += node.position[0] * node.mass;
y += node.position[1] * node.mass;
this.mass += node.mass;
this.centerOfMass[0] = x / this.mass;
this.centerOfMass[1] = y / this.mass;
};
function GraphNode() {
this.position = vec2.create();
this.force = vec2.create();
this.forcePrev = vec2.create();
this.speed = vec2.create();
this.speedPrev = vec2.create();
this.mass = 1;
this.inDegree = 0;
this.outDegree = 0;
}
function GraphEdge(node1, node2) {
this.node1 = node1;
this.node2 = node2;
this.weight = 1;
}
function ForceLayout() {
this.barnesHutOptimize = false;
this.barnesHutTheta = 1.5;
this.repulsionByDegree = false;
this.preventNodeOverlap = false;
this.preventNodeEdgeOverlap = false;
this.strongGravity = true;
this.gravity = 1;
this.scaling = 1;
this.edgeWeightInfluence = 1;
this.center = [
0,
0
];
this.width = 500;
this.height = 500;
this.maxSpeedIncrease = 1;
this.nodes = [];
this.edges = [];
this.bbox = new ArrayCtor(4);
this._rootRegion = new Region();
this._rootRegion.centerOfMass = vec2.create();
this._massArr = null;
this._k = 0;
}
ForceLayout.prototype.nodeToNodeRepulsionFactor = function (mass, d, k) {
return k * k * mass / d;
};
ForceLayout.prototype.edgeToNodeRepulsionFactor = function (mass, d, k) {
return k * mass / d;
};
ForceLayout.prototype.attractionFactor = function (w, d, k) {
return w * d / k;
};
ForceLayout.prototype.initNodes = function (positionArr, massArr, sizeArr) {
this.temperature = 1;
var nNodes = positionArr.length / 2;
this.nodes.length = 0;
var haveSize = typeof sizeArr !== 'undefined';
for (var i = 0; i < nNodes; i++) {
var node = new GraphNode();
node.position[0] = positionArr[i * 2];
node.position[1] = positionArr[i * 2 + 1];
node.mass = massArr[i];
if (haveSize) {
node.size = sizeArr[i];
}
this.nodes.push(node);
}
this._massArr = massArr;
if (haveSize) {
this._sizeArr = sizeArr;
}
};
ForceLayout.prototype.initEdges = function (edgeArr, edgeWeightArr) {
var nEdges = edgeArr.length / 2;
this.edges.length = 0;
var edgeHaveWeight = typeof edgeWeightArr !== 'undefined';
for (var i = 0; i < nEdges; i++) {
var sIdx = edgeArr[i * 2];
var tIdx = edgeArr[i * 2 + 1];
var sNode = this.nodes[sIdx];
var tNode = this.nodes[tIdx];
if (!sNode || !tNode) {
continue;
}
sNode.outDegree++;
tNode.inDegree++;
var edge = new GraphEdge(sNode, tNode);
if (edgeHaveWeight) {
edge.weight = edgeWeightArr[i];
}
this.edges.push(edge);
}
};
ForceLayout.prototype.update = function () {
var nNodes = this.nodes.length;
this.updateBBox();
this._k = 0.4 * this.scaling * Math.sqrt(this.width * this.height / nNodes);
if (this.barnesHutOptimize) {
this._rootRegion.setBBox(this.bbox[0], this.bbox[1], this.bbox[2], this.bbox[3]);
this._rootRegion.beforeUpdate();
for (var i = 0; i < nNodes; i++) {
this._rootRegion.addNode(this.nodes[i]);
}
this._rootRegion.afterUpdate();
} else {
var mass = 0;
var centerOfMass = this._rootRegion.centerOfMass;
vec2.set(centerOfMass, 0, 0);
for (var i = 0; i < nNodes; i++) {
var node = this.nodes[i];
mass += node.mass;
vec2.scaleAndAdd(centerOfMass, centerOfMass, node.position, node.mass);
}
if (mass > 0) {
vec2.scale(centerOfMass, centerOfMass, 1 / mass);
}
}
this.updateForce();
this.updatePosition();
};
ForceLayout.prototype.updateForce = function () {
var nNodes = this.nodes.length;
for (var i = 0; i < nNodes; i++) {
var node = this.nodes[i];
vec2.copy(node.forcePrev, node.force);
vec2.copy(node.speedPrev, node.speed);
vec2.set(node.force, 0, 0);
}
this.updateNodeNodeForce();
if (this.gravity > 0) {
this.updateGravityForce();
}
this.updateEdgeForce();
if (this.preventNodeEdgeOverlap) {
this.updateNodeEdgeForce();
}
};
ForceLayout.prototype.updatePosition = function () {
var nNodes = this.nodes.length;
var v = vec2.create();
for (var i = 0; i < nNodes; i++) {
var node = this.nodes[i];
var speed = node.speed;
vec2.scale(node.force, node.force, 1 / 30);
var df = vec2.len(node.force) + 0.1;
var scale = Math.min(df, 500) / df;
vec2.scale(node.force, node.force, scale);
vec2.add(speed, speed, node.force);
vec2.scale(speed, speed, this.temperature);
vec2.sub(v, speed, node.speedPrev);
var swing = vec2.len(v);
if (swing > 0) {
vec2.scale(v, v, 1 / swing);
var base = vec2.len(node.speedPrev);
if (base > 0) {
swing = Math.min(swing / base, this.maxSpeedIncrease) * base;
vec2.scaleAndAdd(speed, node.speedPrev, v, swing);
}
}
var ds = vec2.len(speed);
var scale = Math.min(ds, 100) / (ds + 0.1);
vec2.scale(speed, speed, scale);
vec2.add(node.position, node.position, speed);
}
};
ForceLayout.prototype.updateNodeNodeForce = function () {
var nNodes = this.nodes.length;
for (var i = 0; i < nNodes; i++) {
var na = this.nodes[i];
if (this.barnesHutOptimize) {
this.applyRegionToNodeRepulsion(this._rootRegion, na);
} else {
for (var j = i + 1; j < nNodes; j++) {
var nb = this.nodes[j];
this.applyNodeToNodeRepulsion(na, nb, false);
}
}
}
};
ForceLayout.prototype.updateGravityForce = function () {
for (var i = 0; i < this.nodes.length; i++) {
this.applyNodeGravity(this.nodes[i]);
}
};
ForceLayout.prototype.updateEdgeForce = function () {
for (var i = 0; i < this.edges.length; i++) {
this.applyEdgeAttraction(this.edges[i]);
}
};
ForceLayout.prototype.updateNodeEdgeForce = function () {
for (var i = 0; i < this.nodes.length; i++) {
for (var j = 0; j < this.edges.length; j++) {
this.applyEdgeToNodeRepulsion(this.edges[j], this.nodes[i]);
}
}
};
ForceLayout.prototype.applyRegionToNodeRepulsion = function () {
var v = vec2.create();
return function applyRegionToNodeRepulsion(region, node) {
if (region.node) {
this.applyNodeToNodeRepulsion(region.node, node, true);
} else {
if (region.mass === 0 && node.mass === 0) {
return;
}
vec2.sub(v, node.position, region.centerOfMass);
var d2 = v[0] * v[0] + v[1] * v[1];
if (d2 > this.barnesHutTheta * region.size * region.size) {
var factor = this._k * this._k * (node.mass + region.mass) / (d2 + 1);
vec2.scaleAndAdd(node.force, node.force, v, factor * 2);
} else {
for (var i = 0; i < region.nSubRegions; i++) {
this.applyRegionToNodeRepulsion(region.subRegions[i], node);
}
}
}
};
}();
ForceLayout.prototype.applyNodeToNodeRepulsion = function () {
var v = vec2.create();
return function applyNodeToNodeRepulsion(na, nb, oneWay) {
if (na === nb) {
return;
}
if (na.mass === 0 && nb.mass === 0) {
return;
}
vec2.sub(v, na.position, nb.position);
var d2 = v[0] * v[0] + v[1] * v[1];
if (d2 === 0) {
return;
}
var factor;
var mass = na.mass + nb.mass;
var d = Math.sqrt(d2);
vec2.scale(v, v, 1 / d);
if (this.preventNodeOverlap) {
d = d - na.size - nb.size;
if (d > 0) {
factor = this.nodeToNodeRepulsionFactor(mass, d, this._k);
} else if (d <= 0) {
factor = this._k * this._k * 10 * mass;
}
} else {
factor = this.nodeToNodeRepulsionFactor(mass, d, this._k);
}
if (!oneWay) {
vec2.scaleAndAdd(na.force, na.force, v, factor * 2);
}
vec2.scaleAndAdd(nb.force, nb.force, v, -factor * 2);
};
}();
ForceLayout.prototype.applyEdgeAttraction = function () {
var v = vec2.create();
return function applyEdgeAttraction(edge) {
var na = edge.node1;
var nb = edge.node2;
vec2.sub(v, na.position, nb.position);
var d = vec2.len(v);
var w;
if (this.edgeWeightInfluence === 0) {
w = 1;
} else if (this.edgeWeightInfluence == 1) {
w = edge.weight;
} else {
w = Math.pow(edge.weight, this.edgeWeightInfluence);
}
var factor;
if (this.preventOverlap) {
d = d - na.size - nb.size;
if (d <= 0) {
return;
}
}
var factor = this.attractionFactor(w, d, this._k);
vec2.scaleAndAdd(na.force, na.force, v, -factor);
vec2.scaleAndAdd(nb.force, nb.force, v, factor);
};
}();
ForceLayout.prototype.applyNodeGravity = function () {
var v = vec2.create();
return function (node) {
vec2.sub(v, this.center, node.position);
if (this.width > this.height) {
v[1] *= this.width / this.height;
} else {
v[0] *= this.height / this.width;
}
var d = vec2.len(v) / 100;
if (this.strongGravity) {
vec2.scaleAndAdd(node.force, node.force, v, d * this.gravity * node.mass);
} else {
vec2.scaleAndAdd(node.force, node.force, v, this.gravity * node.mass / (d + 1));
}
};
}();
ForceLayout.prototype.applyEdgeToNodeRepulsion = function () {
var v12 = vec2.create();
var v13 = vec2.create();
var p = vec2.create();
return function (e, n3) {
var n1 = e.node1;
var n2 = e.node2;
if (n1 === n3 || n2 === n3) {
return;
}
vec2.sub(v12, n2.position, n1.position);
vec2.sub(v13, n3.position, n1.position);
var len12 = vec2.len(v12);
vec2.scale(v12, v12, 1 / len12);
var len = vec2.dot(v12, v13);
if (len < 0 || len > len12) {
return;
}
vec2.scaleAndAdd(p, n1.position, v12, len);
var dist = vec2.dist(p, n3.position) - n3.size;
var factor = this.edgeToNodeRepulsionFactor(n3.mass, Math.max(dist, 0.1), 100);
vec2.sub(v12, n3.position, p);
vec2.normalize(v12, v12);
vec2.scaleAndAdd(n3.force, n3.force, v12, factor);
vec2.scaleAndAdd(n1.force, n1.force, v12, -factor);
vec2.scaleAndAdd(n2.force, n2.force, v12, -factor);
};
}();
ForceLayout.prototype.updateBBox = function () {
var minX = Infinity;
var minY = Infinity;
var maxX = -Infinity;
var maxY = -Infinity;
for (var i = 0; i < this.nodes.length; i++) {
var pos = this.nodes[i].position;
minX = Math.min(minX, pos[0]);
minY = Math.min(minY, pos[1]);
maxX = Math.max(maxX, pos[0]);
maxY = Math.max(maxY, pos[1]);
}
this.bbox[0] = minX;
this.bbox[1] = minY;
this.bbox[2] = maxX;
this.bbox[3] = maxY;
};
ForceLayout.getWorkerCode = function () {
var str = __echartsForceLayoutWorker.toString();
return str.slice(str.indexOf('{') + 1, str.lastIndexOf('return'));
};
ForceLayout.prototype.setToken = function (token) {
this._token = token;
};
ForceLayout.prototype.tokenMatch = function (token) {
return token === this._token;
};
if (inWorker) {
var forceLayout = null;
self.onmessage = function (e) {
if (e.data instanceof ArrayBuffer) {
if (!forceLayout)
return;
var positionArr = new Float32Array(e.data);
var nNodes = (positionArr.length - 1) / 2;
for (var i = 0; i < nNodes; i++) {
var node = forceLayout.nodes[i];
node.position[0] = positionArr[i * 2 + 1];
node.position[1] = positionArr[i * 2 + 2];
}
return;
}
switch (e.data.cmd) {
case 'init':
if (!forceLayout) {
forceLayout = new ForceLayout();
}
forceLayout.initNodes(e.data.nodesPosition, e.data.nodesMass, e.data.nodesSize);
forceLayout.initEdges(e.data.edges, e.data.edgesWeight);
forceLayout._token = e.data.token;
break;
case 'updateConfig':
if (forceLayout) {
for (var name in e.data.config) {
forceLayout[name] = e.data.config[name];
}
}
break;
case 'update':
var steps = e.data.steps;
if (forceLayout) {
var nNodes = forceLayout.nodes.length;
var positionArr = new Float32Array(nNodes * 2 + 1);
forceLayout.temperature = e.data.temperature;
for (var i = 0; i < steps; i++) {
forceLayout.update();
forceLayout.temperature *= e.data.coolDown;
}
for (var i = 0; i < nNodes; i++) {
var node = forceLayout.nodes[i];
positionArr[i * 2 + 1] = node.position[0];
positionArr[i * 2 + 2] = node.position[1];
}
positionArr[0] = forceLayout._token;
self.postMessage(positionArr.buffer, [positionArr.buffer]);
} else {
var emptyArr = new Float32Array();
self.postMessage(emptyArr.buffer, [emptyArr.buffer]);
}
break;
}
};
}
return ForceLayout;
});define('echarts/chart/map', [
'require',
'../component/base',
'./base',
'zrender/shape/Text',
'zrender/shape/Path',
'zrender/shape/Circle',
'zrender/shape/Rectangle',
'zrender/shape/Line',
'zrender/shape/Polygon',
'zrender/shape/Ellipse',
'../component/dataRange',
'../component/roamController',
'../config',
'../util/ecData',
'zrender/tool/util',
'zrender/config',
'zrender/tool/event',
'../util/mapData/params',
'../util/mapData/textFixed',
'../util/mapData/geoCoord',
'../util/projection/svg',
'../util/projection/normal',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var TextShape = require('zrender/shape/Text');
var PathShape = require('zrender/shape/Path');
var CircleShape = require('zrender/shape/Circle');
var RectangleShape = require('zrender/shape/Rectangle');
var LineShape = require('zrender/shape/Line');
var PolygonShape = require('zrender/shape/Polygon');
var EllipseShape = require('zrender/shape/Ellipse');
require('../component/dataRange');
require('../component/roamController');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var zrUtil = require('zrender/tool/util');
var zrConfig = require('zrender/config');
var zrEvent = require('zrender/tool/event');
var _mapParams = require('../util/mapData/params').params;
var _textFixed = require('../util/mapData/textFixed');
var _geoCoord = require('../util/mapData/geoCoord');
function Map(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
var self = this;
self._onmousewheel = function (params) {
return self.__onmousewheel(params);
};
self._onmousedown = function (params) {
return self.__onmousedown(params);
};
self._onmousemove = function (params) {
return self.__onmousemove(params);
};
self._onmouseup = function (params) {
return self.__onmouseup(params);
};
self._onroamcontroller = function (params) {
return self.__onroamcontroller(params);
};
self._ondrhoverlink = function (params) {
return self.__ondrhoverlink(params);
};
this._isAlive = true;
this._selectedMode = {};
this._activeMapType = {};
this._clickable = {};
this._hoverable = {};
this._showLegendSymbol = {};
this._selected = {};
this._mapTypeMap = {};
this._mapDataMap = {};
this._nameMap = {};
this._specialArea = {};
this._refreshDelayTicket;
this._mapDataRequireCounter;
this._markAnimation = false;
this._hoverLinkMap = {};
this._roamMap = {};
this._scaleLimitMap = {};
this._mx;
this._my;
this._mousedown;
this._justMove;
this._curMapType;
this.refresh(option);
this.zr.on(zrConfig.EVENT.MOUSEWHEEL, this._onmousewheel);
this.zr.on(zrConfig.EVENT.MOUSEDOWN, this._onmousedown);
messageCenter.bind(ecConfig.EVENT.ROAMCONTROLLER, this._onroamcontroller);
messageCenter.bind(ecConfig.EVENT.DATA_RANGE_HOVERLINK, this._ondrhoverlink);
}
Map.prototype = {
type: ecConfig.CHART_TYPE_MAP,
_buildShape: function () {
var series = this.series;
this.selectedMap = {};
this._activeMapType = {};
var legend = this.component.legend;
var seriesName;
var valueData = {};
var mapType;
var data;
var name;
var mapSeries = {};
var mapValuePrecision = {};
var valueCalculation = {};
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type == ecConfig.CHART_TYPE_MAP) {
series[i] = this.reformOption(series[i]);
mapType = series[i].mapType;
mapSeries[mapType] = mapSeries[mapType] || {};
mapSeries[mapType][i] = true;
mapValuePrecision[mapType] = mapValuePrecision[mapType] || series[i].mapValuePrecision;
this._scaleLimitMap[mapType] = this._scaleLimitMap[mapType] || {};
series[i].scaleLimit && zrUtil.merge(this._scaleLimitMap[mapType], series[i].scaleLimit, true);
this._roamMap[mapType] = series[i].roam || this._roamMap[mapType];
this._hoverLinkMap[mapType] = series[i].dataRangeHoverLink || this._hoverLinkMap[mapType];
this._nameMap[mapType] = this._nameMap[mapType] || {};
series[i].nameMap && zrUtil.merge(this._nameMap[mapType], series[i].nameMap, true);
this._activeMapType[mapType] = true;
if (series[i].textFixed) {
zrUtil.merge(_textFixed, series[i].textFixed, true);
}
if (series[i].geoCoord) {
zrUtil.merge(_geoCoord, series[i].geoCoord, true);
}
this._selectedMode[mapType] = this._selectedMode[mapType] || series[i].selectedMode;
if (this._hoverable[mapType] == null || this._hoverable[mapType]) {
this._hoverable[mapType] = series[i].hoverable;
}
if (this._clickable[mapType] == null || this._clickable[mapType]) {
this._clickable[mapType] = series[i].clickable;
}
if (this._showLegendSymbol[mapType] == null || this._showLegendSymbol[mapType]) {
this._showLegendSymbol[mapType] = series[i].showLegendSymbol;
}
valueCalculation[mapType] = valueCalculation[mapType] || series[i].mapValueCalculation;
seriesName = series[i].name;
this.selectedMap[seriesName] = legend ? legend.isSelected(seriesName) : true;
if (this.selectedMap[seriesName]) {
valueData[mapType] = valueData[mapType] || {};
data = series[i].data;
for (var j = 0, k = data.length; j < k; j++) {
name = this._nameChange(mapType, data[j].name);
valueData[mapType][name] = valueData[mapType][name] || { seriesIndex: [] };
for (var key in data[j]) {
if (key != 'value') {
valueData[mapType][name][key] = data[j][key];
} else if (!isNaN(data[j].value)) {
valueData[mapType][name].value == null && (valueData[mapType][name].value = 0);
valueData[mapType][name].value += data[j].value;
}
}
valueData[mapType][name].seriesIndex.push(i);
}
}
}
}
this._mapDataRequireCounter = 0;
for (var mt in valueData) {
this._mapDataRequireCounter++;
}
this._clearSelected();
if (this._mapDataRequireCounter === 0) {
this.clear();
this.zr && this.zr.delShape(this.lastShapeList);
this.lastShapeList = [];
}
for (var mt in valueData) {
if (valueCalculation[mt] && valueCalculation[mt] == 'average') {
for (var k in valueData[mt]) {
valueData[mt][k].value = (valueData[mt][k].value / valueData[mt][k].seriesIndex.length).toFixed(mapValuePrecision[mt]) - 0;
}
}
this._mapDataMap[mt] = this._mapDataMap[mt] || {};
if (this._mapDataMap[mt].mapData) {
this._mapDataCallback(mt, valueData[mt], mapSeries[mt])(this._mapDataMap[mt].mapData);
} else if (_mapParams[mt.replace(/\|.*/, '')].getGeoJson) {
this._specialArea[mt] = _mapParams[mt.replace(/\|.*/, '')].specialArea || this._specialArea[mt];
_mapParams[mt.replace(/\|.*/, '')].getGeoJson(this._mapDataCallback(mt, valueData[mt], mapSeries[mt]));
}
}
},
_mapDataCallback: function (mt, vd, ms) {
var self = this;
return function (md) {
if (!self._isAlive || self._activeMapType[mt] == null) {
return;
}
if (mt.indexOf('|') != -1) {
md = self._getSubMapData(mt, md);
}
self._mapDataMap[mt].mapData = md;
if (md.firstChild) {
self._mapDataMap[mt].rate = 1;
self._mapDataMap[mt].projection = require('../util/projection/svg');
} else {
self._mapDataMap[mt].rate = 0.75;
self._mapDataMap[mt].projection = require('../util/projection/normal');
}
self._buildMap(mt, self._getProjectionData(mt, md, ms), vd, ms);
self._buildMark(mt, ms);
if (--self._mapDataRequireCounter <= 0) {
self.addShapeList();
self.zr.refresh();
}
};
},
_clearSelected: function () {
for (var k in this._selected) {
if (!this._activeMapType[this._mapTypeMap[k]]) {
delete this._selected[k];
delete this._mapTypeMap[k];
}
}
},
_getSubMapData: function (mapType, mapData) {
var subType = mapType.replace(/^.*\|/, '');
var features = mapData.features;
for (var i = 0, l = features.length; i < l; i++) {
if (features[i].properties && features[i].properties.name == subType) {
features = features[i];
if (subType == 'United States of America' && features.geometry.coordinates.length > 1) {
features = {
geometry: {
coordinates: features.geometry.coordinates.slice(5, 6),
type: features.geometry.type
},
id: features.id,
properties: features.properties,
type: features.type
};
}
break;
}
}
return {
'type': 'FeatureCollection',
'features': [features]
};
},
_getProjectionData: function (mapType, mapData, mapSeries) {
var normalProjection = this._mapDataMap[mapType].projection;
var province = [];
var bbox = this._mapDataMap[mapType].bbox || normalProjection.getBbox(mapData, this._specialArea[mapType]);
var transform;
if (!this._mapDataMap[mapType].hasRoam) {
transform = this._getTransform(bbox, mapSeries, this._mapDataMap[mapType].rate);
} else {
transform = this._mapDataMap[mapType].transform;
}
var lastTransform = this._mapDataMap[mapType].lastTransform || { scale: {} };
var pathArray;
if (transform.left != lastTransform.left || transform.top != lastTransform.top || transform.scale.x != lastTransform.scale.x || transform.scale.y != lastTransform.scale.y) {
pathArray = normalProjection.geoJson2Path(mapData, transform, this._specialArea[mapType]);
lastTransform = zrUtil.clone(transform);
} else {
transform = this._mapDataMap[mapType].transform;
pathArray = this._mapDataMap[mapType].pathArray;
}
this._mapDataMap[mapType].bbox = bbox;
this._mapDataMap[mapType].transform = transform;
this._mapDataMap[mapType].lastTransform = lastTransform;
this._mapDataMap[mapType].pathArray = pathArray;
var position = [
transform.left,
transform.top
];
for (var i = 0, l = pathArray.length; i < l; i++) {
province.push(this._getSingleProvince(mapType, pathArray[i], position));
}
if (this._specialArea[mapType]) {
for (var area in this._specialArea[mapType]) {
province.push(this._getSpecialProjectionData(mapType, mapData, area, this._specialArea[mapType][area], position));
}
}
if (mapType == 'china') {
var leftTop = this.geo2pos(mapType, _geoCoord['南海诸岛'] || _mapParams['南海诸岛'].textCoord);
var scale = transform.scale.x / 10.5;
var textPosition = [
32 * scale + leftTop[0],
83 * scale + leftTop[1]
];
if (_textFixed['南海诸岛']) {
textPosition[0] += _textFixed['南海诸岛'][0];
textPosition[1] += _textFixed['南海诸岛'][1];
}
province.push({
name: this._nameChange(mapType, '南海诸岛'),
path: _mapParams['南海诸岛'].getPath(leftTop, scale),
position: position,
textX: textPosition[0],
textY: textPosition[1]
});
}
return province;
},
_getSpecialProjectionData: function (mapType, mapData, areaName, mapSize, position) {
mapData = this._getSubMapData('x|' + areaName, mapData);
var normalProjection = require('../util/projection/normal');
var bbox = normalProjection.getBbox(mapData);
var leftTop = this.geo2pos(mapType, [
mapSize.left,
mapSize.top
]);
var rightBottom = this.geo2pos(mapType, [
mapSize.left + mapSize.width,
mapSize.top + mapSize.height
]);
var width = Math.abs(rightBottom[0] - leftTop[0]);
var height = Math.abs(rightBottom[1] - leftTop[1]);
var mapWidth = bbox.width;
var mapHeight = bbox.height;
var xScale = width / 0.75 / mapWidth;
var yScale = height / mapHeight;
if (xScale > yScale) {
xScale = yScale * 0.75;
width = mapWidth * xScale;
} else {
yScale = xScale;
xScale = yScale * 0.75;
height = mapHeight * yScale;
}
var transform = {
OffsetLeft: leftTop[0],
OffsetTop: leftTop[1],
scale: {
x: xScale,
y: yScale
}
};
var pathArray = normalProjection.geoJson2Path(mapData, transform);
return this._getSingleProvince(mapType, pathArray[0], position);
},
_getSingleProvince: function (mapType, path, position) {
var textPosition;
var name = path.properties.name;
var textFixed = _textFixed[name] || [
0,
0
];
if (_geoCoord[name]) {
textPosition = this.geo2pos(mapType, _geoCoord[name]);
} else if (path.cp) {
textPosition = [
path.cp[0] + textFixed[0],
path.cp[1] + textFixed[1]
];
} else {
var bbox = this._mapDataMap[mapType].bbox;
textPosition = this.geo2pos(mapType, [
bbox.left + bbox.width / 2,
bbox.top + bbox.height / 2
]);
textPosition[0] += textFixed[0];
textPosition[1] += textFixed[1];
}
path.name = this._nameChange(mapType, name);
path.position = position;
path.textX = textPosition[0];
path.textY = textPosition[1];
return path;
},
_getTransform: function (bbox, mapSeries, rate) {
var series = this.series;
var mapLocation;
var x;
var cusX;
var y;
var cusY;
var width;
var height;
var zrWidth = this.zr.getWidth();
var zrHeight = this.zr.getHeight();
var padding = Math.round(Math.min(zrWidth, zrHeight) * 0.02);
for (var key in mapSeries) {
mapLocation = series[key].mapLocation || {};
cusX = mapLocation.x || cusX;
cusY = mapLocation.y || cusY;
width = mapLocation.width || width;
height = mapLocation.height || height;
}
x = this.parsePercent(cusX, zrWidth);
x = isNaN(x) ? padding : x;
y = this.parsePercent(cusY, zrHeight);
y = isNaN(y) ? padding : y;
width = width == null ? zrWidth - x - 2 * padding : this.parsePercent(width, zrWidth);
height = height == null ? zrHeight - y - 2 * padding : this.parsePercent(height, zrHeight);
var mapWidth = bbox.width;
var mapHeight = bbox.height;
var xScale = width / rate / mapWidth;
var yScale = height / mapHeight;
if (xScale > yScale) {
xScale = yScale * rate;
width = mapWidth * xScale;
} else {
yScale = xScale;
xScale = yScale * rate;
height = mapHeight * yScale;
}
if (isNaN(cusX)) {
cusX = cusX || 'center';
switch (cusX + '') {
case 'center':
x = Math.floor((zrWidth - width) / 2);
break;
case 'right':
x = zrWidth - width;
break;
}
}
if (isNaN(cusY)) {
cusY = cusY || 'center';
switch (cusY + '') {
case 'center':
y = Math.floor((zrHeight - height) / 2);
break;
case 'bottom':
y = zrHeight - height;
break;
}
}
return {
left: x,
top: y,
width: width,
height: height,
baseScale: 1,
scale: {
x: xScale,
y: yScale
}
};
},
_buildMap: function (mapType, mapData, valueData, mapSeries) {
var series = this.series;
var legend = this.component.legend;
var dataRange = this.component.dataRange;
var seriesName;
var name;
var data;
var value;
var queryTarget;
var defaultOption = this.ecTheme.map;
var color;
var font;
var style;
var highlightStyle;
var shape;
var textShape;
for (var i = 0, l = mapData.length; i < l; i++) {
style = zrUtil.clone(mapData[i]);
highlightStyle = {
name: style.name,
path: style.path,
position: zrUtil.clone(style.position)
};
name = style.name;
data = valueData[name];
if (data) {
queryTarget = [data];
seriesName = '';
for (var j = 0, k = data.seriesIndex.length; j < k; j++) {
queryTarget.push(series[data.seriesIndex[j]]);
seriesName += series[data.seriesIndex[j]].name + ' ';
if (legend && this._showLegendSymbol[mapType] && legend.hasColor(series[data.seriesIndex[j]].name)) {
this.shapeList.push(new CircleShape({
zlevel: this._zlevelBase + 1,
position: zrUtil.clone(style.position),
_mapType: mapType,
style: {
x: style.textX + 3 + j * 7,
y: style.textY - 10,
r: 3,
color: legend.getColor(series[data.seriesIndex[j]].name)
},
hoverable: false
}));
}
}
queryTarget.push(defaultOption);
value = data.value;
} else {
data = '-';
seriesName = '';
queryTarget = [];
for (var key in mapSeries) {
queryTarget.push(series[key]);
}
queryTarget.push(defaultOption);
value = '-';
}
color = dataRange && !isNaN(value) ? dataRange.getColor(value) : null;
style.color = style.color || color || this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), data.seriesIndex, -1, data) || this.deepQuery(queryTarget, 'itemStyle.normal.areaStyle.color');
style.strokeColor = style.strokeColor || this.deepQuery(queryTarget, 'itemStyle.normal.borderColor');
style.lineWidth = style.lineWidth || this.deepQuery(queryTarget, 'itemStyle.normal.borderWidth');
highlightStyle.color = this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.emphasis.color'), data.seriesIndex, -1, data) || this.deepQuery(queryTarget, 'itemStyle.emphasis.areaStyle.color') || style.color;
highlightStyle.strokeColor = this.deepQuery(queryTarget, 'itemStyle.emphasis.borderColor') || style.strokeColor;
highlightStyle.lineWidth = this.deepQuery(queryTarget, 'itemStyle.emphasis.borderWidth') || style.lineWidth;
style.brushType = highlightStyle.brushType = style.brushType || 'both';
style.lineJoin = highlightStyle.lineJoin = 'round';
style._name = highlightStyle._name = name;
font = this.deepQuery(queryTarget, 'itemStyle.normal.label.textStyle');
textShape = {
zlevel: this._zlevelBase + 1,
position: zrUtil.clone(style.position),
_mapType: mapType,
_geo: this.pos2geo(mapType, [
style.textX,
style.textY
]),
style: {
brushType: 'fill',
x: style.textX,
y: style.textY,
text: this.getLabelText(name, value, queryTarget, 'normal'),
_name: name,
textAlign: 'center',
color: this.deepQuery(queryTarget, 'itemStyle.normal.label.show') ? this.deepQuery(queryTarget, 'itemStyle.normal.label.textStyle.color') : 'rgba(0,0,0,0)',
textFont: this.getFont(font)
}
};
textShape._style = zrUtil.clone(textShape.style);
textShape.highlightStyle = zrUtil.clone(textShape.style);
if (this.deepQuery(queryTarget, 'itemStyle.emphasis.label.show')) {
textShape.highlightStyle.text = this.getLabelText(name, value, queryTarget, 'emphasis');
textShape.highlightStyle.color = this.deepQuery(queryTarget, 'itemStyle.emphasis.label.textStyle.color') || textShape.style.color;
font = this.deepQuery(queryTarget, 'itemStyle.emphasis.label.textStyle') || font;
textShape.highlightStyle.textFont = this.getFont(font);
} else {
textShape.highlightStyle.color = 'rgba(0,0,0,0)';
}
shape = {
zlevel: this._zlevelBase,
position: zrUtil.clone(style.position),
style: style,
highlightStyle: highlightStyle,
_style: zrUtil.clone(style),
_mapType: mapType
};
if (style.scale != null) {
shape.scale = zrUtil.clone(style.scale);
}
textShape = new TextShape(textShape);
switch (shape.style.shapeType) {
case 'rectangle':
shape = new RectangleShape(shape);
break;
case 'line':
shape = new LineShape(shape);
break;
case 'circle':
shape = new CircleShape(shape);
break;
case 'polygon':
shape = new PolygonShape(shape);
break;
case 'ellipse':
shape = new EllipseShape(shape);
break;
default:
shape = new PathShape(shape);
if (shape.buildPathArray) {
shape.style.pathArray = shape.buildPathArray(shape.style.path);
}
break;
}
if (this._selectedMode[mapType] && this._selected[name] || data.selected && this._selected[name] !== false) {
textShape.style = textShape.highlightStyle;
shape.style = shape.highlightStyle;
}
textShape.clickable = shape.clickable = this._clickable[mapType] && (data.clickable == null || data.clickable);
if (this._selectedMode[mapType]) {
this._selected[name] = this._selected[name] != null ? this._selected[name] : data.selected;
this._mapTypeMap[name] = mapType;
if (data.selectable == null || data.selectable) {
shape.clickable = textShape.clickable = true;
shape.onclick = textShape.onclick = this.shapeHandler.onclick;
}
}
if (this._hoverable[mapType] && (data.hoverable == null || data.hoverable)) {
textShape.hoverable = shape.hoverable = true;
shape.hoverConnect = textShape.id;
textShape.hoverConnect = shape.id;
} else {
textShape.hoverable = shape.hoverable = false;
}
ecData.pack(textShape, {
name: seriesName,
tooltip: this.deepQuery(queryTarget, 'tooltip')
}, 0, data, 0, name);
this.shapeList.push(textShape);
ecData.pack(shape, {
name: seriesName,
tooltip: this.deepQuery(queryTarget, 'tooltip')
}, 0, data, 0, name);
this.shapeList.push(shape);
}
},
_buildMark: function (mapType, mapSeries) {
this._seriesIndexToMapType = this._seriesIndexToMapType || {};
this.markAttachStyle = this.markAttachStyle || {};
var position = [
this._mapDataMap[mapType].transform.left,
this._mapDataMap[mapType].transform.top
];
if (mapType == 'none') {
position = [
0,
0
];
}
for (var sIdx in mapSeries) {
this._seriesIndexToMapType[sIdx] = mapType;
this.markAttachStyle[sIdx] = {
position: position,
_mapType: mapType
};
this.buildMark(sIdx);
}
},
getMarkCoord: function (seriesIndex, mpData) {
return mpData.geoCoord || _geoCoord[mpData.name] ? this.geo2pos(this._seriesIndexToMapType[seriesIndex], mpData.geoCoord || _geoCoord[mpData.name]) : [
0,
0
];
},
getMarkGeo: function (mpData) {
return mpData.geoCoord || _geoCoord[mpData.name];
},
_nameChange: function (mapType, name) {
return this._nameMap[mapType][name] || name;
},
getLabelText: function (name, value, queryTarget, status) {
var formatter = this.deepQuery(queryTarget, 'itemStyle.' + status + '.label.formatter');
if (formatter) {
if (typeof formatter == 'function') {
return formatter.call(this.myChart, name, value);
} else if (typeof formatter == 'string') {
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}');
formatter = formatter.replace('{a0}', name).replace('{b0}', value);
return formatter;
}
} else {
return name;
}
},
_findMapTypeByPos: function (mx, my) {
var transform;
var left;
var top;
var width;
var height;
for (var mapType in this._mapDataMap) {
transform = this._mapDataMap[mapType].transform;
if (!transform || !this._roamMap[mapType] || !this._activeMapType[mapType]) {
continue;
}
left = transform.left;
top = transform.top;
width = transform.width;
height = transform.height;
if (mx >= left && mx <= left + width && my >= top && my <= top + height) {
return mapType;
}
}
return;
},
__onmousewheel: function (params) {
if (this.shapeList.length <= 0) {
return;
}
var event = params.event;
var mx = zrEvent.getX(event);
var my = zrEvent.getY(event);
var delta;
var eventDelta = zrEvent.getDelta(event);
var mapType;
var mapTypeControl = params.mapTypeControl;
if (!mapTypeControl) {
mapTypeControl = {};
mapType = this._findMapTypeByPos(mx, my);
if (mapType && this._roamMap[mapType] && this._roamMap[mapType] != 'move') {
mapTypeControl[mapType] = true;
}
}
var haveScale = false;
for (mapType in mapTypeControl) {
if (mapTypeControl[mapType]) {
haveScale = true;
var transform = this._mapDataMap[mapType].transform;
var left = transform.left;
var top = transform.top;
var width = transform.width;
var height = transform.height;
var geoAndPos = this.pos2geo(mapType, [
mx - left,
my - top
]);
if (eventDelta > 0) {
delta = 1.2;
if (this._scaleLimitMap[mapType].max != null && transform.baseScale >= this._scaleLimitMap[mapType].max) {
continue;
}
} else {
delta = 1 / 1.2;
if (this._scaleLimitMap[mapType].min != null && transform.baseScale <= this._scaleLimitMap[mapType].min) {
continue;
}
}
transform.baseScale *= delta;
transform.scale.x *= delta;
transform.scale.y *= delta;
transform.width = width * delta;
transform.height = height * delta;
this._mapDataMap[mapType].hasRoam = true;
this._mapDataMap[mapType].transform = transform;
geoAndPos = this.geo2pos(mapType, geoAndPos);
transform.left -= geoAndPos[0] - (mx - left);
transform.top -= geoAndPos[1] - (my - top);
this._mapDataMap[mapType].transform = transform;
this.clearEffectShape(true);
for (var i = 0, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i]._mapType == mapType) {
this.shapeList[i].position[0] = transform.left;
this.shapeList[i].position[1] = transform.top;
if (this.shapeList[i].type == 'path' || this.shapeList[i].type == 'symbol' || this.shapeList[i].type == 'circle' || this.shapeList[i].type == 'rectangle' || this.shapeList[i].type == 'polygon' || this.shapeList[i].type == 'line' || this.shapeList[i].type == 'ellipse') {
this.shapeList[i].scale[0] *= delta;
this.shapeList[i].scale[1] *= delta;
} else if (this.shapeList[i].type == 'mark-line') {
this.shapeList[i].style.pointListLength = undefined;
this.shapeList[i].style.pointList = false;
geoAndPos = this.geo2pos(mapType, this.shapeList[i]._geo[0]);
this.shapeList[i].style.xStart = geoAndPos[0];
this.shapeList[i].style.yStart = geoAndPos[1];
geoAndPos = this.geo2pos(mapType, this.shapeList[i]._geo[1]);
this.shapeList[i]._x = this.shapeList[i].style.xEnd = geoAndPos[0];
this.shapeList[i]._y = this.shapeList[i].style.yEnd = geoAndPos[1];
} else if (this.shapeList[i].type == 'icon') {
geoAndPos = this.geo2pos(mapType, this.shapeList[i]._geo);
this.shapeList[i].style.x = this.shapeList[i].style._x = geoAndPos[0] - this.shapeList[i].style.width / 2;
this.shapeList[i].style.y = this.shapeList[i].style._y = geoAndPos[1] - this.shapeList[i].style.height / 2;
} else {
geoAndPos = this.geo2pos(mapType, this.shapeList[i]._geo);
this.shapeList[i].style.x = geoAndPos[0];
this.shapeList[i].style.y = geoAndPos[1];
if (this.shapeList[i].type == 'text') {
this.shapeList[i]._style.x = this.shapeList[i].highlightStyle.x = geoAndPos[0];
this.shapeList[i]._style.y = this.shapeList[i].highlightStyle.y = geoAndPos[1];
}
}
this.zr.modShape(this.shapeList[i].id);
}
}
}
}
if (haveScale) {
zrEvent.stop(event);
this.zr.refresh();
var self = this;
clearTimeout(this._refreshDelayTicket);
this._refreshDelayTicket = setTimeout(function () {
self && self.shapeList && self.animationEffect();
}, 100);
this.messageCenter.dispatch(ecConfig.EVENT.MAP_ROAM, params.event, { type: 'scale' }, this.myChart);
}
},
__onmousedown: function (params) {
if (this.shapeList.length <= 0) {
return;
}
var target = params.target;
if (target && target.draggable) {
return;
}
var event = params.event;
var mx = zrEvent.getX(event);
var my = zrEvent.getY(event);
var mapType = this._findMapTypeByPos(mx, my);
if (mapType && this._roamMap[mapType] && this._roamMap[mapType] != 'scale') {
this._mousedown = true;
this._mx = mx;
this._my = my;
this._curMapType = mapType;
this.zr.on(zrConfig.EVENT.MOUSEUP, this._onmouseup);
var self = this;
setTimeout(function () {
self.zr.on(zrConfig.EVENT.MOUSEMOVE, self._onmousemove);
}, 100);
}
},
__onmousemove: function (params) {
if (!this._mousedown || !this._isAlive) {
return;
}
var event = params.event;
var mx = zrEvent.getX(event);
var my = zrEvent.getY(event);
var transform = this._mapDataMap[this._curMapType].transform;
transform.hasRoam = true;
transform.left -= this._mx - mx;
transform.top -= this._my - my;
this._mx = mx;
this._my = my;
this._mapDataMap[this._curMapType].transform = transform;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
if (this.shapeList[i]._mapType == this._curMapType) {
this.shapeList[i].position[0] = transform.left;
this.shapeList[i].position[1] = transform.top;
this.zr.modShape(this.shapeList[i].id);
}
}
this.messageCenter.dispatch(ecConfig.EVENT.MAP_ROAM, params.event, { type: 'move' }, this.myChart);
this.clearEffectShape(true);
this.zr.refresh();
this._justMove = true;
zrEvent.stop(event);
},
__onmouseup: function (params) {
var event = params.event;
this._mx = zrEvent.getX(event);
this._my = zrEvent.getY(event);
this._mousedown = false;
var self = this;
setTimeout(function () {
self._justMove && self.animationEffect();
self._justMove = false;
self.zr.un(zrConfig.EVENT.MOUSEMOVE, self._onmousemove);
self.zr.un(zrConfig.EVENT.MOUSEUP, self._onmouseup);
}, 120);
},
__onroamcontroller: function (params) {
var event = params.event;
event.zrenderX = this.zr.getWidth() / 2;
event.zrenderY = this.zr.getHeight() / 2;
var mapTypeControl = params.mapTypeControl;
var top = 0;
var left = 0;
var step = params.step;
switch (params.roamType) {
case 'scaleUp':
event.zrenderDelta = 1;
this.__onmousewheel({
event: event,
mapTypeControl: mapTypeControl
});
return;
case 'scaleDown':
event.zrenderDelta = -1;
this.__onmousewheel({
event: event,
mapTypeControl: mapTypeControl
});
return;
case 'up':
top = -step;
break;
case 'down':
top = step;
break;
case 'left':
left = -step;
break;
case 'right':
left = step;
break;
}
var transform;
var curMapType;
for (curMapType in mapTypeControl) {
if (!this._mapDataMap[curMapType] || !this._activeMapType[curMapType]) {
continue;
}
transform = this._mapDataMap[curMapType].transform;
transform.hasRoam = true;
transform.left -= left;
transform.top -= top;
this._mapDataMap[curMapType].transform = transform;
}
for (var i = 0, l = this.shapeList.length; i < l; i++) {
curMapType = this.shapeList[i]._mapType;
if (!mapTypeControl[curMapType] || !this._activeMapType[curMapType]) {
continue;
}
transform = this._mapDataMap[curMapType].transform;
this.shapeList[i].position[0] = transform.left;
this.shapeList[i].position[1] = transform.top;
this.zr.modShape(this.shapeList[i].id);
}
this.messageCenter.dispatch(ecConfig.EVENT.MAP_ROAM, params.event, { type: 'move' }, this.myChart);
this.clearEffectShape(true);
this.zr.refresh();
clearTimeout(this.dircetionTimer);
var self = this;
this.dircetionTimer = setTimeout(function () {
self.animationEffect();
}, 150);
},
__ondrhoverlink: function (param) {
var curMapType;
var value;
for (var i = 0, l = this.shapeList.length; i < l; i++) {
curMapType = this.shapeList[i]._mapType;
if (!this._hoverLinkMap[curMapType] || !this._activeMapType[curMapType]) {
continue;
}
value = ecData.get(this.shapeList[i], 'value');
if (value != null && value >= param.valueMin && value <= param.valueMax) {
this.zr.addHoverShape(this.shapeList[i]);
}
}
},
onclick: function (params) {
if (!this.isClick || !params.target || this._justMove || params.target.type == 'icon') {
return;
}
this.isClick = false;
var target = params.target;
var name = target.style._name;
var len = this.shapeList.length;
var mapType = target._mapType || '';
if (this._selectedMode[mapType] == 'single') {
for (var p in this._selected) {
if (this._selected[p] && this._mapTypeMap[p] == mapType) {
for (var i = 0; i < len; i++) {
if (this.shapeList[i].style._name == p && this.shapeList[i]._mapType == mapType) {
this.shapeList[i].style = this.shapeList[i]._style;
this.zr.modShape(this.shapeList[i].id);
}
}
p != name && (this._selected[p] = false);
}
}
}
this._selected[name] = !this._selected[name];
for (var i = 0; i < len; i++) {
if (this.shapeList[i].style._name == name && this.shapeList[i]._mapType == mapType) {
if (this._selected[name]) {
this.shapeList[i].style = this.shapeList[i].highlightStyle;
} else {
this.shapeList[i].style = this.shapeList[i]._style;
}
this.zr.modShape(this.shapeList[i].id);
}
}
this.messageCenter.dispatch(ecConfig.EVENT.MAP_SELECTED, params.event, {
selected: this._selected,
target: name
}, this.myChart);
this.zr.refresh();
var self = this;
setTimeout(function () {
self.zr.trigger(zrConfig.EVENT.MOUSEMOVE, params.event);
}, 100);
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
if (this._mapDataRequireCounter > 0) {
this.clear();
} else {
this.backupShapeList();
}
this._buildShape();
this.zr.refreshHover();
},
ondataRange: function (param, status) {
if (this.component.dataRange) {
this.refresh();
status.needRefresh = true;
}
return;
},
pos2geo: function (mapType, p) {
if (!this._mapDataMap[mapType].transform) {
return null;
}
return this._mapDataMap[mapType].projection.pos2geo(this._mapDataMap[mapType].transform, p);
},
getGeoByPos: function (mapType, p) {
if (!this._mapDataMap[mapType].transform) {
return null;
}
var position = [
this._mapDataMap[mapType].transform.left,
this._mapDataMap[mapType].transform.top
];
if (p instanceof Array) {
p[0] -= position[0];
p[1] -= position[1];
} else {
p.x -= position[0];
p.y -= position[1];
}
return this.pos2geo(mapType, p);
},
geo2pos: function (mapType, p) {
if (!this._mapDataMap[mapType].transform) {
return null;
}
return this._mapDataMap[mapType].projection.geo2pos(this._mapDataMap[mapType].transform, p);
},
getPosByGeo: function (mapType, p) {
if (!this._mapDataMap[mapType].transform) {
return null;
}
var pos = this.geo2pos(mapType, p);
pos[0] += this._mapDataMap[mapType].transform.left;
pos[1] += this._mapDataMap[mapType].transform.top;
return pos;
},
getMapPosition: function (mapType) {
if (!this._mapDataMap[mapType].transform) {
return null;
}
return [
this._mapDataMap[mapType].transform.left,
this._mapDataMap[mapType].transform.top
];
},
onbeforDispose: function () {
this._isAlive = false;
this.zr.un(zrConfig.EVENT.MOUSEWHEEL, this._onmousewheel);
this.zr.un(zrConfig.EVENT.MOUSEDOWN, this._onmousedown);
this.messageCenter.unbind(ecConfig.EVENT.ROAMCONTROLLER, this._onroamcontroller);
this.messageCenter.unbind(ecConfig.EVENT.DATA_RANGE_HOVERLINK, this._ondrhoverlink);
}
};
zrUtil.inherits(Map, ChartBase);
zrUtil.inherits(Map, ComponentBase);
require('../chart').define('map', Map);
return Map;
});define('zrender/shape/Path', [
'require',
'./Base',
'./util/PathProxy',
'../tool/util'
], function (require) {
var Base = require('./Base');
var PathProxy = require('./util/PathProxy');
var PathSegment = PathProxy.PathSegment;
var vMag = function (v) {
return Math.sqrt(v[0] * v[0] + v[1] * v[1]);
};
var vRatio = function (u, v) {
return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));
};
var vAngle = function (u, v) {
return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));
};
var Path = function (options) {
Base.call(this, options);
};
Path.prototype = {
type: 'path',
buildPathArray: function (data, x, y) {
if (!data) {
return [];
}
x = x || 0;
y = y || 0;
var cs = data;
var cc = [
'm',
'M',
'l',
'L',
'v',
'V',
'h',
'H',
'z',
'Z',
'c',
'C',
'q',
'Q',
't',
'T',
's',
'S',
'a',
'A'
];
cs = cs.replace(/-/g, ' -');
cs = cs.replace(/ /g, ' ');
cs = cs.replace(/ /g, ',');
cs = cs.replace(/,,/g, ',');
var n;
for (n = 0; n < cc.length; n++) {
cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);
}
var arr = cs.split('|');
var ca = [];
var cpx = 0;
var cpy = 0;
for (n = 1; n < arr.length; n++) {
var str = arr[n];
var c = str.charAt(0);
str = str.slice(1);
str = str.replace(new RegExp('e,-', 'g'), 'e-');
var p = str.split(',');
if (p.length > 0 && p[0] === '') {
p.shift();
}
for (var i = 0; i < p.length; i++) {
p[i] = parseFloat(p[i]);
}
while (p.length > 0) {
if (isNaN(p[0])) {
break;
}
var cmd = null;
var points = [];
var ctlPtx;
var ctlPty;
var prevCmd;
var rx;
var ry;
var psi;
var fa;
var fs;
var x1 = cpx;
var y1 = cpy;
switch (c) {
case 'l':
cpx += p.shift();
cpy += p.shift();
cmd = 'L';
points.push(cpx, cpy);
break;
case 'L':
cpx = p.shift();
cpy = p.shift();
points.push(cpx, cpy);
break;
case 'm':
cpx += p.shift();
cpy += p.shift();
cmd = 'M';
points.push(cpx, cpy);
c = 'l';
break;
case 'M':
cpx = p.shift();
cpy = p.shift();
cmd = 'M';
points.push(cpx, cpy);
c = 'L';
break;
case 'h':
cpx += p.shift();
cmd = 'L';
points.push(cpx, cpy);
break;
case 'H':
cpx = p.shift();
cmd = 'L';
points.push(cpx, cpy);
break;
case 'v':
cpy += p.shift();
cmd = 'L';
points.push(cpx, cpy);
break;
case 'V':
cpy = p.shift();
cmd = 'L';
points.push(cpx, cpy);
break;
case 'C':
points.push(p.shift(), p.shift(), p.shift(), p.shift());
cpx = p.shift();
cpy = p.shift();
points.push(cpx, cpy);
break;
case 'c':
points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());
cpx += p.shift();
cpy += p.shift();
cmd = 'C';
points.push(cpx, cpy);
break;
case 'S':
ctlPtx = cpx;
ctlPty = cpy;
prevCmd = ca[ca.length - 1];
if (prevCmd.command === 'C') {
ctlPtx = cpx + (cpx - prevCmd.points[2]);
ctlPty = cpy + (cpy - prevCmd.points[3]);
}
points.push(ctlPtx, ctlPty, p.shift(), p.shift());
cpx = p.shift();
cpy = p.shift();
cmd = 'C';
points.push(cpx, cpy);
break;
case 's':
ctlPtx = cpx, ctlPty = cpy;
prevCmd = ca[ca.length - 1];
if (prevCmd.command === 'C') {
ctlPtx = cpx + (cpx - prevCmd.points[2]);
ctlPty = cpy + (cpy - prevCmd.points[3]);
}
points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());
cpx += p.shift();
cpy += p.shift();
cmd = 'C';
points.push(cpx, cpy);
break;
case 'Q':
points.push(p.shift(), p.shift());
cpx = p.shift();
cpy = p.shift();
points.push(cpx, cpy);
break;
case 'q':
points.push(cpx + p.shift(), cpy + p.shift());
cpx += p.shift();
cpy += p.shift();
cmd = 'Q';
points.push(cpx, cpy);
break;
case 'T':
ctlPtx = cpx, ctlPty = cpy;
prevCmd = ca[ca.length - 1];
if (prevCmd.command === 'Q') {
ctlPtx = cpx + (cpx - prevCmd.points[0]);
ctlPty = cpy + (cpy - prevCmd.points[1]);
}
cpx = p.shift();
cpy = p.shift();
cmd = 'Q';
points.push(ctlPtx, ctlPty, cpx, cpy);
break;
case 't':
ctlPtx = cpx, ctlPty = cpy;
prevCmd = ca[ca.length - 1];
if (prevCmd.command === 'Q') {
ctlPtx = cpx + (cpx - prevCmd.points[0]);
ctlPty = cpy + (cpy - prevCmd.points[1]);
}
cpx += p.shift();
cpy += p.shift();
cmd = 'Q';
points.push(ctlPtx, ctlPty, cpx, cpy);
break;
case 'A':
rx = p.shift();
ry = p.shift();
psi = p.shift();
fa = p.shift();
fs = p.shift();
x1 = cpx, y1 = cpy;
cpx = p.shift(), cpy = p.shift();
cmd = 'A';
points = this._convertPoint(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);
break;
case 'a':
rx = p.shift();
ry = p.shift();
psi = p.shift();
fa = p.shift();
fs = p.shift();
x1 = cpx, y1 = cpy;
cpx += p.shift();
cpy += p.shift();
cmd = 'A';
points = this._convertPoint(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);
break;
}
for (var j = 0, l = points.length; j < l; j += 2) {
points[j] += x;
points[j + 1] += y;
}
ca.push(new PathSegment(cmd || c, points));
}
if (c === 'z' || c === 'Z') {
ca.push(new PathSegment('z', []));
}
}
return ca;
},
_convertPoint: function (x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {
var psi = psiDeg * (Math.PI / 180);
var xp = Math.cos(psi) * (x1 - x2) / 2 + Math.sin(psi) * (y1 - y2) / 2;
var yp = -1 * Math.sin(psi) * (x1 - x2) / 2 + Math.cos(psi) * (y1 - y2) / 2;
var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);
if (lambda > 1) {
rx *= Math.sqrt(lambda);
ry *= Math.sqrt(lambda);
}
var f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp)));
if (fa === fs) {
f *= -1;
}
if (isNaN(f)) {
f = 0;
}
var cxp = f * rx * yp / ry;
var cyp = f * -ry * xp / rx;
var cx = (x1 + x2) / 2 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;
var cy = (y1 + y2) / 2 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;
var theta = vAngle([
1,
0
], [
(xp - cxp) / rx,
(yp - cyp) / ry
]);
var u = [
(xp - cxp) / rx,
(yp - cyp) / ry
];
var v = [
(-1 * xp - cxp) / rx,
(-1 * yp - cyp) / ry
];
var dTheta = vAngle(u, v);
if (vRatio(u, v) <= -1) {
dTheta = Math.PI;
}
if (vRatio(u, v) >= 1) {
dTheta = 0;
}
if (fs === 0 && dTheta > 0) {
dTheta = dTheta - 2 * Math.PI;
}
if (fs === 1 && dTheta < 0) {
dTheta = dTheta + 2 * Math.PI;
}
return [
cx,
cy,
rx,
ry,
theta,
dTheta,
psi,
fs
];
},
buildPath: function (ctx, style) {
var path = style.path;
var x = style.x || 0;
var y = style.y || 0;
style.pathArray = style.pathArray || this.buildPathArray(path, x, y);
var pathArray = style.pathArray;
var pointList = style.pointList = [];
var singlePointList = [];
for (var i = 0, l = pathArray.length; i < l; i++) {
if (pathArray[i].command.toUpperCase() == 'M') {
singlePointList.length > 0 && pointList.push(singlePointList);
singlePointList = [];
}
var p = pathArray[i].points;
for (var j = 0, k = p.length; j < k; j += 2) {
singlePointList.push([
p[j],
p[j + 1]
]);
}
}
singlePointList.length > 0 && pointList.push(singlePointList);
for (var i = 0, l = pathArray.length; i < l; i++) {
var c = pathArray[i].command;
var p = pathArray[i].points;
switch (c) {
case 'L':
ctx.lineTo(p[0], p[1]);
break;
case 'M':
ctx.moveTo(p[0], p[1]);
break;
case 'C':
ctx.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);
break;
case 'Q':
ctx.quadraticCurveTo(p[0], p[1], p[2], p[3]);
break;
case 'A':
var cx = p[0];
var cy = p[1];
var rx = p[2];
var ry = p[3];
var theta = p[4];
var dTheta = p[5];
var psi = p[6];
var fs = p[7];
var r = rx > ry ? rx : ry;
var scaleX = rx > ry ? 1 : rx / ry;
var scaleY = rx > ry ? ry / rx : 1;
ctx.translate(cx, cy);
ctx.rotate(psi);
ctx.scale(scaleX, scaleY);
ctx.arc(0, 0, r, theta, theta + dTheta, 1 - fs);
ctx.scale(1 / scaleX, 1 / scaleY);
ctx.rotate(-psi);
ctx.translate(-cx, -cy);
break;
case 'z':
ctx.closePath();
break;
}
}
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
var minX = Number.MAX_VALUE;
var maxX = Number.MIN_VALUE;
var minY = Number.MAX_VALUE;
var maxY = Number.MIN_VALUE;
var x = style.x || 0;
var y = style.y || 0;
var pathArray = style.pathArray || this.buildPathArray(style.path);
for (var i = 0; i < pathArray.length; i++) {
var p = pathArray[i].points;
for (var j = 0; j < p.length; j++) {
if (j % 2 === 0) {
if (p[j] + x < minX) {
minX = p[j];
}
if (p[j] + x > maxX) {
maxX = p[j];
}
} else {
if (p[j] + y < minY) {
minY = p[j];
}
if (p[j] + y > maxY) {
maxY = p[j];
}
}
}
}
var rect;
if (minX === Number.MAX_VALUE || maxX === Number.MIN_VALUE || minY === Number.MAX_VALUE || maxY === Number.MIN_VALUE) {
rect = {
x: 0,
y: 0,
width: 0,
height: 0
};
} else {
rect = {
x: Math.round(minX - lineWidth / 2),
y: Math.round(minY - lineWidth / 2),
width: maxX - minX + lineWidth,
height: maxY - minY + lineWidth
};
}
style.__rect = rect;
return rect;
}
};
require('../tool/util').inherits(Path, Base);
return Path;
});define('zrender/shape/Ellipse', [
'require',
'./Base',
'../tool/util'
], function (require) {
var Base = require('./Base');
var Ellipse = function (options) {
Base.call(this, options);
};
Ellipse.prototype = {
type: 'ellipse',
buildPath: function (ctx, style) {
var k = 0.5522848;
var x = style.x;
var y = style.y;
var a = style.a;
var b = style.b;
var ox = a * k;
var oy = b * k;
ctx.moveTo(x - a, y);
ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);
ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);
ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);
ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);
ctx.closePath();
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var lineWidth;
if (style.brushType == 'stroke' || style.brushType == 'fill') {
lineWidth = style.lineWidth || 1;
} else {
lineWidth = 0;
}
style.__rect = {
x: Math.round(style.x - style.a - lineWidth / 2),
y: Math.round(style.y - style.b - lineWidth / 2),
width: style.a * 2 + lineWidth,
height: style.b * 2 + lineWidth
};
return style.__rect;
}
};
require('../tool/util').inherits(Ellipse, Base);
return Ellipse;
});define('echarts/component/roamController', [
'require',
'./base',
'zrender/shape/Rectangle',
'zrender/shape/Sector',
'zrender/shape/Circle',
'../config',
'zrender/tool/util',
'zrender/tool/color',
'zrender/tool/event',
'../component'
], function (require) {
var Base = require('./base');
var RectangleShape = require('zrender/shape/Rectangle');
var SectorShape = require('zrender/shape/Sector');
var CircleShape = require('zrender/shape/Circle');
var ecConfig = require('../config');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
var zrEvent = require('zrender/tool/event');
function RoamController(ecTheme, messageCenter, zr, option, myChart) {
if (!option.roamController || !option.roamController.show) {
return;
}
if (!option.roamController.mapTypeControl) {
console.error('option.roamController.mapTypeControl has not been defined.');
return;
}
Base.call(this, ecTheme, messageCenter, zr, option, myChart);
this.rcOption = option.roamController;
var self = this;
this._drictionMouseDown = function (params) {
return self.__drictionMouseDown(params);
};
this._drictionMouseUp = function (params) {
return self.__drictionMouseUp(params);
};
this._drictionMouseMove = function (params) {
return self.__drictionMouseMove(params);
};
this._drictionMouseOut = function (params) {
return self.__drictionMouseOut(params);
};
this._scaleHandler = function (params) {
return self.__scaleHandler(params);
};
this.refresh(option);
}
RoamController.prototype = {
type: ecConfig.COMPONENT_TYPE_ROAMCONTROLLER,
_buildShape: function () {
if (!this.rcOption.show) {
return;
}
this._itemGroupLocation = this._getItemGroupLocation();
this._buildBackground();
this._buildItem();
for (var i = 0, l = this.shapeList.length; i < l; i++) {
this.zr.addShape(this.shapeList[i]);
}
},
_buildItem: function () {
this.shapeList.push(this._getDirectionShape('up'));
this.shapeList.push(this._getDirectionShape('down'));
this.shapeList.push(this._getDirectionShape('left'));
this.shapeList.push(this._getDirectionShape('right'));
this.shapeList.push(this._getScaleShape('scaleUp'));
this.shapeList.push(this._getScaleShape('scaleDown'));
},
_getDirectionShape: function (direction) {
var r = this._itemGroupLocation.r;
var x = this._itemGroupLocation.x + r;
var y = this._itemGroupLocation.y + r;
var sectorShape = {
zlevel: this._zlevelBase,
style: {
x: x,
y: y,
r: r,
startAngle: -45,
endAngle: 45,
color: this.rcOption.handleColor,
text: '>',
textX: x + r / 2 + 4,
textY: y - 0.5,
textAlign: 'center',
textBaseline: 'middle',
textPosition: 'specific',
textColor: this.rcOption.fillerColor,
textFont: Math.floor(r / 2) + 'px arial'
},
highlightStyle: {
color: zrColor.lift(this.rcOption.handleColor, -0.2),
brushType: 'fill'
},
clickable: true
};
switch (direction) {
case 'up':
sectorShape.rotation = [
Math.PI / 2,
x,
y
];
break;
case 'left':
sectorShape.rotation = [
Math.PI,
x,
y
];
break;
case 'down':
sectorShape.rotation = [
-Math.PI / 2,
x,
y
];
break;
}
sectorShape = new SectorShape(sectorShape);
sectorShape._roamType = direction;
sectorShape.onmousedown = this._drictionMouseDown;
sectorShape.onmouseup = this._drictionMouseUp;
sectorShape.onmousemove = this._drictionMouseMove;
sectorShape.onmouseout = this._drictionMouseOut;
return sectorShape;
},
_getScaleShape: function (text) {
var width = this._itemGroupLocation.width;
var height = this._itemGroupLocation.height - width;
height = height < 0 ? 20 : height;
var r = Math.min(width / 2 - 5, height) / 2;
var x = this._itemGroupLocation.x + (text === 'scaleDown' ? width - r : r);
var y = this._itemGroupLocation.y + this._itemGroupLocation.height - r;
var scaleShape = {
zlevel: this._zlevelBase,
style: {
x: x,
y: y,
r: r,
color: this.rcOption.handleColor,
text: text === 'scaleDown' ? '-' : '+',
textX: x,
textY: y - 2,
textAlign: 'center',
textBaseline: 'middle',
textPosition: 'specific',
textColor: this.rcOption.fillerColor,
textFont: Math.floor(r) + 'px verdana'
},
highlightStyle: {
color: zrColor.lift(this.rcOption.handleColor, -0.2),
brushType: 'fill'
},
clickable: true
};
scaleShape = new CircleShape(scaleShape);
scaleShape._roamType = text;
scaleShape.onmousedown = this._scaleHandler;
return scaleShape;
},
_buildBackground: function () {
var padding = this.reformCssArray(this.rcOption.padding);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: this._itemGroupLocation.x - padding[3],
y: this._itemGroupLocation.y - padding[0],
width: this._itemGroupLocation.width + padding[3] + padding[1],
height: this._itemGroupLocation.height + padding[0] + padding[2],
brushType: this.rcOption.borderWidth === 0 ? 'fill' : 'both',
color: this.rcOption.backgroundColor,
strokeColor: this.rcOption.borderColor,
lineWidth: this.rcOption.borderWidth
}
}));
},
_getItemGroupLocation: function () {
var padding = this.reformCssArray(this.rcOption.padding);
var width = this.rcOption.width;
var height = this.rcOption.height;
var zrWidth = this.zr.getWidth();
var zrHeight = this.zr.getHeight();
var x;
switch (this.rcOption.x) {
case 'center':
x = Math.floor((zrWidth - width) / 2);
break;
case 'left':
x = padding[3] + this.rcOption.borderWidth;
break;
case 'right':
x = zrWidth - width - padding[1] - padding[3] - this.rcOption.borderWidth * 2;
break;
default:
x = this.parsePercent(this.rcOption.x, zrWidth);
break;
}
var y;
switch (this.rcOption.y) {
case 'top':
y = padding[0] + this.rcOption.borderWidth;
break;
case 'bottom':
y = zrHeight - height - padding[0] - padding[2] - this.rcOption.borderWidth * 2;
break;
case 'center':
y = Math.floor((zrHeight - height) / 2);
break;
default:
y = this.parsePercent(this.rcOption.y, zrHeight);
break;
}
return {
x: x,
y: y,
r: width / 2,
width: width,
height: height
};
},
__drictionMouseDown: function (params) {
this.mousedown = true;
this._drictionHandlerOn(params);
},
__drictionMouseUp: function (params) {
this.mousedown = false;
this._drictionHandlerOff(params);
},
__drictionMouseMove: function (params) {
if (this.mousedown) {
this._drictionHandlerOn(params);
}
},
__drictionMouseOut: function (params) {
this._drictionHandlerOff(params);
},
_drictionHandlerOn: function (params) {
this._dispatchEvent(params.event, params.target._roamType);
clearInterval(this.dircetionTimer);
var self = this;
this.dircetionTimer = setInterval(function () {
self._dispatchEvent(params.event, params.target._roamType);
}, 100);
zrEvent.stop(params.event);
},
_drictionHandlerOff: function (params) {
clearInterval(this.dircetionTimer);
},
__scaleHandler: function (params) {
this._dispatchEvent(params.event, params.target._roamType);
zrEvent.stop(params.event);
},
_dispatchEvent: function (event, roamType) {
this.messageCenter.dispatch(ecConfig.EVENT.ROAMCONTROLLER, event, {
roamType: roamType,
mapTypeControl: this.rcOption.mapTypeControl,
step: this.rcOption.step
}, this.myChart);
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption || this.option;
this.option.roamController = this.reformOption(this.option.roamController);
this.rcOption = this.option.roamController;
}
this.clear();
this._buildShape();
}
};
zrUtil.inherits(RoamController, Base);
require('../component').define('roamController', RoamController);
return RoamController;
});define('echarts/util/mapData/params', ['require'], function (require) {
function decode(json) {
if (!json.UTF8Encoding) {
return json;
}
var features = json.features;
for (var f = 0; f < features.length; f++) {
var feature = features[f];
var coordinates = feature.geometry.coordinates;
var encodeOffsets = feature.geometry.encodeOffsets;
for (var c = 0; c < coordinates.length; c++) {
var coordinate = coordinates[c];
if (feature.geometry.type === 'Polygon') {
coordinates[c] = decodePolygon(coordinate, encodeOffsets[c]);
} else if (feature.geometry.type === 'MultiPolygon') {
for (var c2 = 0; c2 < coordinate.length; c2++) {
var polygon = coordinate[c2];
coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2]);
}
}
}
}
json.UTF8Encoding = false;
return json;
}
function decodePolygon(coordinate, encodeOffsets) {
var result = [];
var prevX = encodeOffsets[0];
var prevY = encodeOffsets[1];
for (var i = 0; i < coordinate.length; i += 2) {
var x = coordinate.charCodeAt(i) - 64;
var y = coordinate.charCodeAt(i + 1) - 64;
x = x >> 1 ^ -(x & 1);
y = y >> 1 ^ -(y & 1);
x += prevX;
y += prevY;
prevX = x;
prevY = y;
result.push([
x / 1024,
y / 1024
]);
}
return result;
}
var mapParams = {
'none': {
getGeoJson: function (callback) {
callback({
type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {
coordinates: [],
encodeOffsets: [],
type: 'Polygon'
},
properties: {}
}]
});
}
},
'world': {
getGeoJson: function (callback) {
require(['./geoJson/world_geo'], function (md) {
callback(decode(md));
});
}
},
'china': {
getGeoJson: function (callback) {
require(['./geoJson/china_geo'], function (md) {
callback(decode(md));
});
}
},
'南海诸岛': {
textCoord: [
126,
25
],
getPath: function (leftTop, scale) {
var pList = [
[
[
0,
3.5
],
[
7,
11.2
],
[
15,
11.9
],
[
30,
7
],
[
42,
0.7
],
[
52,
0.7
],
[
56,
7.7
],
[
59,
0.7
],
[
64,
0.7
],
[
64,
0
],
[
5,
0
],
[
0,
3.5
]
],
[
[
13,
16.1
],
[
19,
14.7
],
[
16,
21.7
],
[
11,
23.1
],
[
13,
16.1
]
],
[
[
12,
32.2
],
[
14,
38.5
],
[
15,
38.5
],
[
13,
32.2
],
[
12,
32.2
]
],
[
[
16,
47.6
],
[
12,
53.2
],
[
13,
53.2
],
[
18,
47.6
],
[
16,
47.6
]
],
[
[
6,
64.4
],
[
8,
70
],
[
9,
70
],
[
8,
64.4
],
[
6,
64.4
]
],
[
[
23,
82.6
],
[
29,
79.8
],
[
30,
79.8
],
[
25,
82.6
],
[
23,
82.6
]
],
[
[
37,
70.7
],
[
43,
62.3
],
[
44,
62.3
],
[
39,
70.7
],
[
37,
70.7
]
],
[
[
48,
51.1
],
[
51,
45.5
],
[
53,
45.5
],
[
50,
51.1
],
[
48,
51.1
]
],
[
[
51,
35
],
[
51,
28.7
],
[
53,
28.7
],
[
53,
35
],
[
51,
35
]
],
[
[
52,
22.4
],
[
55,
17.5
],
[
56,
17.5
],
[
53,
22.4
],
[
52,
22.4
]
],
[
[
58,
12.6
],
[
62,
7
],
[
63,
7
],
[
60,
12.6
],
[
58,
12.6
]
],
[
[
0,
3.5
],
[
0,
93.1
],
[
64,
93.1
],
[
64,
0
],
[
63,
0
],
[
63,
92.4
],
[
1,
92.4
],
[
1,
3.5
],
[
0,
3.5
]
]
];
var str = '';
var left = leftTop[0];
var top = leftTop[1];
for (var i = 0, l = pList.length; i < l; i++) {
str += 'M ' + ((pList[i][0][0] * scale + left).toFixed(2) - 0) + ' ' + ((pList[i][0][1] * scale + top).toFixed(2) - 0) + ' ';
for (var j = 1, k = pList[i].length; j < k; j++) {
str += 'L ' + ((pList[i][j][0] * scale + left).toFixed(2) - 0) + ' ' + ((pList[i][j][1] * scale + top).toFixed(2) - 0) + ' ';
}
}
return str + ' Z';
}
},
'新疆': {
getGeoJson: function (callback) {
require(['./geoJson/xin_jiang_geo'], function (md) {
callback(decode(md));
});
}
},
'西藏': {
getGeoJson: function (callback) {
require(['./geoJson/xi_zang_geo'], function (md) {
callback(decode(md));
});
}
},
'内蒙古': {
getGeoJson: function (callback) {
require(['./geoJson/nei_meng_gu_geo'], function (md) {
callback(decode(md));
});
}
},
'青海': {
getGeoJson: function (callback) {
require(['./geoJson/qing_hai_geo'], function (md) {
callback(decode(md));
});
}
},
'四川': {
getGeoJson: function (callback) {
require(['./geoJson/si_chuan_geo'], function (md) {
callback(decode(md));
});
}
},
'黑龙江': {
getGeoJson: function (callback) {
require(['./geoJson/hei_long_jiang_geo'], function (md) {
callback(decode(md));
});
}
},
'甘肃': {
getGeoJson: function (callback) {
require(['./geoJson/gan_su_geo'], function (md) {
callback(decode(md));
});
}
},
'云南': {
getGeoJson: function (callback) {
require(['./geoJson/yun_nan_geo'], function (md) {
callback(decode(md));
});
}
},
'广西': {
getGeoJson: function (callback) {
require(['./geoJson/guang_xi_geo'], function (md) {
callback(decode(md));
});
}
},
'湖南': {
getGeoJson: function (callback) {
require(['./geoJson/hu_nan_geo'], function (md) {
callback(decode(md));
});
}
},
'陕西': {
getGeoJson: function (callback) {
require(['./geoJson/shan_xi_1_geo'], function (md) {
callback(decode(md));
});
}
},
'广东': {
getGeoJson: function (callback) {
require(['./geoJson/guang_dong_geo'], function (md) {
callback(decode(md));
});
}
},
'吉林': {
getGeoJson: function (callback) {
require(['./geoJson/ji_lin_geo'], function (md) {
callback(decode(md));
});
}
},
'河北': {
getGeoJson: function (callback) {
require(['./geoJson/he_bei_geo'], function (md) {
callback(decode(md));
});
}
},
'湖北': {
getGeoJson: function (callback) {
require(['./geoJson/hu_bei_geo'], function (md) {
callback(decode(md));
});
}
},
'贵州': {
getGeoJson: function (callback) {
require(['./geoJson/gui_zhou_geo'], function (md) {
callback(decode(md));
});
}
},
'山东': {
getGeoJson: function (callback) {
require(['./geoJson/shan_dong_geo'], function (md) {
callback(decode(md));
});
}
},
'江西': {
getGeoJson: function (callback) {
require(['./geoJson/jiang_xi_geo'], function (md) {
callback(decode(md));
});
}
},
'河南': {
getGeoJson: function (callback) {
require(['./geoJson/he_nan_geo'], function (md) {
callback(decode(md));
});
}
},
'辽宁': {
getGeoJson: function (callback) {
require(['./geoJson/liao_ning_geo'], function (md) {
callback(decode(md));
});
}
},
'山西': {
getGeoJson: function (callback) {
require(['./geoJson/shan_xi_2_geo'], function (md) {
callback(decode(md));
});
}
},
'安徽': {
getGeoJson: function (callback) {
require(['./geoJson/an_hui_geo'], function (md) {
callback(decode(md));
});
}
},
'福建': {
getGeoJson: function (callback) {
require(['./geoJson/fu_jian_geo'], function (md) {
callback(decode(md));
});
}
},
'浙江': {
getGeoJson: function (callback) {
require(['./geoJson/zhe_jiang_geo'], function (md) {
callback(decode(md));
});
}
},
'江苏': {
getGeoJson: function (callback) {
require(['./geoJson/jiang_su_geo'], function (md) {
callback(decode(md));
});
}
},
'重庆': {
getGeoJson: function (callback) {
require(['./geoJson/chong_qing_geo'], function (md) {
callback(decode(md));
});
}
},
'宁夏': {
getGeoJson: function (callback) {
require(['./geoJson/ning_xia_geo'], function (md) {
callback(decode(md));
});
}
},
'海南': {
getGeoJson: function (callback) {
require(['./geoJson/hai_nan_geo'], function (md) {
callback(decode(md));
});
}
},
'台湾': {
getGeoJson: function (callback) {
require(['./geoJson/tai_wan_geo'], function (md) {
callback(decode(md));
});
}
},
'北京': {
getGeoJson: function (callback) {
require(['./geoJson/bei_jing_geo'], function (md) {
callback(decode(md));
});
}
},
'天津': {
getGeoJson: function (callback) {
require(['./geoJson/tian_jin_geo'], function (md) {
callback(decode(md));
});
}
},
'上海': {
getGeoJson: function (callback) {
require(['./geoJson/shang_hai_geo'], function (md) {
callback(decode(md));
});
}
},
'香港': {
getGeoJson: function (callback) {
require(['./geoJson/xiang_gang_geo'], function (md) {
callback(decode(md));
});
}
},
'澳门': {
getGeoJson: function (callback) {
require(['./geoJson/ao_men_geo'], function (md) {
callback(decode(md));
});
}
}
};
return {
decode: decode,
params: mapParams
};
});define('echarts/util/mapData/textFixed', [], function () {
return {
'广东': [
0,
-10
],
'香港': [
10,
10
],
'澳门': [
-10,
18
],
'黑龙江': [
0,
20
],
'天津': [
5,
5
],
'深圳市': [
-35,
0
],
'红河哈尼族彝族自治州': [
0,
20
],
'楚雄彝族自治州': [
-5,
15
],
'石河子市': [
-5,
5
],
'五家渠市': [
0,
-10
],
'昌吉回族自治州': [
10,
10
],
'昌江黎族自治县': [
0,
20
],
'陵水黎族自治县': [
0,
20
],
'东方市': [
0,
20
],
'渭南市': [
0,
20
]
};
});define('echarts/util/mapData/geoCoord', [], function () {
return {
'Russia': [
100,
60
],
'United States of America': [
-99,
38
]
};
});define('echarts/util/projection/svg', [
'require',
'zrender/shape/Path'
], function (require) {
var PathShape = require('zrender/shape/Path');
function toFloat(str) {
return parseFloat(str || 0);
}
function getBbox(root) {
var svgNode = root.firstChild;
while (!(svgNode.nodeName.toLowerCase() == 'svg' && svgNode.nodeType == 1)) {
svgNode = svgNode.nextSibling;
}
var x = toFloat(svgNode.getAttribute('x'));
var y = toFloat(svgNode.getAttribute('y'));
var width = toFloat(svgNode.getAttribute('width'));
var height = toFloat(svgNode.getAttribute('height'));
return {
left: x,
top: y,
width: width,
height: height
};
}
function geoJson2Path(root, transform) {
var scale = [
transform.scale.x,
transform.scale.y
];
var elList = [];
function _getShape(root) {
var tagName = root.tagName;
if (shapeBuilders[tagName]) {
var obj = shapeBuilders[tagName](root, scale);
if (obj) {
obj.scale = scale;
obj.properties = { name: root.getAttribute('name') || '' };
obj.id = root.id;
extendCommonAttributes(obj, root);
elList.push(obj);
}
}
var shapes = root.childNodes;
for (var i = 0, len = shapes.length; i < len; i++) {
_getShape(shapes[i]);
}
}
_getShape(root);
return elList;
}
function pos2geo(obj, p) {
var point = p instanceof Array ? [
p[0] * 1,
p[1] * 1
] : [
p.x * 1,
p.y * 1
];
return [
point[0] / obj.scale.x,
point[1] / obj.scale.y
];
}
function geo2pos(obj, p) {
var point = p instanceof Array ? [
p[0] * 1,
p[1] * 1
] : [
p.x * 1,
p.y * 1
];
return [
point[0] * obj.scale.x,
point[1] * obj.scale.y
];
}
function trim(str) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function extendCommonAttributes(obj, xmlNode) {
var color = xmlNode.getAttribute('fill');
var strokeColor = xmlNode.getAttribute('stroke');
var lineWidth = xmlNode.getAttribute('stroke-width');
var opacity = xmlNode.getAttribute('opacity');
if (color && color != 'none') {
obj.color = color;
if (strokeColor) {
obj.brushType = 'both';
obj.strokeColor = strokeColor;
} else {
obj.brushType = 'fill';
}
} else if (strokeColor && strokeColor != 'none') {
obj.strokeColor = strokeColor;
obj.brushType = 'stroke';
}
if (lineWidth && lineWidth != 'none') {
obj.lineWidth = parseFloat(lineWidth);
}
if (opacity && opacity != 'none') {
obj.opacity = parseFloat(opacity);
}
}
function parsePoints(str) {
var list = trim(str).replace(/,/g, ' ').split(/\s+/);
var points = [];
for (var i = 0; i < list.length;) {
var x = parseFloat(list[i++]);
var y = parseFloat(list[i++]);
points.push([
x,
y
]);
}
return points;
}
var shapeBuilders = {
path: function (xmlNode, scale) {
var path = xmlNode.getAttribute('d');
var rect = PathShape.prototype.getRect({ path: path });
return {
shapeType: 'path',
path: path,
cp: [
(rect.x + rect.width / 2) * scale[0],
(rect.y + rect.height / 2) * scale[1]
]
};
},
rect: function (xmlNode, scale) {
var x = toFloat(xmlNode.getAttribute('x'));
var y = toFloat(xmlNode.getAttribute('y'));
var width = toFloat(xmlNode.getAttribute('width'));
var height = toFloat(xmlNode.getAttribute('height'));
return {
shapeType: 'rectangle',
x: x,
y: y,
width: width,
height: height,
cp: [
(x + width / 2) * scale[0],
(y + height / 2) * scale[1]
]
};
},
line: function (xmlNode, scale) {
var x1 = toFloat(xmlNode.getAttribute('x1'));
var y1 = toFloat(xmlNode.getAttribute('y1'));
var x2 = toFloat(xmlNode.getAttribute('x2'));
var y2 = toFloat(xmlNode.getAttribute('y2'));
return {
shapeType: 'line',
xStart: x1,
yStart: y1,
xEnd: x2,
yEnd: y2,
cp: [
(x1 + x2) * 0.5 * scale[0],
(y1 + y2) * 0.5 * scale[1]
]
};
},
circle: function (xmlNode, scale) {
var cx = toFloat(xmlNode.getAttribute('cx'));
var cy = toFloat(xmlNode.getAttribute('cy'));
var r = toFloat(xmlNode.getAttribute('r'));
return {
shapeType: 'circle',
x: cx,
y: cy,
r: r,
cp: [
cx * scale[0],
cy * scale[1]
]
};
},
ellipse: function (xmlNode, scale) {
var cx = parseFloat(xmlNode.getAttribute('cx') || 0);
var cy = parseFloat(xmlNode.getAttribute('cy') || 0);
var rx = parseFloat(xmlNode.getAttribute('rx') || 0);
var ry = parseFloat(xmlNode.getAttribute('ry') || 0);
return {
shapeType: 'ellipse',
x: cx,
y: cy,
a: rx,
b: ry,
cp: [
cx * scale[0],
cy * scale[1]
]
};
},
polygon: function (xmlNode, scale) {
var points = xmlNode.getAttribute('points');
var min = [
Infinity,
Infinity
];
var max = [
-Infinity,
-Infinity
];
if (points) {
points = parsePoints(points);
for (var i = 0; i < points.length; i++) {
var p = points[i];
min[0] = Math.min(p[0], min[0]);
min[1] = Math.min(p[1], min[1]);
max[0] = Math.max(p[0], max[0]);
max[1] = Math.max(p[1], max[1]);
}
return {
shapeType: 'polygon',
pointList: points,
cp: [
(min[0] + max[0]) / 2 * scale[0],
(min[1] + max[1]) / 2 * scale[0]
]
};
}
},
polyline: function (xmlNode, scale) {
var obj = shapeBuilders.polygon(xmlNode, scale);
return obj;
}
};
return {
getBbox: getBbox,
geoJson2Path: geoJson2Path,
pos2geo: pos2geo,
geo2pos: geo2pos
};
});define('echarts/util/projection/normal', [], function () {
function getBbox(json, specialArea) {
specialArea = specialArea || {};
if (!json.srcSize) {
parseSrcSize(json, specialArea);
}
return json.srcSize;
}
function parseSrcSize(json, specialArea) {
specialArea = specialArea || {};
convertorParse.xmin = 360;
convertorParse.xmax = -360;
convertorParse.ymin = 180;
convertorParse.ymax = -180;
var shapes = json.features;
var geometries;
var shape;
for (var i = 0, len = shapes.length; i < len; i++) {
shape = shapes[i];
if (shape.properties.name && specialArea[shape.properties.name]) {
continue;
}
switch (shape.type) {
case 'Feature':
convertorParse[shape.geometry.type](shape.geometry.coordinates);
break;
case 'GeometryCollection':
geometries = shape.geometries;
for (var j = 0, len2 = geometries.length; j < len2; j++) {
convertorParse[geometries[j].type](geometries[j].coordinates);
}
break;
}
}
json.srcSize = {
left: convertorParse.xmin.toFixed(4) * 1,
top: convertorParse.ymin.toFixed(4) * 1,
width: (convertorParse.xmax - convertorParse.xmin).toFixed(4) * 1,
height: (convertorParse.ymax - convertorParse.ymin).toFixed(4) * 1
};
return json;
}
var convertor = {
formatPoint: function (p) {
return [
(p[0] < -168.5 && p[1] > 63.8 ? p[0] + 360 : p[0]) + 168.5,
90 - p[1]
];
},
makePoint: function (p) {
var self = this;
var point = self.formatPoint(p);
if (self._bbox.xmin > p[0]) {
self._bbox.xmin = p[0];
}
if (self._bbox.xmax < p[0]) {
self._bbox.xmax = p[0];
}
if (self._bbox.ymin > p[1]) {
self._bbox.ymin = p[1];
}
if (self._bbox.ymax < p[1]) {
self._bbox.ymax = p[1];
}
var x = (point[0] - convertor.offset.x) * convertor.scale.x + convertor.offset.left;
var y = (point[1] - convertor.offset.y) * convertor.scale.y + convertor.offset.top;
return [
x,
y
];
},
Point: function (coordinates) {
coordinates = this.makePoint(coordinates);
return coordinates.join(',');
},
LineString: function (coordinates) {
var str = '';
var point;
for (var i = 0, len = coordinates.length; i < len; i++) {
point = convertor.makePoint(coordinates[i]);
if (i === 0) {
str = 'M' + point.join(',');
} else {
str = str + 'L' + point.join(',');
}
}
return str;
},
Polygon: function (coordinates) {
var str = '';
for (var i = 0, len = coordinates.length; i < len; i++) {
str = str + convertor.LineString(coordinates[i]) + 'z';
}
return str;
},
MultiPoint: function (coordinates) {
var arr = [];
for (var i = 0, len = coordinates.length; i < len; i++) {
arr.push(convertor.Point(coordinates[i]));
}
return arr;
},
MultiLineString: function (coordinates) {
var str = '';
for (var i = 0, len = coordinates.length; i < len; i++) {
str += convertor.LineString(coordinates[i]);
}
return str;
},
MultiPolygon: function (coordinates) {
var str = '';
for (var i = 0, len = coordinates.length; i < len; i++) {
str += convertor.Polygon(coordinates[i]);
}
return str;
}
};
var convertorParse = {
formatPoint: convertor.formatPoint,
makePoint: function (p) {
var self = this;
var point = self.formatPoint(p);
var x = point[0];
var y = point[1];
if (self.xmin > x) {
self.xmin = x;
}
if (self.xmax < x) {
self.xmax = x;
}
if (self.ymin > y) {
self.ymin = y;
}
if (self.ymax < y) {
self.ymax = y;
}
},
Point: function (coordinates) {
this.makePoint(coordinates);
},
LineString: function (coordinates) {
for (var i = 0, len = coordinates.length; i < len; i++) {
this.makePoint(coordinates[i]);
}
},
Polygon: function (coordinates) {
for (var i = 0, len = coordinates.length; i < len; i++) {
this.LineString(coordinates[i]);
}
},
MultiPoint: function (coordinates) {
for (var i = 0, len = coordinates.length; i < len; i++) {
this.Point(coordinates[i]);
}
},
MultiLineString: function (coordinates) {
for (var i = 0, len = coordinates.length; i < len; i++) {
this.LineString(coordinates[i]);
}
},
MultiPolygon: function (coordinates) {
for (var i = 0, len = coordinates.length; i < len; i++) {
this.Polygon(coordinates[i]);
}
}
};
function geoJson2Path(json, transform, specialArea) {
specialArea = specialArea || {};
convertor.scale = null;
convertor.offset = null;
if (!json.srcSize) {
parseSrcSize(json, specialArea);
}
transform.offset = {
x: json.srcSize.left,
y: json.srcSize.top,
left: transform.OffsetLeft || 0,
top: transform.OffsetTop || 0
};
convertor.scale = transform.scale;
convertor.offset = transform.offset;
var shapes = json.features;
var geometries;
var pathArray = [];
var val;
var shape;
for (var i = 0, len = shapes.length; i < len; i++) {
shape = shapes[i];
if (shape.properties.name && specialArea[shape.properties.name]) {
continue;
}
if (shape.type == 'Feature') {
pushApath(shape.geometry, shape);
} else if (shape.type == 'GeometryCollection') {
geometries = shape.geometries;
for (var j = 0, len2 = geometries.length; j < len2; j++) {
val = geometries[j];
pushApath(val, val);
}
}
}
var shapeType;
var shapeCoordinates;
var str;
function pushApath(gm, shape) {
shapeType = gm.type;
shapeCoordinates = gm.coordinates;
convertor._bbox = {
xmin: 360,
xmax: -360,
ymin: 180,
ymax: -180
};
str = convertor[shapeType](shapeCoordinates);
pathArray.push({
path: str,
cp: shape.properties.cp ? convertor.makePoint(shape.properties.cp) : convertor.makePoint([
(convertor._bbox.xmin + convertor._bbox.xmax) / 2,
(convertor._bbox.ymin + convertor._bbox.ymax) / 2
]),
properties: shape.properties,
id: shape.id
});
}
return pathArray;
}
function pos2geo(obj, p) {
var x;
var y;
if (p instanceof Array) {
x = p[0] * 1;
y = p[1] * 1;
} else {
x = p.x * 1;
y = p.y * 1;
}
x = x / obj.scale.x + obj.offset.x - 168.5;
x = x > 180 ? x - 360 : x;
y = 90 - (y / obj.scale.y + obj.offset.y);
return [
x,
y
];
}
function geo2pos(obj, p) {
convertor.offset = obj.offset;
convertor.scale = obj.scale;
return p instanceof Array ? convertor.makePoint([
p[0] * 1,
p[1] * 1
]) : convertor.makePoint([
p.x * 1,
p.y * 1
]);
}
return {
getBbox: getBbox,
geoJson2Path: geoJson2Path,
pos2geo: pos2geo,
geo2pos: geo2pos
};
});define('echarts/util/mapData/geoJson/an_hui_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '3415',
'properties': {
'name': '六安市',
'cp': [
116.3123,
31.8329
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„„nJ‚UXUVƒ°U„ÑnU@mlLVaVln@@bn@VU@xlb@lšLnKlšƒVI„JšUVxnI@lVL@b„Ž°VX@˜b„x„nVVUnVVnU‚›@kX@VwV@„al¥UUnUWa@ƒ@wĸU„LU¥lKUa@aUI@alLVaUƒ¯anƒWkUKm@XV@VaXlW@aU_UWVUƒI¯@ma¯W¯™™I@UU@WWU@U@@UU@VkV@@WUUm@UaU@„lK@IUK„L@KWmXUWaXI@ƒ@a@a@U@U@KV¥lw„k°b²JVIVKlV@UX„la„Ul`œUVLVVVUšJ„U@Lnm@_VK@KUIW@™J@Xk@WW@U—ƒmm™XmWk@kK@aUUƒVmmkUwUmWL™@WmU@™UJmUULkKWakLWVkIƒlƒwULƒW@X°lUJ@°ULƒWV—wmJ@bmb¯Vkm@@WkWm¯wƒL@lkXƒWmXym¯UImJUbkV™@Vn¯„@V@lUbƒ@mk@maUxmlUbULWn@J—LmKUkWKkwUKƒbm„X„WxkVUKmLkVV@JUUWL@xkJUUƒV@X@VVlUbVX@xk¤šx‚¼œxWxn„‚nn@Þ¼„JVb°aVn„@šmlnXU„JlbVlkz@‚lUŽlXJmxVxXnWxXÈWlUŽ@šUxU@VX@xUL@šUÆmLnV@lWXk@@JlbXblnlJ'],
'encodeOffsets': [[
118710,
33351
]]
}
},
{
'type': 'Feature',
'id': '3408',
'properties': {
'name': '安庆市',
'cp': [
116.7517,
30.5255
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n°‚znW„XlW@k„K°xXn‚l@Xn@l‚°Una@anI˜xXU„ŽVK@¯VIkW¯X@‚„VK„x„klJXUlKXblLVKnVVIšŽV@Xn‚@šŽXKVnVxlŽnn„UlmV@²óUkV™lW„b„lƒšƒn@VVVIn@lw@WVIXblV„@Èx‚aUaVIVVnKVLšK„ƒln@b²K@»U£ƒÑķƒġÝÅb™K™a@Im@ۍ„@kWÓkkmKÅnóJƒUÅ£›W@w„ĕ@wĉţ¯¯ƒUkK±l¯Uƒ¥UÑkÝUķ»Ý¥¯™JƒIUŽVbUl¯ÈV¼VJU¼Vb@bkLUl@„VJ@bUXǚ@lkVmXmKkLVxš‚Ž„VƒL@VkVVVlzW˜kbmLUUUbVbUV™šlÒnJlUnLllUL@bU„Vx„l‚LXVƦÈVU¦WJ'],
'encodeOffsets': [[
118834,
31759
]]
}
},
{
'type': 'Feature',
'id': '3411',
'properties': {
'name': '滁州市',
'cp': [
118.1909,
32.536
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@š„@`nnl@„xšK@X°KXV˜IXVlbXVWnX‚lL@šÈ»‚LVan@VJ„êVVn@‚X@laÞbVaƒyn@„_‚xnWVXnWl@VnUVkI@l‚nXKVLVV@V@kW@LlVô„@J@bVnnKnkVa@»lç@ƒnwšKma™UUUVњ@n™mWXalI@alVn@VwUaVU„@„nlaôJnU„VVXlJšaXXVK@UšV@VWx@nXVWšXVšUlLUbV‚ULVVnUVbUbVbš@@a„KÆnnKVK@U@UU@@a„@Vƒ°¯ÈJVIlķ@aa˜UaVKU_@mkxUI@aƒUlyU@@™wkKWmUbUnUVWbkJW_J@bƒn@Vm@@KULk@V@@bVbÅm@LW@UVVbkK@UkKWL@VULUKWIUJUbkK@_WVXU›Jka@XƒVa@kšy@aVIUUW@@m„UlLœKWÑUKVan@UkVmmIXKƒaVaUwVU@UmykU¯@±UUL@WUIVUU@KkIWaƒaU@kUUaǃUó»mKƒk¯@y@kWK@bkI¯`mn™l¯XWlkVUzUJlbUbVJl@nnm„@VULV`XnWƗbmUUn™JmUknƒJ¯km@ƒyk@kU›xL@VUbmnn¤lX@`™z@JmaULUVl@Xn@xllkXWa—aW@UVmUbƒ@mVXšWxXbWbUŽƒÒnVVnVVUL'],
'encodeOffsets': [[
120004,
33520
]]
}
},
{
'type': 'Feature',
'id': '3418',
'properties': {
'name': '宣城市',
'cp': [
118.8062,
30.6244
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Vb@„XL˜JXxlIXxlVlV@I²¤šnlUnVšU@VULWVUJ@Lnb@lV@UnV@@VVVlLnbnJ‚UVkUUVWn@@anUVnVJVIV‚@@nUJVbUb‚„@VUbVK@bn@VbnIlxkllXVlXKWUXUlL°¤UVVb@bš„UlkXW‚ƒxXz@‚„Ila„UlƒnUlJVInVÆJ„U„LVUnV„K°@VnlVnxV@XLlK@wVL@KnUlJXU˜bnKVLX„lUw@VWlLXKm@@a„@VLnmlIVVnKn@škVašVlwk@@a@k@ƒVIUa™@maUa@wna@kmWƒ™UUmVUIVǗ@aƒKm™aƒ™kU™J@InmUUaVa„k‚lX@Vk@m@VU@wnK@alKVUkUkKƒbmUkmƒ@U£WVk@@UÝbbƒaÇx@b@WVUa¯ƒ@wVwUUV@VwnK@KWaŁ@KšIUyUI@WmXó™UbWaKm™@km@IUyƒIUaWKƒx@zUKUL@llVUnkLVVkJWX@VUKUVƒIkVWakb@VWb@n@JkXUlmL@xkL@`VxšLUÈUJ@Vm@@bmIUlUL@VUVVbknm@mKUw™KVÈ@J@LV±kkJUIƒl'],
'encodeOffsets': [[
120803,
31247
]]
}
},
{
'type': 'Feature',
'id': '3412',
'properties': {
'name': '阜阳市',
'cp': [
115.7629,
32.9919
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@V™nƒš@ša„k°aš±@‚¥@UUI@aUmlwUUx›b@¥XU@mmI@a@Kn@@_W@@W„I@mšUVVXUl@XaV@‚K@I@a„LX@aVI°K@KVL„UUw‚yXkšK@kšKÆbXnlK@k@a„JlU@w@U@»@aXKWƒn_‚JXkVKnƒ@°LlKXƒW@¯Uƒ@aUK@kmJUw™VƒIUJ™„kŽmL™K@kka@wUVm@@am@UkUbkK@nmVƒÒ¯VU„WVVmIƒƒULk@ƒƒma@kkKƒƒ@nUbUamU™`UUVUkKVkkƒW@@bkmƒnƒmUXVKXVƒL@VƒbU„m‚™bVXJ@nmKÅI@KWKUXVJUL@VUKUX@KUKWL@LUJmaXXm@kVVV@L@VUL@VlK@L@V@LUK@VUb@UUU@°@nVxU`‚Lkn@`@XVJ@X™Vm„k@UKmV¯LVVn±Wm@Ub@JlLUl„@VLk„@lmVVn@bnV@V°IV™šaVJXI°K°V@XXVlVVU„nšKVlUš„bWXnV@bV`U„„@@m@@‚ƒ@nxmn@bXVlL@¤nb„Ul¦šVVUnJVU„Vl@@bÞL'],
'encodeOffsets': [[
118418,
34392
]]
}
},
{
'type': 'Feature',
'id': '3413',
'properties': {
'name': '宿州市',
'cp': [
117.5208,
33.6841
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@UWU@bkW@aWU@aUIkWV™lLXb„lVIUVV@‚mn@V_n@VaUK@I‚@UašanJVU„@lV„UVnnKVVlaUa„I@wnK‚Lnll@nVlk@wVKXkl@@b„bUJ@V‚U@U„UUyVk@aVUXwlWXX‚WU¹@aU™@WUI@mlUšn„J@Il@šaXbV@VKl@XxVL@W„IšJlb„@„al@„IUUm@@aVK@¥¯—@mUķ¯bWƒk£Vm@akm@VaÅ@UVWaƒ@UJWkƒJ—UƒbWbU@UlƒXk@ƒamV@K¯nk@ƒlU@Uxmz@bU`ÇbUbÅVm£U@Ww™x@akLUK@UlakwUJWVkLmaUal@n_ƒmVUnKVUUmÅXWa™@kJmx@XUJ@bVLXxl@VVUVV„UbkLWbU@@lUVV„VVX„›K@XkJ@nU@@bV@VxUVlb„U@xXLWŽn@UxVbVĊ„V@b@XV`mnkJ@kUKmbƒaU@VbnbÆx@XU@@`k@@bl„™@@bkL@WƒakXWaU@Vmkx@XWW@@wUUUbƒJ™U¯V™@¯ÞU@WxXŽlL@bkb@ŽlVlnb™JW@kkU@mbkaWJ—IVlmz¯`UnU@mb™@@„ƒ`@bkVlœnV@b@šV@„aVxn@Vx‚KXnl@nbVK„bVK@a„_V@Vƒ„w@W„LlwnK@UmIU@VWš@šUÈ@lKnal„wš@@V°@šaUmlUUw@„ƒV@@UXK'],
'encodeOffsets': [[
119836,
35061
]]
}
},
{
'type': 'Feature',
'id': '3410',
'properties': {
'name': '黄山市',
'cp': [
118.0481,
29.9542
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lXnlWX@VUJVnUJVzXJVx„kVJlI²l‚U@K@IUǚLVxnLn@lmUaVU@UVKVknJ@an@@UVIVǙKUw@_lK@wnKVklW@I@mXa@UlaXblU„JVUVL@UXWlIUUlKVmkU@kVKVL@y„wXLVb„JVz@Jlnš@nŽ‚LXbVaôšnW@la@UVWUa@@a@mk@WIk@VwUa¯¥m@UUVK@ImK@aX£ƒkK›ÅV™a™™ƒ_@±ƒakXWW—LƒƒƒnU@@a@¯mK@L™JUWwUV™VmbXX@lWLn`mzUJUb™Lƒ„k@makVWmkX™ambkKknƒaƒ@ƒaƒb@‚U@Unm@—ƒWVƒ@VbUbUJWIk@@lmL@°UVUVm„nš™@@kmWkb@xƒ_m@@aU@b@JlŽUz™lWxXn„@‚b²@l`„IVl„UlL@VšK„nVbUl@VlIn@@b„bVWUk‚@@bX@Valb@bnb°Vn@„xVKlbVnV@V‚x„L@ln@UXVV‚L˜'],
'encodeOffsets': [[
120747,
31095
]]
}
},
{
'type': 'Feature',
'id': '3414',
'properties': {
'name': '巢湖市',
'cp': [
117.7734,
31.4978
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VV@blL@ŽXlWnnšnŽ˜„@VXXl@@WšIX@VJ@LšxŎxlnšŽ@bXJVblX@VVbUVn@VbUVlb@LnJVbVLV‚XLšÒVL„ÒšV„bVIVylUXk°Wšknm°_lJ@aXL@l‚z°@„lnLô¼V‚È„VUUaVKU@WW@@UUa@knmVLlaV@„a@kšak±@UmwkKmk™lj™ÝUUkL@mlIVmnÝWkkUÝ@KƑĉ™a@»ƒmma@mX™¤¯Uƒw@ƒ@UU@bU±±L@akmƒ„™LUKmLUUUJVbbÇwƒ@kUWaUJ@Xkxm@UJUUm@™„k„ƒ‚ƒakXUšVl±ôU@kn'],
'encodeOffsets': [[
119847,
32007
]]
}
},
{
'type': 'Feature',
'id': '3416',
'properties': {
'name': '亳州市',
'cp': [
116.1914,
33.4698
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lU@Un@@anUlw@KVmUwlaX_lKna@KU@@kWKUU@ankW™XK˜@@V²VVIÈU@al@VaÈamK@wU™@klaUƒV@XƒVUU»WUUbkmUkVmk@aÈw@mWU@VkIkVWKUÑķXȭºU¯lƒ@kkLWmÅa™L@l™LWlzVxƒVUK@L¯LUJ@bWƒK@b@JLU@Wbk@WVUU™V@nƒJ@XX@@`m@@L@bnJ@nWV@¦œa‚wVVkxVn@bVJ@V¦@Ž™²¯bƒl™b™@m„UšUŽƒŽ@¼ƒ¦Xb‚UV`@nnxUxWLkUkVWKkV@XV@@VVL@VX„@lVV@L@blL@`šL@xXKVL‚@„VnUš@lwnU@ml@XnV@@UVW°LnalƒUI@aUK@a‚a@U„kXW@I@mWL@UXK@UVW@U‚@@k„Wn‚@@V„@XblaVxšL@bVKXb„IlJ'],
'encodeOffsets': [[
119183,
34594
]]
}
},
{
'type': 'Feature',
'id': '3417',
'properties': {
'name': '池州市',
'cp': [
117.3889,
30.2014
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@„V°°ĊŤ@xƒĖ@xœXƤ„VôIÆmnLllXÔ@lƒÜŽn@@JšbšLÆaĢÞĸ„°VVUUKVanK@UV@VL„VVn„ln@‚xnklxXamk@WV@Xa˜@naVk„Klk™@mkUWwkJWw—IWK@ƒUaUwWIUyVIUmVI@UXWmkkW‚—KUUVWm@@kƒKw@U‚UUmkaULƒwm@¯Uma@akaUbW@@a@VlUXƒa@am@kJ@UVkUaƒm™L@UkKƒVUkƒJk_±@aƒ@WmXwÇkkaVaUa±ƒœwV@VkƒwnyUaW@UU¯amLk@m™@kmmU™™¯K@L@lUX¯ƒWlkXƒŽVb„bƒVUL@J@LVKnlJXnlb@`nXlalV@bnL@Vnb˜¼@lXbWlkL™K@zUJmIUxUVUVmX',
'@@llUL@VlxšL@a@UƒwXa¯@'
],
'encodeOffsets': [
[
119543,
30781
],
[
120061,
31152
]
]
}
},
{
'type': 'Feature',
'id': '3401',
'properties': {
'name': '合肥市',
'cp': [
117.29,
32.0581
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„L„xV‚ĊLÞkšVlVVXaWaXwW™nU„@‚anVVUX@˜bXblWkk@wWmk@VUVKnb@Išy@_kWm£nmVa@U‚KœwlVl@„zn@°l„IlmnVšIVmnV˜aXÅWmU_VK@Unƒmmk@UIVakaƒa™UƒÑUK™ÑWKUUKUamI@KkaVUUam@VUUa@UkWUaWI@a™kmōw™wUL@`mn@KƒV™IUVUUUK›Vk_ƒVkbWƒ@VkUULUJ±I¯aƒlkxU¦@L@V@V@b@b@„WJXbWVXn@LƒKVL@JkLƒŽV@Vbn@VV@XU@UlV@@VV@V@XXV@@VšJ°š°Xnb°@„JUVVXV`@bkXWŽUbU@WŽn@VLXlm„°bV„UbkK@bVJ@bVbkLV¦ƒKķV@x@„XbmVVVk¦'],
'encodeOffsets': [[
119678,
33323
]]
}
},
{
'type': 'Feature',
'id': '3403',
'properties': {
'name': '蚌埠市',
'cp': [
117.4109,
33.1073
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VÒXLlUlJ@UXV@nÇx@bnlUVllnVaXVV¼UVW„U@V„²wVV@Vl@„VnwlIš@XbÆWVnUVmLUV„nm`k@VbnblKXUVIlxkb@VVLlK@bšwXxV@n¤ÆUVaÈaV_@anyVwV@„kl@°m@LnU„bl@„WVkV@Xa„a˜V„IXl‚IV‚„@XbVUÆ@XKWwUkmW@_UmnIlJXkWKXmV@‚w@_XV@Kl@kU@KlX@@UUUUKWLm@klJVUUmk@mXUWmXwƒ`m@„zUbÝakbW@m@UUƒéUIm@UbKǼ@™kKWXmWUkaWU—JWU¯L@W™Lƒwk@mm@_™ƒÅl™UVkmWUnV@VWLUb™bƑĬ¯l'],
'encodeOffsets': [[
119543,
33722
]]
}
},
{
'type': 'Feature',
'id': '3402',
'properties': {
'name': '芜湖市',
'cp': [
118.3557,
31.0858
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„bVaV@XllLXU°ŽlL@V@VUnVl¯Ikš›VUVU@@b@lUXUWmb„n@¼šbƒĊ‚LÞ@lVXlmÞUnkJ@nlKVVšÞXklWVaVI@aUKn»lL@Kn@‚XXwlm@mn°@„V@Wy„wXlWVk™ƒ@aUaVU¯£kKWVXVWLUkkWlkkwmJUam@@aULVa@UƒVaUaVI@m‚@UUJUIUmmV@bm@UXVVUlVmImakKUU@UU@VmU@@kma@KVIXUVK@U™VmUkV™m±£@JkU@nlšk‚ƒLUlmb—@WbU@@XnlWb'],
'encodeOffsets': [[
120814,
31585
]]
}
},
{
'type': 'Feature',
'id': '3406',
'properties': {
'name': '淮北市',
'cp': [
116.6968,
33.6896
],
'childNum': 3
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@lnnK@¦n@@V‚V„@@VV@nIV„V@VW²a@b@bVnUVVV@V™z@lš@°UšV„IVaVV@x@ŽXX@WlwUnV@XblW„b@XlK@aš@kƒ@al@@_V@@WÅwmaUaV@„bnaVL@llInmU_@W@aƒUUĉUaVwm@XWK@wƒVkaVUUwU@@aV@@mlI@WœLWƒUUUƒVU@kV@XalKVaUƒVUUUk@WwUK@aVI@WƒUk@@UUU±xkb@lVš@xnLÇbUbk@@bÇVUJ±U@U—@WLXšml@bVVXL@lV@@LmbkLW`kbVxUn@LkxmV@bm@@VkV'],
['@@VVVkV@¥@UV@U@VUUJƒkWakKUšlXVJ@bXV@blX@aXV@V']
],
'encodeOffsets': [
[[
119183,
34594
]],
[[
119836,
35061
]]
]
}
},
{
'type': 'Feature',
'id': '3404',
'properties': {
'name': '淮南市',
'cp': [
116.7847,
32.7722
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°kƒīšaVaXK@U‚UVmnXUlšVÆkVKUUUmmU„ÑkU™UÝlĉKUƒwƒKƒbU@UxW@@lœmVUUVmUUƒmƒw—aW„kL¯K@Žm„ULWlIm`X„WL@b@¼@V@xkVƒI@b@l@lk„V°Ȯ¹ĸW'],
'encodeOffsets': [[
119543,
33722
]]
}
},
{
'type': 'Feature',
'id': '3405',
'properties': {
'name': '马鞍山市',
'cp': [
118.6304,
31.5363
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šNJnllLnxV@laXLVKma„aXbVI„bVKVVVIVyn@n_ƒƒW@@ƒ„UnJlUVVXlLnaUWlV@VV„IXW@_W@XK@K@UVUUwVamÑXmmwƒw™KUnUK™çU@ƒJƒU¯@mŽ@nknWxWm@@LkKm¼VL@bUJUbkXWl'],
'encodeOffsets': [[
121219,
32288
]]
}
},
{
'type': 'Feature',
'id': '3407',
'properties': {
'name': '铜陵市',
'cp': [
117.9382,
30.9375
],
'childNum': 3
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@„ÒV¤@¼V²@aVV@Ž@„„x°Vš£nW‚@nbnaVXVW@k@aV@VUœUl™°JUkVm@U@UkK¯WVkKWkU@Ubƒakwmlwm@ƒkUmƒUUKU@@VmLUbVLUV¯U'],
['@@LllUL@VlxšL@a@UƒwXamK']
],
'encodeOffsets': [
[[
120522,
31529
]],
[[
120094,
31146
]]
]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/ao_men_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [{
'type': 'Feature',
'id': '8200',
'properties': {
'name': '澳门',
'cp': [
113.5715,
22.1583
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@HQFMDIDGBI@E@EEKEGCEIGGEKEMGSEU@CBEDAJAP@F@LBT@JCHMPOdADCFADAB@LFLDFFP@DAB@@AF@D@B@@FBD@FADHBBHAD@FAJ@JEDCJI`gFIJW'],
'encodeOffsets': [[
116325,
22699
]]
}
}],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/bei_jing_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '110228',
'properties': {
'name': '密云县',
'cp': [
117.0923,
40.5121
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@vIHZDZQtDLNMXIbHRCXXITbJ@H`LGPRDDJNCLHTOCWFGvGBUJMKGFO^IHWXITQCI’Y^AXGfRˆDXF`DJOLB~G\\DZIHHpErUVMhHb]\\M†BVF@FTP`@zTbD\\@~M\\K`H^EVODWICAakAQXoIcCOCIgGYNWFWNGGKKGaJEGMEIKYJUT_J_Go@_SyQaSFMEGTcYOQLIIi@EKAUPCV[EEXQCW|aMUMAaYCYNIDGGACIMGGSKDQGaF_C[GaB@GOIiOKAYL“mI@CN]F[SWWAcKKI@HMUimEKbeYQYISNUOcBKPIFBNgvDPGZYFSf]CMSIWGEUFgDIQ[MeDMJS@RR@LphFPCHaBAJKF@J]IBJO@HlO@@RKAMPJHCNDJTHFP@ZGNANBRFH@J_fM^ONJNF\\VTDJHDON@XRND\\XRCPVETCLBVKDFJINHRGPRV@\\CLJN@VbXbLVT'],
'encodeOffsets': [[
119561,
41684
]]
}
},
{
'type': 'Feature',
'id': '110116',
'properties': {
'name': '怀柔区',
'cp': [
116.6377,
40.6219
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@JHTVHXCHPfnDJGHNDJSB[JSBGVSAOH@PMPuDEHHXZN@PHF@ZLJ@LHVYJA\\OFWP]BMtMBSRGV[JeVAPQVIFENMD¡–@^NV\\JH@NNL@NM\\kTQ\\I^FNIpBHGTBFFAZQfKDIXQTLXFXNNVMVHRGpCFLlRLEVBBH`IVO\\G`RDPAXLXBXORHZEHTDLLN@VGTMrQNFPeASKG@GMOAKBYMK@GTUHUXSHMVDNMOUEOZMJML@^KRACMZEZMRQLUHE@OFENPR@DI\\ChMHIDG\\GJMDWHCKGMDCIQCHO_K@GaIJSWWQDaGWJMNCKRsCYGYuJUSaKaW@UIMDK@[QUHOGQJMEILCAUDKFSOUQD[WMC‚Q@WPMGCCIUSE[IMPMN]`e@IEGAQBMHM@YEOSGCIDMIGNOLB@QP@GkP@AI^J@ILEBIbADGEOog@KQQWSekWQQUOFKZLF@PUNmIaHIUeBCTSHENcJa@_IWSaGu`GLSBKJQFOXGDXVQVOBIHcDSJWBEFGTMH[^mLaXcHiKElTRKtFXZ`MHMPCNRDxZˆB\\ICIHK@KŽHbIVFZ@BPnGTGbDXRDJaZKRiGEFSFEJhjFNZFjn'],
'encodeOffsets': [[
119314,
41552
]]
}
},
{
'type': 'Feature',
'id': '110111',
'properties': {
'name': '房山区',
'cp': [
115.8453,
39.7163
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@h@bl@HRJDZ``TA\\VVD^H`\\pF\\JŒ`JGv@ZO\\GPSTEjPTR`FnEbDTDHEhLFMTK@ETSPULKEI@OVISKSJACEQNQbV˜IXGDIN@dMB[IIBcN]ZHNLP@XOWCFWŠCNRHTpATD@^NVNLED@Rh@jCEF}E[OOHUEW]W@QGGDIQSH_MmFmCUT_K]i@MHCMW—FCF‹E{BMHMPOHKS]CFNGBELDH_@BcAKOACESAOBELaXAROB@FODMEDWJAG[aE@UM@DImEWJMC@OeCA{aE[@{L@MINUCQXKfUJORCHqJBF@TCXWNQX]M[EAJO@@KMBQJIC]EWMCCUBEBFHKDOTMBGNGF]MWDBRDdMDQVyE@LPVHDCP@JVVMTG~HNSH[CmRUvHPHBbA\\PTNRC\\YNJ€PRARPJDDR'],
'encodeOffsets': [[
118343,
40770
]]
}
},
{
'type': 'Feature',
'id': '110229',
'properties': {
'name': '延庆县',
'cp': [
116.1543,
40.5286
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@^AXOPEB[ZIGU@KKI@YGE@OYMGWFGvCNO@OPGTBHUTA\\ITACIGMIHmCOeDGGWSUIGimYEEMgiFITEFEjHLQbYCIWQaCSHmHAOY@UEaJG@LGLDJ[J‡AwYQCDMNONGY_EWLsSQFkMO[NWAIGaIYL@HMBOKiOQDWEUDMQSF_QIUBWdg@[NaAKQ@M]OQ@WhgLUMMFYQDIRCEUZOOCIOJ[KIUMKL@HIDKVEBM`HJAJSJUdBLGNEdMBMO[BYEWJSNKNaD]PE\\SjOT_RQVEZPpƒNQXfŠNA~lNG`@PNLp¼RFLfbdKbATUh@FSNWjGFZVLFHVA~X¨PPROfFJbNJPLFbENJPrEFNPFRHDDJdENJLVEPBJTVTHGHFRFH@PXP\\ORQHW\\BjWFDERLPPBbB\\E`B\\D\\L`@F]FCnJ^AZL'],
'encodeOffsets': [[
119262,
41751
]]
}
},
{
'type': 'Feature',
'id': '110109',
'properties': {
'name': '门头沟区',
'cp': [
115.8,
39.9957
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@V@XMnGPY²‰JQNEhH\\AZMPDVTTDZCPiJkHSHCjIdFtEHITCNITQEKUAMCEIKCECABYESKFWAKBEIIHABGDCKCAIHMHALKEI\\CFIBILIJQZS]BBEECS@E@@C]COKI@CABAAEEDMGƒCH]A[M@CJWH—JaUMRFRBDTITLUJ@PFJKLOVST@FSLENgKGFSCaCmF_ESQiOSFOT[HYPu@IH‹_[IoE_[]GUC[USB__CYQI@Gakg@qZeHQNMNV\\FVLPgJAFJPRLCH[XcPELUT[JiV_EELFTADBXRTRLJC@fHXHHbPd`fR@NfT`@TLplHMpCEJHJBVLFŽ@JT‚VnG^KXDXHNVGRLRXFJVdDHSNWLGfEzA'],
'encodeOffsets': [[
118635,
41113
]]
}
},
{
'type': 'Feature',
'id': '110114',
'properties': {
'name': '昌平区',
'cp': [
116.1777,
40.2134
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VNLJI\\JPPDYPFVQDCJZRNEVNhKXgR@^P@NLRbB\\Mh@XcVARJE`RTCNFV€XRCjPPLNA@GZKbJJHXB\\MNPjLdGbWnK\\]NGHSFEXATIdCJGPARUWUHCPWRELITAHKv_E@iYCaW_BQ\\Y@QIO@QDCIGZCEMWGFMFAFgHEDOCSqKCCFGAMKEAC@ODGCGs@WH@KQA@EE@CE@GEA@EH@GGUEEJEAYD@JM@@DAA@FHD@FTJEHUC@JUBKCKG@G[CIIQReAYhO@OXGDO@@FF@IHJFCPEBACBIAAKDOABXARHPNEHGbQAAKQFGIAM[C@WHKaGiCEGOA‹HUKCIokSCUSOCYN[BgGMFIR±ŠOZmHWNU@ShbbXDHVXXGJ^lZ@PZ\\Nb@\\FHJAD'],
'encodeOffsets': [[
118750,
41232
]]
}
},
{
'type': 'Feature',
'id': '110115',
'properties': {
'name': '大兴区',
'cp': [
116.4716,
39.6352
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@F\\E~DFN@BDFEpHFCHBBEGCDCJBHUDSBB@ELCPbF@B\\J@BJVAFJ\\ADKTCBGECFMT@BMN@@FH@DaNBEnvB@FPBATK@FHEFIAKFBFL@@PKBFJHC@FXBRAFCDMPDTOL@JIVFDHH@DDH@BGRFCDLD@N^@@CNA@KNOAEBCECFEGCFGMGFIPMOEJOLBADBBHGG@GCHIECY@INC@DMGS\\AIOZAAEYA@GT@KKMBEETCGMVINFxA@MJADB@FlA@HJA@NND@DFA@DVAZBBOFKH_JA@K^GBC@EFE„G@gAENMXKJigC@IbSJMqGOP£RGSMGE@kbQFDPEFiBSGGSBK]I{CDWCIDOic[C_G@SuSO@EWKCO@MNY@\\uZOPENQD[LKESSKGBKEG@EJGAGHoH¥CqhifeJkX_XFFGHFNEDFPENKHM^IFIVL^S`DVEnNnG`RTCJHH@R^XFXGVPP'],
'encodeOffsets': [[
119042,
40704
]]
}
},
{
'type': 'Feature',
'id': '110113',
'properties': {
'name': '顺义区',
'cp': [
116.7242,
40.1619
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@EhEBENXHFNYDJHCD@RJP@R[ZARX`DbjZF@bHXT`Jb@dIFMTGDSfAJVbGnJVM@OKELYPERVXRflXTT@NIfC\\NJRhCVEHFJXNT^DTeZEHYCOhuAMJELOdAVPTMOWBWNMNEJgl]@WGUFIC[T{EEDEHGCIGMI@SECUQI[D{A{GQESPUH]CsiMCmHUeoHENcAaDGCMDGMQCACCBaCGLMAHB@DIEQLOAAEEJ@CW@CDINGAAGKQOCgV@LG@BEGDKNeREFBNCFIDOPKD[@YRW@GFWDAFE@EHDDrLDTCPGF',
'@@KrJEH[\\B@FF@CHFBHUN‹AJKADGECBCMAG^E@EbI@BEGP'
],
'encodeOffsets': [
[
119283,
41084
],
[
119377,
41046
]
]
}
},
{
'type': 'Feature',
'id': '110117',
'properties': {
'name': '平谷区',
'cp': [
117.1706,
40.2052
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ZJZRafFLjn€VGNJ@LLBdXX\\T^EDMJ@”nZKLBjPPJ@HbA\\H`DbERHLCFK^BZaFWXQLAGMHa\\OLO@SBIpBdCLƒVQfElO@GSAKEDQTC@GEBKG@ORIJBDAPDFA@CaOq@GGQAAEJK@KMUGAAGEAa@MGMBGCGSIIW@WSUCMDOJeWOM@IUF{WMWaDIMgIoRoCOKeEOEAG_I[cg@wLIFENQFDVTFJ@HNDJGHCFFFS|D\\EJHV@Xk^IhMFMNAXPX'],
'encodeOffsets': [[
119748,
41190
]]
}
},
{
'type': 'Feature',
'id': '110112',
'properties': {
'name': '通州区',
'cp': [
116.7297,
39.8131
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@FDAJTGDNDCTDDEDBBE@DT@@EHCDGJ@EIZ@@FDBR@ATFBBVFFE@@HNA\\VE@CLIFNJFNJBCP]A@LJFA@HJEDD\\C@DBCHLAEPF@@DH@APHAERDF\\GIxDTM@CFLBBFJ@CNUPMHECGDBF]BMFPDLRBHHBJMDCX@@DFIBFPBRKJF@CGANBHKbDDABDRDHNNCHDbCdBFMpGHiOYMefKJMC}HWAUNW\\NNBNA„kNU|]HMTMN@MZBLFFF@RIRUT‘BMFIEGaAGGAOIIUGTSFcYKS@MSLYPKRUBU]EWDOI]CKGASgW@MTWKIMCS@uMAKKADMECGAKVUTSDy@IjWLMNBF@hƒHEF@FAD]H@LIBG`ELAPYAUB@CEB@CMC@MIB@GkB@ECAIB@NwBMEUJHNSDFFNALLS@@HZBBFYBJP[BHTCND@JMZ@FDGJHDH@GHAABCKAIPPFONEJNHEHHDEFFDADBFMP@L'],
'encodeOffsets': [[
119329,
40782
]]
}
},
{
'type': 'Feature',
'id': '110105',
'properties': {
'name': '朝阳区',
'cp': [
116.4977,
39.949
],
'childNum': 2
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@bFGHBHFBFIVFHHG@@FFB@HDFF@@FRB@LXGt@DHCH@PBDLFBNF@BEXCHEX@ZQ\\@LCPOJCDEAMFEfQLMHCAFH@@KhUNE^AAEHCFDNGVODMI@AEKADEN@CSJw[HCEFQGBBOG@@CE@FOKBDGCAD@C[FCGIB@IE@K^BDOIAEMMIJEDKF@[UMB@GF@EEAUEABSQ@CA@EY@FJI@CHGD@FS@@CAFCACFSCCDCMSHBIECMB@D]@@MKCDCQEAHG@CCG@CGUEIJK@SPOCCNEDQBDNDB@DJCDLFCBBALJB@BVGPBKVO@KHCCCD@FE@BNA@FNCTDDJA@FGB@NBDW@CL@hT@@ZHHQDDDAFSAANBC@HG@EFS@@DE@@PCB@Ue@CADNJB@FCBWA@LI^ix@FIHrH'],
['@@HUN‹AJKADGECBCMAG^E@EbI@BEGPKrJEH[\\B@FF@CHFB']
],
'encodeOffsets': [
[[
119169,
40992
]],
[[
119398,
41063
]]
]
}
},
{
'type': 'Feature',
'id': '110108',
'properties': {
'name': '海淀区',
'cp': [
116.2202,
40.0239
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@plDJVLŒGPBFHjDbHGL@X\\DBNHJREBLRBHaFGŽMGOBQAWPBLCBBAJBDFADOIEJGE@@EP@HCPWP@ZgfBRQJJ\\D@HLHLDVA@IVDFGSI@EGC@EBB@CN@@IZCAGHGaEqGJG@EjwJ]@K@GSA@e_I@NE@CA@Kg@KC@ENCFƒAKQAW@WIMK@V‹@I@@F@^EDFB@HcIaDYCBRRDCHD@EFLN@FE@CJUPEJOJMTBPEDIFCMIAKNOGMRFJNDVBFLSRMJSDGJsFcEiJGDGTIlOjYD'],
'encodeOffsets': [[
118834,
41050
]]
}
},
{
'type': 'Feature',
'id': '110106',
'properties': {
'name': '丰台区',
'cp': [
116.2683,
39.8309
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@hMN@NFTQCFRCBJFA@HJ@@HJ@HJ\\FTACDŒ@@UNLXJX@@MA@@IECAQlDFEHBDI~D@GXCFMVDFCH@@NF@ANJC@FnAB@AMF@@EDCDDLGP@LUOAUH@AIABKAAEDCKID@CCACMWA@EGDEILA@OK@AELEJBFEEGL@BSOA@EuAFmMACbG@@EM@ANS@ENFDAHSDCL[BEIUBAII@A[E@OaKD@FAACTGVIACDHDAFGAEDoGEFACM@i€g@@QFCMKMU@]SCoBGSMQ‰DEXXDWPO@MKYGM^AdJJA\\cNB\\G^„DNHFCBFABDBJ@PL^D@DF@T@FDAF^A'],
'encodeOffsets': [[
118958,
40846
]]
}
},
{
'type': 'Feature',
'id': '110107',
'properties': {
'name': '石景山区',
'cp': [
116.1887,
39.9346
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@NQPHLMJBDNJEFCAONSPIFIVODIF@@EKMFEC@DGQCAQZDbCdJ@GEAFC@]@EJ@DCSB[EGII@@GI@@GEBAIQDDESRMEM@gNYTIRKJAJEJ[DFJKLGBGNBJLDCDAHGBJJAFBLEXTLZFBAFDLD'],
'encodeOffsets': [[
118940,
40953
]]
}
},
{
'type': 'Feature',
'id': '110102',
'properties': {
'name': '西城区',
'cp': [
116.3631,
39.9353
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XBDA@EIACM@IJAD]BC@SFABISAD]H@@OAEDQEW@BLE„MD@FLDh@@LDBF@@M`J@fTB@H'],
'encodeOffsets': [[
119175,
40932
]]
}
},
{
'type': 'Feature',
'id': '110101',
'properties': {
'name': '东城区',
'cp': [
116.418,
39.9367
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@DBf@@VDA@OF@@CT@FEH@@GADBMTBBECCRCGG@YS@@gDK@A‘C@PG@C^TBAJEB@TADC^IB@J'],
'encodeOffsets': [[
119182,
40921
]]
}
},
{
'type': 'Feature',
'id': '110104',
'properties': {
'name': '宣武区',
'cp': [
116.3603,
39.8852
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@RBX@RFFCŽBFU@aK@WA}CCJGAEFkCBRFD@JB@@N'],
'encodeOffsets': [[
119118,
40855
]]
}
},
{
'type': 'Feature',
'id': '110103',
'properties': {
'name': '崇文区',
'cp': [
116.4166,
39.8811
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XBL@@bEV’D@BX@AC@MHA@EIBCCDSEMmB@EIDBME@@MG@EDUCENWD@H'],
'encodeOffsets': [[
119175,
40829
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/china_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': 'xin_jiang',
'properties': {
'name': '新疆',
'cp': [
84.9023,
41.748
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@›ρȁôƧƦóəʵסʵóƪԫʵѵͩƧͩړ›υࡓɛʵ@ȃ@óᇑѵƨɝɚôóНѺͩɜ̏ԭʵôƧɞñ@υƩ—݇ȂóƩƧ@ѵȂυœƥŌਗ—॥ɛóʵѵƧѹ˜݇̍ࢯ˜əɞυ˜ρͩ̏óਙƨƧŋôōóš̍ͩóʵן›óŋړͪƧѶ@ɜԭ—ԫƦɛȄ̍›ɝȄöςƩȂ̏œñȀ̏œƩóóŎə˜@Ő̎@ɞȀɝŎôƨóנѵȄƧ@óŏɝœóɜôŎ̍ͨςŎ@ƨóôƨɞ݈ʶóƨφó̎Ȁƨ̍ԮòѸԮמ@ѺȀ@ƪၬֆòȂñ̐òȂɜ˜óƨ̒Ŏ̑߼@φρȀ@Ő๐ς̎Ƨφ@ɝφڔ೦Ԯǿࢰ@ƦŏԮƨƨȄƧ۬ɜʶڔŐɚɚóŐôƨ߼˜ôƧƧó̐ƥóŏѺǿƦȁφƧς˜ƨƧ̒@ɜƥƦυ̐ɛƪͩƩəƪʷ̑ə@ȃƨʵנŋྸōਚԭԪ—@ɝƨŋ̒օςʵôƧ'],
'encodeOffsets': [[
98730,
43786
]]
}
},
{
'type': 'Feature',
'id': 'xi_zang',
'properties': {
'name': '西藏',
'cp': [
88.7695,
31.6846
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôŌנœôʶ̎ͪô™óŎƨŌਚƧ̐ôςͪφ—ɚɝࢰ—݈̎Ѻ—Ѷƨôʶ०ɜਘ˜Ʀŋφ›Ѷȁ̍—ôŏɚŋ@̑ə—@ŏò̍ɜ›óƥôʷƧ̍φѹԪ̍ע@Ѹʷɜ@ôñנ@Ѷɛɞô̐ŏѶƨѸƧƥōƦœôŏô—@ƧôƩ̒ŋƨŌƦǿô̎ɜȁ̒—óʶѶôôО̒›ςƥɜНφσɛȁ̎υƨఱƧŏ@ʵƥœ@ŌóóóͩƨƧóŋ̑õóɞóɝԩͪɝρôƧ̍ƧѹͨڑŎ̑ōóƧࢭͩ̏ѵɝóఱóóԪυô@̒ƥŌ̏Ƨ̑Ȅ݇ŎƧ›ѵӏ@ɛõŏɛȄôӒƧŌѵǿɝ˜Ƨŋԫ@̏ʴƥ@óǿ̑Ȁóǿ̍ςóóυô@ʶɛñρƦƩŐó̎óœѵó̑ͪࢯОóɜן˜Ƨ̏ƥȄ߻̎̏̐ןŎɝɜöɞƩȀôöɛȀóͪ̐ƨƪ̍̎ȂƥԪυО@φɞ˜ôƪ'],
'encodeOffsets': [[
80911,
35146
]]
}
},
{
'type': 'Feature',
'id': 'nei_meng_gu',
'properties': {
'name': '内蒙古',
'cp': [
117.5977,
44.3408
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ኊȁ૊ö߼ƩɜɛנñԮɛѶóԮô@ȁѸóמ̎ගѺၬ@߼ʶԮӒ߼̎@ŐѹӒ̒Ԫƨöග̑ѶȄ̒ς।œѶɚöɞɜʴڔôôȂ̎—ѺȀς—ƨ˜ƪóԪ—ɜôɛОਕڔԭ˜ѵ̍ѹȂԫ›ɛƥ̍Ȃóɜ̎ô@ʶ݊ੲࢮʵږͪנƨôȂƧ˜̐ͪ@ŐƦƨφԬѶɜôƦ@ŐƧôôƦəŐ̏›@ŐڒѶԬô̐ʳԩНςōôŏɞ@ƨȂѶəóƧ̒ػ̎ó̐Őנóƨô̒@ƨɚɚ@עԫɛɛ@ȁυͩƥʳòևρ—̑ࡗƧͪ༃ॣԮփ̎Ʀ@ôô@ôō@š@ȁѵóƨ̍υȃóʵɛƨƥóυȂóəƪ›̐ρƧͩɜԭڔȄ̎عƧȁ̐ŏó̍ɛ›ƥƧ̑óρŐ@Ƨ̏˜ɝəɛ˜߻ͩ̍ͩɝО̍ƪƧóóӓƨóƧʳ݇@ɝςƪœ@ʴƩ—ƧƦôƨɛȄə›Ƨŋυ›óͩѵ@ɝǿóŌן̍ɛ˜óО̍œ̑̏ôȁ̍ŏòȁñóƦͩ@ǿə@ɛƧ̑˜ρȁυô̍օѹœóȃə™@ȂσʵѷƪòƩ̍—ôó߻ۯôʳƧ™óšõʵѵóѹɜ̍ȂѹôɛŌφֈƩͨρóυӑóޟఱ̑݇ͪóƪƨŌóȄڔԬƩςםñ̑ȃѵŐԭŏƨȁɛǿρôõɚɛóƧОə@ѹ̐ѵöԪͨôͪɛ̒ןŏƧƥóôƥƧɛŌôóɝó@̒݇Ӓ̒Ō@Ŏԭࢰ'],
'encodeOffsets': [[
99540,
43830
]]
}
},
{
'type': 'Feature',
'id': 'qing_hai',
'properties': {
'name': '青海',
'cp': [
96.2402,
35.4199
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƨ@ôƪ݈ȁƪ˜@φɝòóƨԮʶɛ̐ѹͪôОəóƧɞᇒѶ@ôږô@ǿѶ›ƪȁςœɜͩφ˜ςŋɞôѶɛƨŌɞ—@ɚςŐñԪॢͩƨȂɞóƨŐ̎ŏעӏ̎óƧƦôœ̒ȁɜ›ςͩ̒œɚɛƨôƨɝφɛóȁƨŋóóɚͩƨóóƩ@ƧəŋƦƩ̍@ƧƧôǿυ̑@ȁɞǿõŏρƥסɚƧóτԫɞœôƧƦ@ñȃòñƥóυôôѹѵ—@ŏ̏Ȅɝó@ȂəŌóəѹƦ@Ő̍Ōυ݈ԩŐƧóôƧ̑›ôʵɞƧ̑ѵôƩɞƧ̑œóНѵóôʵ̑˜ɛȂó̍ƥȀƧŋ̑Ōóƪ@ƨó˜óŐƥ›ƦŎѷƨѵƧ̏Őɝóѵɜן@óòɛ@ѷʸס@ԩ̎υѺƨ̎óʸôƦɛœñ̎@Őɚ˜@̒əŌóŐ̎˜'],
'encodeOffsets': [[
91890,
36945
]]
}
},
{
'type': 'Feature',
'id': 'si_chuan',
'properties': {
'name': '四川',
'cp': [
102.9199,
30.1904
],
'childNum': 21
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ô˜ôŋó̑Ԯ̒ɛОמͪƨōöͫ߼ƥôȃƨóóñôƧóƧôōڔŏƨŐ@Ŏô˜òƥѺŎ@ōɜóנ˜ôǿô›ƦôԮ̍ɜôɚ›Ƨ—ñɛɚȁ̍Ƨɛևυ@óóôŋρԭɝ@Ƨʸ̍ŏυɜƧƧóƧƨȁρ̍ƨȃɚ—ôʵφóô̑̏Ȃ̑ʵɜʵɞ@ƨʳסƩóŎə—óɜƧôƩƧρ˜óôôô@ŎƧƨƨƪѹ˜ó̍̍Ʃ@̏ѹНôޟ̍Ʃóƪυɝɛ—əƨôŎɛȀ@Ȃ@ñɝʶ@Ōρנ̏—õóɛͨƨȂѵОɛʵ@̏ƩŐó߼Ƨల̍φɜȂυτɛОρƦɝƨóƪ̒Ѷɝƨóʶ̒œóƨƨôԪŏφ݇̎ŋ@ŏѺƥôɚɚŋ@ȁɞô̐ȃ@ŐѶ˜óѺφóƦôñòòȄ'],
'encodeOffsets': [[
104220,
34336
]]
}
},
{
'type': 'Feature',
'id': 'hei_long_jiang',
'properties': {
'name': '黑龙江',
'cp': [
128.1445,
48.5156
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ᇔȂਚНƨŐѶŏöƥςŏñƧƦóƨȁ@óƨ—óȁφӑóóƨ˜óǿ̎̑ôНɞ—ó̑ɜə߼›̎ǿ̒ôڒӑφ@Ƨȁ̎̏ƥƩ̎ρశ˜ôȂςƨφ@נɞ݈˜̑ƥƧɛƨʵƧȃƥ@Ƨƥ@ŏ̑ԩôɝρρóɛƧ›ƩͩƧó߻ʸ̍ʷѹƥɞڕõ̍öɝυ—̍ȂƧ̐̑ŏóƨñŋѹóóȁ̍›̏Ԭõʸ̏ŏ@ǿ̍@ƧОυ@ñƨòȀƥŎ̑ŐѵóɛŌóȂԫōƧŎѹñ̍ʶóОן@Ƨ̎Ѷô@Ȃ@™óŎó@@ó̍ƥԭք༄।ƨͩ̒ࡘς˜ñֈƦʴφͪ@ȂɜɜסԬə@Ƨə̑@Ƨóןô̏ŏ̍ô̑ؼôƨѵɚƧȁɝ@óŐρŎԪО̏ʴ'],
'encodeOffsets': [[
124380,
54630
]]
}
},
{
'type': 'Feature',
'id': 'gan_su',
'properties': {
'name': '甘肃',
'cp': [
95.7129,
40.166
],
'childNum': 14
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ڔôԮࢯ@ō̑ŋ݈ӑ@̑ɞôóôɜŋƦƨôóƨƦנŐɜ̑óͩԩͧѶõѺ̏ɚ@ƨНɜôöəςóɜȀƧȂԮŐѶŏ̒ȄמòƪρړԫôȃƧŋôƩ݈ͩɚ@@ǿɜ@φͩóŏɜӑƧōôǿ̎›ôƥƪóõ›ö@ô—ƨ˜ôƧƦôó̒ɜ@ɞŌõʶ̏Ő@ȀóôƨȂ@ʶע@@ƥ୾ӑó̑óŋôʵóɛړ@@ƩöóƩóρ—ɛƨ̑@óʷƥƥ̎ɛƧ›ôōƧǿôͩѵôɝȃɞȁõƧρóó—@ōƧŏړŐóŎôƨóƨôòƧôóȄ߻ƦõͬƧŎםͩɜНԭ̑ô̒óŌó—ƥ@óƨɝ›σԬƨôעəςƦöŐɝȀ@Ȃφ̒óȀƨƨ̎@ƥƪɚŌ@ƨôƪƧôəͪôôƧŌôȂυɜƧɞƧóəɜ̑›ρͪɛœ̑Ȃó›ƨƥ̍ôסӐ̍ŐƧŏɝôƧȁॡͪòԩρŏ@əɝ˜ƧŋѵɜɝóρŌυ—ɛͪρ›ƩȂѵœ@Ȁڕó@ȄɜʶφࡔڔœƨͪѶͪԬʶôƩעʶɚʶƥôóƨςȂ'],
'encodeOffsets': [[
98730,
43740
]]
}
},
{
'type': 'Feature',
'id': 'yun_nan',
'properties': {
'name': '云南',
'cp': [
101.8652,
25.1807
],
'childNum': 16
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôɞôɝ̒öôŌƧƨôͪôô@ŋƦ›@ʶƨŐô߻ƪŏ@̐ɜʶѶНƧȁɜͧöô̐˜ςן@ŋɞʵ@ò@ȁɜǿóōɚƧɜ˜φɞôƩ̎ƪóޠѺО@̐̎ƪô̎Ѻ—ƧƩƨƧ@ōóóôóς—ƪƨƨóôɛó̑ԭ—ƥŌɛǿɝƨɛͩô›@ǿƨȁѺŌɚɛ̍ןѶНɛƧôóƥȁƦͩôŎɞ—ƨ̑ɜ—òôφ@ƨʵ@ɛѹōóȃəƨυǿóʵρƧƧŌƩɛ̏ȄñƧƧȀɝ̍ԩʶƧ̑υ—óŌƥʳɚӑóНƥô̑›óӒѵʵѹœƧӐןôƪφõŌƪ̒ԫŌƧؼƨƨס›ρȁƧœƨȂóʶó@@ʴƨôôφ̎Ŏ@Ȁƨ—ƪɚƨœóƨôôôςóޤƧŌƩŋƧԪ'],
'encodeOffsets': [[
100530,
28800
]]
}
},
{
'type': 'Feature',
'id': 'guang_xi',
'properties': {
'name': '广西',
'cp': [
108.2813,
23.6426
],
'childNum': 14
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƦŋѺ̎ڔʵƨŐ@ƦמȄƪôóȂɜŌɚͩɜ@öóɜôôȂƦôɜȁ@ɞφ›óȄ̎›ƨʶɞŋƨʴɚǿ̐̎Ԭ@ôñ@̏ƨ›ρ۫ô›ɚƨƨНƪŐ̎›ƥóƦʵƥŋ@ȃóƥƧ@@ŏɝǿôυƧȁѵɛ@əóŏ̑@@ə̍›óƧó—@ȁƩ˜ρóòНƥô@Ӓ̑@óŎ̍ƥσŎυ@̍ƨ@Ō̑ôóͪƨ̒óŌړœ̏Ŏ@ŌôȄѺŎ@ɜƧʶυ@ñóɛ˜Ƨ̒ɝ˜óōƥͪ'],
'encodeOffsets': [[
107011,
25335
]]
}
},
{
'type': 'Feature',
'id': 'hu_nan',
'properties': {
'name': '湖南',
'cp': [
111.5332,
27.3779
],
'childNum': 14
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@քɜОƨ@öŐמóƪôƩɚ̒Ő߼ȁςͩɜòƪ—ɜȀò—ñɝò—Ѻͪ@ŏƨŋóɝôǿƨ™ɚȃóəƨȃѵͩó̍@ȃƨóóƥƨƧ@ʵƦ›óͩɜ—ɛóñԭɛōυȂ̍ƧƦō@ɛƥ—ɛȀ̑œóʷóō̍œƩŏƧОəƧóœς۬Ƨœ@̐óòԫ@̏̍əȀƧʳɝŌóɞƧ˜ƨɜóŐƨò@ȄƧŌρŋóôԪОóʶ@̎óȄ'],
'encodeOffsets': [[
111870,
29161
]]
}
},
{
'type': 'Feature',
'id': 'shan_xi_1',
'properties': {
'name': '陕西',
'cp': [
109.5996,
35.6396
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ςôöƨɝȂɞȄѶóóͪƨȀóŎƨœ̍ɜƦƦôʸ̒@ɜƧς˜ƪôõô@ƪڔ@ôɜóʶôŌô̒୽Ӓ@Ʀ@Ѻ̎ɜѺɛѶôöʶô™ƨšóʴ߼۰óô̎˜ñƪѸƩτʶ@ȁòŋəѹóǿ̑ʵ@ȁ̒ʷυփô݉ôН̏ط@ȁƨóô̏ƪõ@ʳ̐ʵ@ɝɛŋƩŌɛóןôƧŋ̒ó@ŏ̐ƥ@ŏυ@ƧƧôן̏@ƥȂѹɜəœɛóԭ̎ƥóóœóȀן—ɛô@ŎѹōñƦ'],
'encodeOffsets': [[
108001,
33705
]]
}
},
{
'type': 'Feature',
'id': 'guang_dong',
'properties': {
'name': '广东',
'cp': [
113.4668,
22.8076
],
'childNum': 21
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@@Ȃô˜ôƨ̎œ@ɚ̒@ôŐ@ɚѶɜƨȂóφɞȀ@Őƨ@ôƦ@ȄƦŌƥʶƦôôŎôʸ̒›ɜǿƦ˜@ɜƥŎ̎ƨφȁɜŎòƥԮŎƨōóŏɛƧɝəɞƧ߼ɜςȃñȄƦŎ̒ōôòƨəƨ˜ɚН@əƨ̏ƪʵυŌəɛóəԭŏəœóŏѹœρʵɝƦ̏™ƥʳѶ›öō̑óóŋρȀυƧƥɛѹōƧôן—ɛŏѵ@óŋôʵɝ›ƪԩõ@Ƨō̍@Ƨ@@ƦɝԮƪО@@',
'@@X¯aWĀ„@l'
],
'encodeOffsets': [
[
112411,
21916
],
[
116325,
22697
]
]
}
},
{
'type': 'Feature',
'id': 'ji_lin',
'properties': {
'name': '吉林',
'cp': [
126.4746,
43.5938
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@נ@ôН̎ʵѺòƨōԬŎôȁɜŋѶô̒ŏƦōñǿòƧφ@ƨН̎@@Ȁ̐Őöʷ̐ԫ̎œôȂѺôòŌôƧ̒Őƨ̏̎ȁφ˜@ŋƩͩםȃƨ—@ȁ̑ʶ@Ōóôɛœƥѹ̑—συ݇@ɜρƧȃࢯƨôœəȂɛōƩɛ̏υρóõœƪʴυφ@ʶôŌóœρք@ɜƧ@ɝǿƧͪρȀƩó̏ŐƨȂ̍غړȃɛԮƨͪ̏ςƩœôɚφȁƦôɜƧôʶφȄ'],
'encodeOffsets': [[
126181,
47341
]]
}
},
{
'type': 'Feature',
'id': 'he_bei',
'properties': {
'name': '河北',
'cp': [
115.4004,
37.9688
],
'childNum': 11
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Ʃ̒̏ŌѺ̒Ʃ˜óȄƧŌƥͪòôñȂ̎ŐóȂ̒̐̎›ôНɜ—נ̎ôŋɞȀѶ@ôͪφœƨŌɚœɜȃóƧƨƥƪ˜@ʳƩ›ɞρ݈@υНφʵɜ˜ƦρƨƧ̍ɝóɛѹ̍ρŏ̑ôóƨ@œƧƦôƨɛ@ƥƨ@ȂƦ@@ôəŐƧʶƨŌυœ̍̎ɛŋôōɝ@óƧ̍›ƦʵѵʳôʵɜŏςôƪŋƨŌɚ@ôНƥƧ@ōѸɛ̐ô̎ʵѵНԭ@̍̍Ƨò@ȁɝ@əρυͩƪ̏ƩõƧŎƧōóšॡȄɛʶɜȀ@ɞςѶƧœƥςɛŐ@ɚɜɜ@Ŏôôςœƪς'],
['@@õə@Ƨɛ˜@ŐóƦφô']
],
'encodeOffsets': [
[[
117271,
40455
]],
[[
120061,
41040
]]
]
}
},
{
'type': 'Feature',
'id': 'hu_bei',
'properties': {
'name': '湖北',
'cp': [
112.2363,
31.1572
],
'childNum': 17
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ñȄυƦöŐƩ˜óנƨƨφ@@Ő̏Ʀ@Ő̑ôƨŌנóɜôƪŋɜŌѶօڔə݈òɞōɜŎôӏƦóƨô̒óôȃƨó̎ŐôƧƪ@ƨȁςƧə̑̎Н@̍Ƨŏρôԭͩԫ—̍ʵƧšóȀôɞƧŌ@Őѹͩñ˜òɞñ˜ɛǿƩ˜ɛñρͪ߻Ȃ̑ŏƪəƩóםôõŏƧ@ɛНƥȄó›̑ѺƧ›ôφóƨƨƦƪóɜŐôóòôƨóφ̐ƨóƦ̎'],
'encodeOffsets': [[
112860,
31905
]]
}
},
{
'type': 'Feature',
'id': 'gui_zhou',
'properties': {
'name': '贵州',
'cp': [
106.6113,
26.9385
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɜȀƦŋԮ˜ô̒ɚ˜ôōעƪƧʴɝ@ɛʶ̒ʶ̐ȁƦœóȂô@ôŏ@ōô—ƨʶѸô@ʶƨ˜ɞó@ōτöòυƨ@@əƨô@ɛ̒@Ʀɜôȃ@̍ôʵԩНôóςŌƨŋ@ȃƧñôŏƧɛƨ—ôɝƧʵ̍œôȃυœ@ɝɛȂƥóóȁɛóõôɛ@əͪɛŋôȁƩóםȃ@ƥƧŏړʶѹ̍ƥŌƦȂóôɜƨѵО̎נəɜѹŋƧȂ@ȀóœɜͪɞƧ'],
'encodeOffsets': [[
106651,
27901
]]
}
},
{
'type': 'Feature',
'id': 'shan_dong',
'properties': {
'name': '山东',
'cp': [
118.7402,
36.4307
],
'childNum': 17
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ʃ̐φͪɚςɞ@@Ȃƨñ̎̎Ԯ@ѶОƨƧڔ@φН̑ŋ@Ʃ̒ǿ̎@ƨɜԬςôʶ̐ʶöԫƨƧנƥɜŎôō̎@ôŏóρƧŏԫôóƧԩó@ƥɜƧԭóƨʵɛƨ߻ӑɜНԩ˜óô̑óƧʳə™óɛƧ@õȀƧœ̍ȃɛŐóŏυО̍—óɝƩ—ԩ@ƧɚԫȄɚʶƨ˜ɞʶԪ̐ړɛƪ̒'],
'encodeOffsets': [[
118261,
37036
]]
}
},
{
'type': 'Feature',
'id': 'jiang_xi',
'properties': {
'name': '江西',
'cp': [
116.0156,
27.29
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƧȄôɚəȄ̎ʶԬ˜ԮͪςóƨŐƪ›τɞƦōƥƧ@ŏςôóŐôô̒ʷѶ—ƪƩƩǿ@ō̒ɛôυ@—Ƨȁѹɛəƨѹ̑ƨ̏óƥѵʷô̍ɛȁôŏɝǿƧԫƧ›ôʳƥōòȃρȄ߻ɛɝƨɞɚɜƨôŐƧŎԭōñƦòԮɜôɛ˜ôͪƥœ@ʶƧƨôƦƧô@Ȅô̎Ѷͪ'],
'encodeOffsets': [[
117000,
29025
]]
}
},
{
'type': 'Feature',
'id': 'he_nan',
'properties': {
'name': '河南',
'cp': [
113.4668,
33.8818
],
'childNum': 17
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@φ˜̎ƪ̐˜ɞȄɚ@@Ȃעó̎ŌѺ̒ôֆॢȃô™ƨŎƨōƪöƩ̑ڔɜԩ̏ɝʵƧ—əʵԬȃƨəԪ@@Ƨ̒ŏô̍υȁƧɚ̍ôóŋ@ɝƧŋõ̑σ—@ŏɜŋôɝ̒ƧɚôôطρóóɛƩ@óƨ̍ŏƧôóȄ̑ôƧóƥôóӐɛōɝŎ݇ñړɚѵֆ@ɞ̏ʶ@ʴƩöó̐'],
'encodeOffsets': [[
113040,
35416
]]
}
},
{
'type': 'Feature',
'id': 'liao_ning',
'properties': {
'name': '辽宁',
'cp': [
122.3438,
41.0889
],
'childNum': 14
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƨʴƧôôӔƨô̎ƩɞН̎ͪ߼ͪɜ—ɞɚ̐—@ƨςŏ̒ôƦƨɜœô̎ƪôςǿƨͩɞȀƨ@@ɛςփô›óŋ@ʵφυƩʳö›॥փρѹס@əɛ@ͩࢯ@ѹʵρ—ƩʶφȀƧ݈̒۬óʸɝŎѵ@ԭԫןɛƧƨƥςɛ—υʶφО'],
'encodeOffsets': [[
122131,
42301
]]
}
},
{
'type': 'Feature',
'id': 'shan_xi_2',
'properties': {
'name': '山西',
'cp': [
112.4121,
37.6611
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɚѺñŌɚšôȄѺ›̎ֆφóςȂ̒—ɜƨɚ@@Ȁƨŋôȃƪ—ѹ̑̐ŋƪ̑Ʃρρ›óó@ōɛɛ@əɜŏƦρƨ›ρѵ@ɝɛǿɜʵóօѹ̑̍ŋסô@ȁə@ɝȃ̏—̍Ʃυ—Ƨô@Ȃ̐ظóОó݊φք̑ʸ@Ȃ̒ʶôȀ'],
'encodeOffsets': [[
113581,
39645
]]
}
},
{
'type': 'Feature',
'id': 'an_hui',
'properties': {
'name': '安徽',
'cp': [
117.2461,
32.0361
],
'childNum': 17
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ó̎̑Ő@ƨƪ˜Ѷǿɜ̑φ—Ʀʵ̐˜Ƨѵôóƪôôυς—ƨȂɞŏ@̍ԫôò̑ƥ—óȃѶͩƧƥôŏѺœôŏƦ—@›ƥͩƧ—ôȁυó@̑ƧɛѵʵƩƪѵ˜̑ʸóóôŏρó@ŐƦƨƥŎσɝƩœ@̎̍Оɚ̒ρƨƧȂôɜςôóظəó̑ƨóɞɛŌ@Őτ˜ö̒ƨŌ@ɞôŌ̎óƨəφȂ'],
'encodeOffsets': [[
119431,
34741
]]
}
},
{
'type': 'Feature',
'id': 'fu_jian',
'properties': {
'name': '福建',
'cp': [
118.3008,
25.9277
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̎›óȁƨӑ̒—̎ɚƨͩφŐƨɝ̎ŋóŏρ—@ōƨ›òʳəóƨō̏˜õɛƧ@ƨѵƧōəŏóŋƧô̑ɝɛʳƥ@@óɛõ@Ƨ̑ƧóȁəƧ̑—Ƨ̐@ɚəОƧ—Ƨɚóñ̑ŎóʴƨœƨԬɞȀóŐɜȂó̎ѶʸôƦƧ̐Ѻ̒ɚƧѺɜƨȂ'],
'encodeOffsets': [[
121321,
28981
]]
}
},
{
'type': 'Feature',
'id': 'zhe_jiang',
'properties': {
'name': '浙江',
'cp': [
120.498,
29.0918
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ѷʶƨɜ@̒φôóȂƨ˜Ʀͪ@œ̐˜Ѹ̍τȂ̒̑נŐמôƪƧôӑ̑›@ƥρͩƨօ̏@@υɝó@ŋɛ@ôƩəóƧѵυó@ƩɜŋƧ@̍ŌƧɞυŏƧͪ̍ə̑˜ƧӒôȂ̍œ@˜óφ̑ɜ@ŎƪȀ'],
'encodeOffsets': [[
121051,
30105
]]
}
},
{
'type': 'Feature',
'id': 'jiang_su',
'properties': {
'name': '江苏',
'cp': [
120.0586,
32.915
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôɞ̎˜φНôŐɜŏ̎Ȅƨ›öǿƨ@ôɜɚšƨʴ̒ôôó@Ƨ̎əԮȃԪૉöͩ̐ƧòʵφƧôʵ@óړɜóŏɜǿƧ›ɝρσȁѷ̎̏—ƥ˜óŐѹ›óŐƨƦѵͪôȄƦ˜ñ̒Ԭó@̎ɝŐƧȁρ˜óφƩóóôƨѶ̏—ƥʶυ˜ɛ̒ѵȀ'],
'encodeOffsets': [[
119161,
35460
]]
}
},
{
'type': 'Feature',
'id': 'chong_qing',
'properties': {
'name': '重庆',
'cp': [
107.7539,
30.1904
],
'childNum': 40
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@əȂòɜƨ˜ѺɛƦȁ̐@ƪ—õŏφƥòȃƥ̍Ƨôυ̏ƧôñóóôɛŏƩôƧƥôƧóυƨœ̒ѹôœƦȃ@փƥɛ̑@@ɜƧó@ɚƧ@ñφσõ@ŎɝôƧ—@ʵѷóƧʵó˜@ŎóŐó@ôȁƥ›ó̒υôóʶə˜ƧȄς̎ƧȂôƨƨƨφɛ̎Őƨʷɞ@ςԮóŌôôφ@ɜֈ̎ƨ'],
'encodeOffsets': [[
111150,
32446
]]
}
},
{
'type': 'Feature',
'id': 'ning_xia',
'properties': {
'name': '宁夏',
'cp': [
105.9961,
37.3096
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ల̒ôޠφӒςôƪͧυևɜŋѺó̎ȁ̍ɛ@ѹס@@ʵƧȁôó@ǿ̐ŏöʵɝŋɛ@ô̑ƥóóƨƧ—ó˜ôœó@ƩôóƦ̍œóȀƨŎɛӒôŐυͪɛ@@Ȁə@'],
'encodeOffsets': [[
106831,
38340
]]
}
},
{
'type': 'Feature',
'id': 'hai_nan',
'properties': {
'name': '海南',
'cp': [
109.9512,
19.2041
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@φɜƦʶ̐ôφô̎@ƨŎö@τʵƦ˜ԩ۫õН̏óƥȃƧ@Ʃəםƨ̑Ʀ@ޤ'],
'encodeOffsets': [[
111240,
19846
]]
}
},
{
'type': 'Feature',
'id': 'tai_wan',
'properties': {
'name': '台湾',
'cp': [
121.0254,
23.5986
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ô—ƩɝöƧɝѵəޣ̏ρƩԭóōóͪρɞƧОôԪ݈ଦѶɜ̒ɛ'],
'encodeOffsets': [[
124831,
25650
]]
}
},
{
'type': 'Feature',
'id': 'bei_jing',
'properties': {
'name': '北京',
'cp': [
116.4551,
40.2539
],
'childNum': 19
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@óóó›υóôƥ@ŏóóə@ƧŋƩŌρóɛŐóʶѶʴƥʶ̎œôƨɞ@óŎɜŌ̎̍φ›Ƨŋƨʵ'],
'encodeOffsets': [[
120241,
41176
]]
}
},
{
'type': 'Feature',
'id': 'tian_jin',
'properties': {
'name': '天津',
'cp': [
117.4219,
39.4189
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôôɜ—@ƨöɚôœôôɚŏ@óƥ@@ȁƦƧɜ@óƧƨƥ@›ƧóəН̏óѷɜ@ŎƦƨóО'],
'encodeOffsets': [[
119610,
40545
]]
}
},
{
'type': 'Feature',
'id': 'shang_hai',
'properties': {
'name': '上海',
'cp': [
121.4648,
31.2891
],
'childNum': 19
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɞςƨœɛȀôŐڔɛóυô̍ןŏ̑̒'],
'encodeOffsets': [[
123840,
31771
]]
}
},
{
'type': 'Feature',
'id': 'xiang_gang',
'properties': {
'name': '香港',
'cp': [
114.2578,
22.3242
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@óɛƩ@ρ@óœôȀɚŎƨ@ö@@ōƨ@'],
'encodeOffsets': [[
117361,
22950
]]
}
},
{
'type': 'Feature',
'id': 'ao_men',
'properties': {
'name': '澳门',
'cp': [
113.5547,
22.1484
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@X¯aWĀ„@l'],
'encodeOffsets': [[
116325,
22697
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/chong_qing_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '500242',
'properties': {
'name': '酉阳土家族苗族自治县',
'cp': [
108.8196,
28.8666
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XJ°œlJX@lbl@XbV@VLnJlxnbšƒUU@IVK@lVIVwnJlU@n@J@L@Jn@l_nWVLVln@@blLšmV@@xœÔ‚`nœ™xV‚ÈLlx„LVxVVšƒV_U»VWn_m¥XwVmnX°ƒlmUUVwÞaVƒk@a@mmIUa@™mwk@™ƒm@@U¯a@UV@@K™@ykkmwkV@kU@ƒÑƒVkKWLÅamaUm@kyU@WkU@Ua™IUašVaUUmUUa@aVLXKWa¯UUbmJXnWnX`l@@xkzWÆ@V„LU¦‚x@b@JkIkJ@LmbUamJwm@óxƒnk@V„@x„ŽVnUVmVUVŽUbVlUbkXWŽ'],
'encodeOffsets': [[
110914,
29695
]]
}
},
{
'type': 'Feature',
'id': '500236',
'properties': {
'name': '奉节县',
'cp': [
109.3909,
30.9265
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@WVXb‚UnK@x@b‚²kxmKkl¯_ƒVV°™VU@bnKVVV@@nkŽ@n›bn‚@š°@VLČUš@°WV@V™nU@InKVl@nU„b˜KnX„WlknLlKUwnalLša„VlUXmWk@UU@UWWIUyķ¹XaWW@X™ƒKUIVm„U@W@UVU@KV@n»VkUkÇmUmVIUmULUbm@ƒwUaƒKkkm¯ÑUL@bWVnx@VmxUI@„klmkkK@aƒK@IlJ@I¯ƒk@mak@mnkJVL@bV@Ub„„W`UUUV™I@VƒU@VVbUJVLUVVbUX„VVxk¦VJUnVxnVVUšJV@Ubl@@bXV@L'],
'encodeOffsets': [[
111781,
31658
]]
}
},
{
'type': 'Feature',
'id': '500238',
'properties': {
'name': '巫溪县',
'cp': [
109.3359,
31.4813
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nLWbX‚VLVU„V@KšIVl@b„@lbšU„VnU@JÆU@V@n°KĢUl@VbÞKšVš@„_„V‚KXU‚U@KXƒ@wlkkU@mWKUU@UôJ@XV@œaVmÞIVaVLƒƒ@»kmƒ@ƒUkL™U@aU@WWƒLUUU™™KkbƒwWa@KU@kaƒXmW—LƒamVk@UmL@JmVUšU@¯X™@ċVUK¯@ÅnWK™LkKULWK@UXK@wW@™LkV@bVLƒlXn›`¯xU„°LnŽlV@n°Lnl'],
'encodeOffsets': [[
111488,
32361
]]
}
},
{
'type': 'Feature',
'id': '500234',
'properties': {
'name': '开县',
'cp': [
108.4131,
31.2561
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n@na‚I„wš@@VVK„LVbVxnVÆUnanKWXamKmk¯K@mkUm¯KVƒ°w@Wm@UIUUlKUU@a¯KWanwmUXamKkUWUnU@KƒkUwWKXaWLUWkImaUUUƒƒKka±k@lƒ¯w™wmbUƒ™ƒkXm@UJkIW‚XXƒbƒmƒ„UJ™XUV@°šKlšlVXV@xmbnV@blV@VšœU`UL@V™a@bULlb°VXbܚ@V@bƒL@J„xnLVb@lVb@V@@z˜bXWšX„KVLV‚š@@bUVVL@b„„lVna@ll@„zl@@J'],
'encodeOffsets': [[
111150,
32434
]]
}
},
{
'type': 'Feature',
'id': '500243',
'properties': {
'name': '彭水苗族土家族自治县',
'cp': [
108.2043,
29.3994
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„Jlb@nVV@bXb@ÆlL„Ul`nVKU¼VxkbW„nlUxlXX‚@°°WnnJ@VUn@J„k°L@VlV@nUJ„x@bVVVz@VnLla„KnalVlIUŽ„¼@nV@@anKUwVal@UlJœƒlI@akU@UWXKVI‚¯Uak@@KmkXWÜkXWykIWwXw@laXamkVUUym_XmlkkmmakwmIUKU@Wak@kaW@kI¯›WIk¦VŽƒUUƒmaUV@XkVUV±aUb¯b¯¥m@@ImJ—@mƒmL@kUKUkkJƒbV¦'],
'encodeOffsets': [[
110408,
29729
]]
}
},
{
'type': 'Feature',
'id': '500235',
'properties': {
'name': '云阳县',
'cp': [
108.8306,
31.0089
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lb„LV„VVnblJVXXKWbXLVx„l@LmVXVVl‚nLWbnVmxXb°L@bVVkLVVVJn@@X‚‚œ_Wm„kUK@alUšKX@@xWL@VXLVKlLšKXLÆm@™mœa@ml@mU@UUmL@aVšUU¯„U°`lknLlw±@a@wmLVWaXU@KWU@ak@VaU@™IUVmUUwVmUIl¥UwƒUVWUaVUUKVIUa@UUUUJƒUUm™kƒ„nl@„@VWV@L¯aUb™Ulxƒ@@b@VULUx@VUxVV™U@bU@mxU„U@mUVŽklkkƒ@WxknlxK@amLƒKU„K'],
'encodeOffsets': [[
111016,
31742
]]
}
},
{
'type': 'Feature',
'id': '500101',
'properties': {
'name': '万州区',
'cp': [
108.3911,
30.6958
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĸĊVI„ƒ„n„aWWXlJVIn@lWš„V„našx°xk„l@²Ž‚LVƒ„LnK@b‚LkwlmXw„@lllkUnVV@VƒnwV@@ašVUUVw@UVwVK@U@a„@kwšVVa°b@KXU@U@ƒmk„ƒÇсaml™kUVmn@VULU˜m@kUVkUaƒwUWm@Uw¯„mKUUmVUUULUKU„W@XbWVkaWwkUU™ƒ™k@maUbmbVlk¦ƒxUVUIWVU„kJVVkL@UmJ™UUVU@lLUVU„lx„@@VbƒJ™U™L¯¤@Vƒ„'],
'encodeOffsets': [[
110464,
31551
]]
}
},
{
'type': 'Feature',
'id': '500229',
'properties': {
'name': '城口县',
'cp': [
108.7756,
31.9098
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VK@w¯L@m@UÅV@ImVƒU™Vkaƒ@@aUk™J@LƒUUVUKmLmbÅVmUUwUaƒKUL@U™@ƒxJmbm@nVJ@X@VkV‚n™lƒLXx™@ƒb@bUVƒLU`UnƒbU@@ŽmVVX@JX@VLVVšklV—„‚`@bUL@V„LVKn@‚U@„UJkn@lmLmK@X@Jn@mb„nÞWVXnJ‚k„KČÑÆ@VK@knaÜmXlUČW°kôÇƁ@a@yÞ_VmƒUnU@K'],
'encodeOffsets': [[
111893,
32513
]]
}
},
{
'type': 'Feature',
'id': '500116',
'properties': {
'name': '江津区',
'cp': [
106.2158,
28.9874
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„InWUUlU@LVašlX@°²lÒXxlK@Ul@@Un@UaVJ@I@W@UƒUUVUwVIUKUa‚UUVwn@Üx@XUlnn‚bœJ@¥VklKUUlk@ynU@kVƒUUVWnI@¥V£VWVIUKU@UVƒa@n@Vm@@nlUaVkUwƒJ@blLkLW@XWmXkmmLn™@m@U@UVm@™„UVUUlakUVa„ƒVkV@@wnaWUk@VwkƒlmVIkUUxmJ@U„™@KƒIkx±V@IUm@K@IUKkbWKUbn„m„@bmVnbmb@xkxUJ@ULW`@bX@WVXL@Vƒš¯„mk¯@UJ@VmLUaWnX@WJ@nkKkxW@UIV@@KkImmkK@UW@XaWIU@U‚ƒIkbWb„xXŽlLVbnV@bWlX@VxVLnl@nÆÞVÜ'],
'encodeOffsets': [[
108585,
30032
]]
}
},
{
'type': 'Feature',
'id': '500240',
'properties': {
'name': '石柱土家族自治县',
'cp': [
108.2813,
30.1025
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„š@kl@š¼UbmVXJ@bV@nxVIVJULVVk@@LWbnJVU@bVbUJ@blLXnWV—@mbnV‚@V„„bn@VJVLnaVanbl@„šVšlVXxlbXUWaX@VƒUUVwUUVm@I@WmI@a„mlLœ™lK@alwnUV@kóVaƒÝk@UlbVK@™VU»VUUVWUƒ@U`ULkwm@@KmU@knKƒ»VkJkUmbƒLkbmK@UUyUU@aƒwm@@XXJ@VVLVVUbVnUJVX@K„„k`WXXJWXUbmW@bkL™Um`Xnƒb@JVL@LU@™°VVXKVnUxVLUbmJ'],
'encodeOffsets': [[
110588,
30769
]]
}
},
{
'type': 'Feature',
'id': '500237',
'properties': {
'name': '巫山县',
'cp': [
109.8853,
31.1188
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@kVƒU™bkKmbVxkLmKkllbV@@LXb„xlašLVšVV„KXXV@@bšVlK„V„@ln@¼°KXa„U@Ulw°JXalIUa„ÝWXW@kVU@ƒVUVWUUUamUw@aVamwn@VUUƒlLXWm£@wÇĉkKklmLUÒ¯ƒWn™@ğ±kwmaWm¼U@@LUV@V@XƒVUnVJ„LWš@‚XXWbĸºVzXJVXV@@VXlWn'],
'encodeOffsets': [[
112399,
31917
]]
}
},
{
'type': 'Feature',
'id': '500102',
'properties': {
'name': '涪陵区',
'cp': [
107.3364,
29.6796
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nèVblĖVVnLšŽ„@šx‚V„n@nšJ@L„UVVX@lbUJV@@nn@VVVK@z„˜V@nzVJVUlmX@@_VVVbnaVal@@knW@wnaƒVK@aVI„J@£kUVW@‚wXUVJ„amƒ@Ikƒƒƒƒ_X¥ƒ@WwkKkwmŽ™šƒkUxƒnÅmm¥™WV@Um@UlVL@JU@@Xƒ@UVkKVk™KVk™Kkb@bmJVXU„VVUbU@@`W_UV¯b'],
'encodeOffsets': [[
109508,
30207
]]
}
},
{
'type': 'Feature',
'id': '500230',
'properties': {
'name': '丰都县',
'cp': [
107.8418,
29.9048
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Þè@XUK@LlV@blbUJ@„„V@bnV‚@VVVXU@ƒlbXal@VXnKV@maXUރ@amk@aVKXV‚anbš£°mnIVaUKVwUmWLUUš¯V@@KUK@I„aWmn_šVlK@anXVaXWWIXWl_ƒƒ@LUWVIUmVaUUUK@UWI@Wn@VI@mkU@U¯Kƒl@ImVÅLƒwU¤óbUU@wWXkmm@LU@@VUIWVUL@JUnƒaƒx@Jn„ƒbUIWVx@ŽUXlV@¤ƒIUJ@bUL„Žmb@xmX@lk@UbmbUaUU@`W@kn'],
'encodeOffsets': [[
110048,
30713
]]
}
},
{
'type': 'Feature',
'id': '500232',
'properties': {
'name': '武隆县',
'cp': [
107.655,
29.35
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l„„w„bVm@IVKXUVJ@UV@@KnnWlX@xVVôaV£„xÆKnUVm@UmIXm¯¯@WkWVwmkXƒlaUwV»ULmk_ƒVkK@ÅWa@aUU@mkaƒIƒb@‚n¼ƒnm‚_@mmK@UƒLUVVmI@aUJ@XWJ@U`UIkm±kk@@lULmUmKUnVšnlUVmI@VkVlx™bkIƒVmLUxkKUŽ‚Xš‚n¦Æn„mVw„lš™nlxlLXx„@W¦„`„„'],
'encodeOffsets': [[
110262,
30291
]]
}
},
{
'type': 'Feature',
'id': '500119',
'properties': {
'name': '南川区',
'cp': [
107.1716,
29.1302
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VšUbVJVUn@VLX@WVXVVI@VUVWxU@mš@ĊX@@¼V°aVUX`@_V@VaUUVƒUWnI@alašLUlšLUllLVU„@@WV@@IUKVkn@@VlLVwnK„UlJšakwlU@UnJVUmkU™VmXa@wVK@UUw™@VƒVI@akƒ@alInwlKXUmaUW@wWLk™™KVak_ÇaUƒƒV@šXbƒLVxUlWIk@UK@V™@ƒkU@VbUVUlVnƒLUV@lVXmxkV@L@V@Vk@WbUwmL@JUI@xVxkx'],
'encodeOffsets': [[
109463,
29830
]]
}
},
{
'type': 'Feature',
'id': '500241',
'properties': {
'name': '秀山土家族苗族自治县',
'cp': [
109.0173,
28.5205
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XlV@lzn@VŽnbÆbXKlL„U„ÒV@@llUnxll@zšŽ@LU@@V°b@Vn@š„l@VÑUƒnK@UšU@aUaƒkVm@K¯wƒklmnn„Ul`nI@almkIUwmWVkUaƒkkJmUUa@K@aU@@_m@@wUyVUUa@Umƒ@awl@Wka±„UkUykIWV™b@bUVk@›aU@UXU‚UIWakUWmUxUV@nUVWbšŽ@XXVVŽmXXŽ@VƒbVLkVWx'],
'encodeOffsets': [[
111330,
29183
]]
}
},
{
'type': 'Feature',
'id': '500114',
'properties': {
'name': '黔江区',
'cp': [
108.7207,
29.4708
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VX@V@LV@VJUL@lVnnxlb@VXV‚XV@@W„@UIVK@kUKna@£VWUaVUUalIVJVIUW„_lm@bXKV@mn@J„UUw@KnIVll@VanLVmUkVKXLVKUIVamw@UaU_lw„KlwUWV_Ua@aUa@KUšwm›_›Ó@wU@™nkK@am@UkUKmXk`m@@I@K@I@mkVmIUxUJ@kUL@JVV™„lnklWnn`VzUVnlWbkb@WxXxlJXzWŽÛlWXnl@Ll@Vb°UJWLX@VlV@bkJ'],
'encodeOffsets': [[
111106,
30420
]]
}
},
{
'type': 'Feature',
'id': '500117',
'properties': {
'name': '合川区',
'cp': [
106.3257,
30.108
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XKVXlK„ƒVL@UnV@aValXXK„U@WVwUaVU@IV@@aVW„L@U@anVV@@bVK@UVL@bnJWL@VnUnb˜@@JnIlVl‚@@bXIWbn@UKVLVKXLlaV@VVnK@bVL„m„IVƒ@KmknUUWVI@aVJ@_„WU_VmUwƒU@K™ƒVak@am¯mJU_UJUkU@WkIV`UI@JV@LmmU@@mƒbUzś™@„VK@nUKƒ„ƒb™akb@UWK@bkVVbV„Û@@`ƒXk@WŽ@n@lXL@bmb@VVJUn@JnUlnUlmX@`XLlbkJW@kzlb@`@b@b'],
'encodeOffsets': [[
108529,
31101
]]
}
},
{
'type': 'Feature',
'id': '500222',
'properties': {
'name': '綦江县',
'cp': [
106.6553,
28.8171
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@¦‚@X„lVX@@UVKl„VUX@lanVlUVbXWVXVƒ„VVUnKVUlwUwU@UJ@nmVkUV™lwXam@VaUUUw@W@kk»mV@UmKkwVKVUU@@LUKVI@mV@XVWxnXVKUUUK@wWU@UUWnUlLXa‚mUI„am@wI@K@amIm‚UUkI@m‚akUkKWUUanƒ@wƒamLVxk@UVmUUL@Vm@kV@I@ak@@bWVXJlLVbVL@š@bn@@`Un„@WbUKULWVXbƒ@UVmbX„WVƒb@bVmxUKUƒV@šUn@V@V@nmšnKlnnWWXX@lKkK@a„IVxUlVb‚k@mn@@U@m„bVUV@VLUJUXU¤'],
'encodeOffsets': [[
109137,
29779
]]
}
},
{
'type': 'Feature',
'id': '500233',
'properties': {
'name': '忠县',
'cp': [
107.8967,
30.3223
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VLÞĊ„U@Wš@¼V‚„@lk@w²mlšVUœ„llšVnI@VlKUUlIVƒXUVJVU„wl¥UkUKUIm@ƒaUƒ@mUna˜@XUWmkK@aVIUa@aUVmIXa@Kl@UUVKUIUJmwU@@aWInUVa™»k@@lƒ™¯n™¤mabWUUL@bnl@b݄WVnbU@mLUWk@Wbka@„WVUU@UmUmVkUULV„lVUx„l@L@VƒbÈÒlb'],
'encodeOffsets': [[
110239,
31146
]]
}
},
{
'type': 'Feature',
'id': '500228',
'properties': {
'name': '梁平县',
'cp': [
107.7429,
30.6519
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XLV@VV@b°°nšƒnkb@bƒšnJWVXblIUVšxWnUJnVVLVU„JlUnLVK@UnUVJš²nKVbVKla@aXlJ„k„Klb„ƒ@U°£šKšV„IUa@ƒ@kwVƒVUkKV@VUkk›ƒUVk™±n@xklƒ@U@»™‚@XƒVÝĉUJnxWb@UX›KkVUbUKWUkVmkkLU`›b'],
'encodeOffsets': [[
109980,
31247
]]
}
},
{
'type': 'Feature',
'id': '500113',
'properties': {
'name': '巴南区',
'cp': [
106.7322,
29.4214
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nxnVlJlUXLƒ¦@x@Vl@nKVVX@V_V@@KlVXU„@lKlxXIl@ÈĊ@Vl@n_VJlŽnVlnb„²VVVJVVmUUkĕUamçU@»W@@ĉn™V@XwVU@UUJWUXUW@UKm@UVUIVaU™UVmLUVƒUU„UWWXUakVmUkbW@UVkƒUL@VW@kUWƒ@mJUXVVU„@lmV@zklVVkLUl@¦›I'],
'encodeOffsets': [[
108990,
30061
]]
}
},
{
'type': 'Feature',
'id': '500223',
'properties': {
'name': '潼南县',
'cp': [
105.7764,
30.1135
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@a@a@_kalyX@lIkaWK@_nWVkkmmV@IVmUI@Una@aWK@k@mkbWaknmJUk@mk@@kUal@Uaš@Wa@aXLlwUKlkkƒ@KmI@VUJ@Lk@@VUUmL@amJU£kKUaWakLmU@bVVUbnbWV@xkL@bUb‚xUxVbXJVbUVWIUVU@kLWxkKWV@n¯VUbU@@VVX@VmaUL@VUK@VVbn@lVnI‚@@lnLULm@Ub@Žl@na„@lK@XVVkJ@b@zl@@VnV@bVb@J@bnXV`lXXmVI@W@InbV@@aVKUblKVLUanLlmnLlK'],
'encodeOffsets': [[
108529,
31101
]]
}
},
{
'type': 'Feature',
'id': '500118',
'properties': {
'name': '永川区',
'cp': [
105.8643,
29.2566
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@b܄nWVLX„lxV„VxXxlVn@@bVblK@a@UnLVJV@@UnLVU@VXaVKVXš@n`WUÿ@IUKlaUUUkWyUÛÅÝ@mmkUKUwW@Xk@amUUakKWƒwXaƒK@VVLklƒXVlkxV„UL@bm@Vxn`ƒIVxUVkLVšUšl@@lkXmmƒVUn@VV@Xb'],
'encodeOffsets': [[
108192,
30038
]]
}
},
{
'type': 'Feature',
'id': '500231',
'properties': {
'name': '垫江县',
'cp': [
107.4573,
30.2454
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šĊ°¤nҘ¼œaV_lKnllUXVVLValUœLVW‚@XamwVIUKkaÇфa@U@KƒkVwkUUƒVKlVnU@aƒU@ƒVIka@akU@KVL@WÝçUV@Vmbů@L™KƒnnJW„ƒVkxlL@VX@VxmnXVWxUb@bkn'],
'encodeOffsets': [[
109812,
30961
]]
}
},
{
'type': 'Feature',
'id': '500112',
'properties': {
'name': '渝北区',
'cp': [
106.7212,
29.8499
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@bVVXL‚a@lnbWn@L„@XVlK@VVLUVlbkLUKVVVL@VšnX‚VL@VV@UbVb@x@¦UxVb@bUJƒL@L„VVxlK@™nk@U@W„UVLlKXV„@VblU@UUKVU@wn@VJVanLlkX@VaVK™¯@a@U@U@ƒVaUK„kUUƒ±maUkm@UUkbm@@Vk@@JƒwU@Ub@I@JmwUL@aƒ@@KkVÇLkƒWkƒ@kUU@@xUVmKUnllUb'],
'encodeOffsets': [[
109013,
30381
]]
}
},
{
'type': 'Feature',
'id': '500115',
'properties': {
'name': '长寿区',
'cp': [
107.1606,
29.9762
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VVšU„bX‚lX„¥l@XnVmlxUx„@@blVnnôĀlm@aVaXwWUnmUwW@@UkKlw„UXƒmI„mšL@KÆ°na@UUImyU@ƒ—@yULUUm@@mU@VIkaW@UUƒV@K™I@mƒmU™wƒ@™mKUnU‚UIƒlVLUb@„@V@V@bš°ULUbW@klmKUbUIm@@xUVVL'],
'encodeOffsets': [[
109429,
30747
]]
}
},
{
'type': 'Feature',
'id': '500225',
'properties': {
'name': '大足县',
'cp': [
105.7544,
29.6136
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XUmaVaUU@anVlKXbValU@aV@@IXKš@@bV@VxVK@UXLlUšJXa@_‚@@aVK—ÅWVkwWaƒƒwUa@am@kUWLU@kWmX@ykI@W@UV@na@LlLV@UƒkwWƒUKmXX`mIVl@bXLWVkbkkƒx@`VXm@@J@U@UUKUxk@WbUIVl@VXLW„ƒJUkUlUImxXlmb@X@VUJUnVbšW@UV@@VVX@bnW@LVxUnlJUV@n„@VxVIn@l`„UVVVL'],
'encodeOffsets': [[
108270,
30578
]]
}
},
{
'type': 'Feature',
'id': '500224',
'properties': {
'name': '铜梁县',
'cp': [
106.0291,
29.8059
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VblLV¤nI@bnKVV@Ul@@KVI@UnJ@Ll„klVLkxWK@bXb™@Vbk@Vb@ll@@nVlnIlmXblaXl@„W@_Ü@UƒUalU@aXL@Vlašb„a„ƒVL@mUL@ƒUUƒƒÇXUW›X_WaƒƒUƒ»m_™@UWULWb@UUVmK@VU@UImK@V@bkL„x‚„XblxXU˜ÆUL@b@@`Wb™IkVWK@VULUwU@@a™@WL@JU@@bkVUb'],
'encodeOffsets': [[
108316,
30527
]]
}
},
{
'type': 'Feature',
'id': '500226',
'properties': {
'name': '荣昌县',
'cp': [
105.5127,
29.4708
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VI@U@WnaWknwVJVkVl„IXƒWK@UUkVJXal@VwVL@V@V@In@UW@_„wlllaXUWK@aUknJW_ۃ@aWaU@@UVm„UUaUImJVnÅUmVUm`kUUVWLnVU@VVmXƒK@„nxmŽULkx™ImJ@nU`@X@Vkn@`@nlV@nVJVaX„VLnK@bVV@nV@lbXWš@'],
'encodeOffsets': [[
108012,
30392
]]
}
},
{
'type': 'Feature',
'id': '500227',
'properties': {
'name': '璧山县',
'cp': [
106.2048,
29.5807
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XzVlVVkbVL@JVĀXŽ‚¼V„„„XbW`XœWVȎ„„VVšŽVkV@@UXa@alK@IƒƒU@UKWUyUI@wVUUWVak@VUkƒW¹@WXI@yVIUK@kWwkѯ±W@™kUb@KkVVVmXƒJ'],
'encodeOffsets': [[
108585,
30032
]]
}
},
{
'type': 'Feature',
'id': '500109',
'properties': {
'name': '北碚区',
'cp': [
106.5674,
29.8883
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@X‚VLV@„„@JkL@bWb@VU@UlƜVy„a@nV@nn@KU@IVJU_lJXV@VlVIV`nIn°@b‚lUbš„„KVI@aUaVw@¥@wUaVaU@@UUKW™m@UUKUUVLlKkaVUUK@UkLWUƒ@@KXmma@kbWKUU@aUamLnÞ@VWLk@@Wm@ULU@@U™KUVWI'],
'encodeOffsets': [[
108855,
30449
]]
}
},
{
'type': 'Feature',
'id': '500110',
'properties': {
'name': '万盛区',
'cp': [
106.908,
28.9325
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VIV@@wVJ@InKVxXal@@U@U@KlUnwUW@kVU„KUmVkUa@I@KW@@bk@@mƒU@m@k@a@aƒIUxmJk@ƒwULƒwkKmVVX@VXV@xVLVVULmWXwWUU@@nUJVL@KV@UVULlxnL@VnUl¼@l@XVxVVUbn@WbkxUšlVnU@m'],
'encodeOffsets': [[
109452,
29779
]]
}
},
{
'type': 'Feature',
'id': '500107',
'properties': {
'name': '九龙坡区',
'cp': [
106.3586,
29.4049
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XK‚L@Vš@XbV@lW@UV@@VXIV@U™VKlL@KnnJ@VV@VU@I„@@mVUVWUUmL@V¯LUK@UV@UU@a@U@yU@WLUK@X@KUVmL@ƒ@aXI@w@ammVk@WÛwm@UxVVVbVLUJVxVU„V@V@X@JUIVbm@@Vk@@VkL@lVLUJ@zWJ@X'],
'encodeOffsets': [[
108799,
30241
]]
}
},
{
'type': 'Feature',
'id': '500106',
'properties': {
'name': '沙坪坝区',
'cp': [
106.3696,
29.6191
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Xºl„UVl@UbVXUV@xVJVzXJVUšL@VV@VKn@@Xl@XK@UmÝnKVbVakkVm@k„ƒUK@UmIm@LkKULVšU@WJ@UU@@VkXU@Wa™@@UKWL'],
'encodeOffsets': [[
108799,
30241
]]
}
},
{
'type': 'Feature',
'id': '500108',
'properties': {
'name': '南岸区',
'cp': [
106.6663,
29.5367
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VV„JVL@bUVVnl`XIlwXJlw°nnl‚IXW@UÇĉk@WJkwkLƒ@WVkU@LU@U`W@UXUV@n'],
'encodeOffsets': [[
109092,
30241
]]
}
},
{
'type': 'Feature',
'id': '500105',
'properties': {
'name': '江北区',
'cp': [
106.8311,
29.6191
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nLVU@wV@lV„@Xll„ÈKlU@L„@@bVKnx@I@JVaV@„x@Il@@Un@laVVn@mkUIm`k@WXJmk¯mkxWIkxWJk_UmVUUKƒ@UU™@ƒ„@l'],
'encodeOffsets': [[
109013,
30319
]]
}
},
{
'type': 'Feature',
'id': '500104',
'properties': {
'name': '大渡口区',
'cp': [
106.4905,
29.4214
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@k@@U@w„¥WKkVkImUmwa@b@xWJ@b@„nKVU@L@WVLXKV@@z@V@bVVU@@VVL°K@U'],
'encodeOffsets': [[
109080,
30190
]]
}
},
{
'type': 'Feature',
'id': '500111',
'properties': {
'name': '双桥区',
'cp': [
105.7874,
29.4928
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@WwUwU@kK@KmbU@@V@XlJ@znWlXV@XK'],
'encodeOffsets': [[
108372,
30235
]]
}
},
{
'type': 'Feature',
'id': '500103',
'properties': {
'name': '渝中区',
'cp': [
106.5344,
29.5477
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VLš@VV„@VL@aUKƒIUUƒ@@JUVU@'],
'encodeOffsets': [[
109036,
30257
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/fu_jian_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '3507',
'properties': {
'name': '南平市',
'cp': [
118.136,
27.2845
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@knyƒk@ƒKU¥šwV@nkƒWƒzUmk@@lKUa@aVI@UƒKUamKUUVaUI‚@Xƒ@UV@K±IUVVlUbUbUL@KWUXmWk@KkXmmkŃKUƒ™a@amUƒbkUkKWUnwUƒÇwV™UUƒÝUKV£U™@ƒnKWwXLVKm¥@wUXkmWk@ƒ@wX@lU„@šyVImaXwVƒƒ@kŽƒnU@mbk@mlUXƒmU@mV@n@bnW@bUIWJ—ImVUKWbUK@nkKƒaU@W_VUUmWmL@UU@™bUWUL@V@bmVUz@`mUUVVbXL@V™L@lmLUxmVamXkW@xWbU„VbUxkU±@ÅUmmkLUbW@@`kLknVlV@lbXxlVUXVV™ŽU„U@UbWŽkIWVUUUJkI@llbUxVL@V™VƒUU°ULUmWXUV@VULWb@™xm@UaVLVKUa@ƒw@V›bkmVambUUm@@VkK@„@b„xlxX@‚„n¤@Xƒ@@lkLWV@Žn„V„kb@bWJXLWx@nkxmm™bXn@VWVUn@VnJ@bVXl@„™VJXnWbX`lL„UlJVI@Žœ@VXV@Vl@bn@@Æmn@VšxXU@mVIlxšVššnI„l@nVJ‚aXI@mlU@aXkVm°klmnVV_naš°@V@xܦXK„V‚nnUlVXbVK‚LXKV@naV@@VVl@@lXblXšWnLlbVK²nš@@‚VLUnlV@lƒXxô°‚V@UnaUUlKXLVUVVUbVVlUnJVX„@VW@an@lb„@nl@VU@anƒšUVW@kƒaUm@InVVKVU@kUW@Uam@km@kVa@a@™nwšU@WlI@mVI@WXaW_nƒ@™nƒlkkW@U‚¥@kV@Uw@wUƒ@@IXK‚¥VIn@nU@`@Xl@VV„LnašW‚bVaUwnU„@VIšKlV'],
'encodeOffsets': [[
122119,
28086
]]
}
},
{
'type': 'Feature',
'id': '3504',
'properties': {
'name': '三明市',
'cp': [
117.5317,
26.3013
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lL@Un@VVna‚bnUlœa@U‚x@„VbULUKVbn@šw‚@XaVK@UVUXWVnVKV¯„VšU@UUKVwka@klJVIVVXUlJXVaV@VƒšUUVWkUWwkaU@UklmlK@_X@ValKnnÆV²@lVVwUaVƒXa@wlXnW‚bnUVwnK@kšK@UWKUaVUnV@_VynU@a@UVKVXšaV@@VnKnXVV‚UX`V@„blL@mVLXaVLnU˜JXIVJ@amX@a@mnUV@„nVWnkl@naV@„ml„@@KmKUam@UU@ƒ@UlKU™Vk™U™K@aVaUwV™U¥UIkJ@wmI@‚mbkwkVW@UXƒKULU`™IVKUa@LƒkkVmUU@WlULUWÅU@I@ƒWW™nU@@w@a@ƒUam_XyVIVWkkƒ@mwVKXUV@nw˜VXkWƒÅ™U@ƒaƒU¯KUnƒK@ƒ¯šmUƒLXŽVLnWVbVbUVm@Ub¯¼W@amƒ`kb™amLUUUƒ™aUXV`@x@XmJ@n@L@xkJUU@kU@mWm@kUUwUUVWl@VUkIƒy@kkaVUUm™IWVXbWxU@k„mVkK@nWVX¦WxU@@bkx@VU@WŽk@™kUbmJUUmkUW@_kKWKƒ@knV¤kIUKWLUbV‚@Wbk@@VWL@VkI@lUXVxUVU@@mWIƒV@a¯nUaƒaUV@„ƒJ™b@bÞ°VbUš@X™aUVmL@‚VXblŽnV„°˜n@Vnx„@VUUUlK@InJVb@„Vlnn@V™L@VWJU„x@XlJUVVVl@LUUUJ@Lƒ„@lUL°¦k˜V„VnV@„xV„„l@blLnlšLVaXll@šnVUn@‚xn@nml°‚X@lb'],
'encodeOffsets': [[
119858,
27754
]]
}
},
{
'type': 'Feature',
'id': '3508',
'properties': {
'name': '龙岩市',
'cp': [
116.8066,
25.2026
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ša„I@ƒVU„bVb°m@b„UXJ@nV@VUUwVW@klJ@UXK@Ul@Xa‚@UVaXKVLlJU£lm„@XLlL@`VXnlVVnIVašll@XV@@Ulw@aV@XwW¥XU@mlLnUlƒV@XwWaXUšJVnUVlb@l„zlJUVk@UXVVVxlVn@nXV@@lVVlI@w@K@mnI@W@wU_VWšbV„VVnKšbla„_n‚bX@°»Van@VUUaUamXUKW„K@a@Ukƒ@wWkXƒWW@wUU™Kw@_lyƒwUkU@@Uƒ@kamVmƒXašUVUka@Wk@»UUUVƒKkbWU™VUbk@mkƒxkƒƒKnIVUmW@kUKmXUmVaU@kU@m@KUWVkIWJ@ŽU@UI@wUUUa@KW»nU@mVkUmm@XwWU@ƒUUmL@ƒw@mnƒVUU@aWak@@amxU@UxULWVXbVLU`mbUImVU„ƒbn‚V@@bVn@bnVWxLmyUbƒIUKƒ@aƒVm™akbV‚UXW„UlKWbkV@„WLUlk@@nšbƒb@lkKmU@ƒUIWJkw¯UUVVxm@@XkbWx—›XKƒlUzWJkUUL@bmKkVƒ@@VUIUlWV@X„K@VkbWx°xUb@LUbk@@VWb@LXJ@VWXU@@bUVV„VVn@VVlLn„@l„@‚xk¦Vx@bVJXbƒn@JlnXxV@@„nJ@X@V@lmx„bUn@xVL@VVKlL@l„„nLVaVL@xkl@LƒxVl°š„X„WVX„Vl„œJWnxlJ'],
'encodeOffsets': [[
119194,
26657
]]
}
},
{
'type': 'Feature',
'id': '3509',
'properties': {
'name': '宁德市',
'cp': [
119.6521,
26.9824
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@LVKVaVaUkVU²J@LVU„@@W‚VJUbVVnLVb„L@VUJ@bVbkL@Žl@Vn„y„XmlU@™xV¦„L@Ž„lmz@lnL@bVVšbVb@l„nšKVk„Vl¤@zXV@šl@XJVLVKnXVK‚VnU@wUm@šKUƒ@UlVlw@U@U@ƒUaUKlU@kXKlmXIWKXaVIVUVK@KU@@k„JVUnLVJUL@V‚IVa@VnLšKUnl`Vb„V„V@š‚Vbn@Vzn@lKnVlI„VVKUalkXJl@XXVWVLVUUmVU@Unm„£lK@Uk@WUXK@U@WVwVkšƒĠkĢÇ°aUÅUwmaţƒɱUÇa™w„±V¹XalKôx„@„UVaÜʓͿVóbÅLƒJm„¯Vk¦ƒŽk@mamXkKUƒUL›akbk@mV@LkJWb@Vk„mXk@UVmaUV@amLUKUamI@KUaU@WbU@UUUƒUIWJUkm@šƒw™Kk„VJm@kxǁVƒUK@mUVUkmlkkVm@amwƒLVWU@UbVLkšUbƒ@VƒmK@XaVWU_VJnwV@@kUmWakxƒ@kwWakIWxnbUJ™zƒ@kVW@@x@„XllnVW@xn¦ULWKXxmL@„VšU¤VL„ÞVVUšÈxV„mxXVlLlV„anV@bšbV„„LlÆnnlW@LXlWnXV'],
'encodeOffsets': [[
121816,
27816
]]
}
},
{
'type': 'Feature',
'id': '3501',
'properties': {
'name': '福州市',
'cp': [
119.4543,
25.9222
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lxna@nJ@xlIVJV¦UšVxUb@bšLšVUlVškL@V@„VVn@Vb‚Ln‚@LU„lJXblx„@lwXbVn@lU@mxUIV`UXWb@‚nLU„„@Val™UKVaV@UX„Knx‚bn@lUkllnUVnV‚@VLU„È‚lwn@UIlƒšL„x‚™n@VlXIVJV„VVV@XaV@Vb@LnJVbVLnK@bVUnbVUl@nWlƒ@UXalI@KnUl@laœbVKV„lLnWnbl@„l¥°Unƒ„IÆKôa΀U„a@UUwÇWǓIUWUÅVkƨm@ƒ@£@KmLU¤ULˣJ™kUƒVǟUUķ@ĉVƒKUk@Ñ°wôǚç@īšé@Åţ¥mīÛkm¼Å@ƒVķVó°ō¦U°ƒn@bVJXVVL@bUŽƒakLmx@xmxXzW`XbWnXV@bWLÛ@™aƒ@ƒaXbWVkaÝwU@mlWKkLWWkLUKULW@kVmVUU݁UamV—¤›n@xUVUzkJV¦lJU„'],
'encodeOffsets': [[
121253,
26511
]]
}
},
{
'type': 'Feature',
'id': '3506',
'properties': {
'name': '漳州市',
'cp': [
117.5757,
24.3732
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@bl@Xb@bVVUŽm„@n„x‚@nKVV@„XVWxn@VnUl@nmVX¼@LVbVV@xVJV@@XIlJXU‚V@Ln‚@lVV@UbVnnWVL@lnXUVmJ„Ll„„wnll@VašUXVla„LVUVV@¼Xl@lbUV™VWbn„nUlb„@@VV@„aVUšmlUašUny@kU@Wkk@WaUVk@@ammk@@U@UlU@aUa@wl@šmXLllnL‚U@anVnU@L@VVV@KlXnWVnVanUšw@w@wm›nÅ@wƒaUam@Uk„mUl@@a„a@U@¥škôK‚wȯ°w@ŻkwǕaK›ÑÛk@ĕōřċ£ĵƒUKW»kÅŻLU@Ulġw@¤Vz™VUbkKUbmLmlULU¼UxmbXl@bWVƒb@bUnV‚UšVbULU@@VkbVL@`U@WX@ŽXV@b°„@b¯š@¤@Xm@@b@`U„VVUL'],
'encodeOffsets': [[
119712,
24953
]]
}
},
{
'type': 'Feature',
'id': '3505',
'properties': {
'name': '泉州市',
'cp': [
118.3228,
25.1147
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Vl„xkz@`‚xšLVV@xXXW„Xl@xl„@V@bnV°™@„„LVm°L„V„bV@ƚX„Wl—UmxU@WVULnx„@llUXUJWzn`Vb@„@b@xV@šmXX@„@JÆVVXVKXkV@nVlU„l@KVbULšJV_VK„LVWX@lUVƒkIU¥lIVyVU@wœm˜£nUVWU@aƒm@UmWw@UX@@am™VUn@@aUUlUVanaWUXWmUnkšK@VšUlVVUUwš@XLWWX™ma@knm‚bVb„VXbVL‚@XJlInlšL„w˜mXóšw@çV»ÇçŋaķƧóƅóKġ°nÅUķƑUÇW@—¯xÇ°öÆlV„n@llšaš@„Lšbƒ`™@™„VšXVƒVx@V@bULVJUk‚Ç@ƒ¼ƒXUKk@mmULkaWbk@ƒx@UkL@a@K@U@UmKmbU@kV@UmVUbUmmXkW@LUU@U@KmVmU@bVmKkkWK™nk@@xVb@bkV@V@Vl@nn@bl@VUXbl@XlV@@lmz™VVbkŽ™nUVƒb'],
'encodeOffsets': [[
120398,
25797
]]
}
},
{
'type': 'Feature',
'id': '3503',
'properties': {
'name': '莆田市',
'cp': [
119.0918,
25.3455
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VbނVVnUlUX@VKVLlKXXlKXL‚‚nkV@ÞxlbXUWa„b„@šbÜ@XK@aWUXmWaX_Wynw@wnwlK„bV@aUKWUUI@a„mV¯Ŏ¥ô¯ĸU„UÆ@n»¯aƿé@ţ¯nĉĬÝK™óó@™ÑU¼@è™xWô—nƒx™KmkkJWI@UKWaƒUUaamn@lnbWšXXWK™@VxUVkU™V@U™LmlnVWXXVmbUbkVVV@bm@UVnš@bW@@VXx‚n@V„n@bV‚UX'],
'encodeOffsets': [[
121388,
26264
]]
}
},
{
'type': 'Feature',
'id': '3502',
'properties': {
'name': '厦门市',
'cp': [
118.1689,
24.6478
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@VlUV@nanL@V@V@L@blK@V„wl@XalbVKnnl@VL„W„»È@lVUIVK@a@UUw„WUU™šƒš@„_™aƒK™@™bkkm@UƒkõŁxóL™l@¦@Vƒb@bk@VŽƒnVln@Vb„b@xmÆnœ@x@x™x'],
'encodeOffsets': [[
120747,
25465
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/gan_su_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '6209',
'properties': {
'name': '酒泉市',
'cp': [
96.2622,
40.4517
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÇnÅaĉ@ƒU¯¥›UŹ‚ƒ£™WUýUU±JkkUw‚yÞIČxĊĕĊ¯š¥ÆUkţ™UÅÓ±¼™IUx¯UƒÒƑ‚ݐŰƒKÝnğ°ÅU@Žƒ@Vn@þš¼¯šWnŎ°XLWlnVnbWnƒVXxmbƒa—bóUƒlǕUUa™IUmlU™ƒš¥™kƒ¥ĉwkkƒÝɛa@¯™™U¯°mVƒkVnKlƒōÑÇÑU@kl™UġŽkUŻnUW™@š¯ƒk»šmWV£UKnUƒmUw‚w@ƒUIVaX™šwm»Èmmwn¯ċ™¯LĉŽUƒJUalka±Va@U‚k@ƒÛф¯WmnUaɝ¤Ûmƒn¯m±x@wóxÛLġÒUx¯VƒÈ™JUbóz݃ÇKĉ¯ōlÝUŎWl¯nťbÝ@¯ǩLġmV@ƯĢkÆm™ĊkVťLɃmÝXó°@„ĢbVŽóVݦɱ@Ƨaġ„UV„ĠÇÈV¼UVţwmbJÇwˋa™XmǯKkkmŽƒbXšm¼V¼ǬŚ²¤ôŰÆƴô̐ŤǪnɆӨ¼ɆLÆłUĊšxŎƞȘǔˎǬǪnƨŮǬö°»šġ„„ÞÜÆĸÒĊ„ǀbƾèôÈ@¼¯þŤĸƧ°VĀ¯b@lÈĊ‚šʠń̐„ȘKǀŽֲॗţÿǕý@ʊǓƨóÆÑǖŃôw@΋ʈƆÅÈVVĊV„óĊÅ@ÞƒĬV@Þīš@°Ž„V@ĸĢƒ°XτƜĠ@ÈaÜ¥Őƅ‚™nğóĕVġUůƿŋ—ĕƒa±V—UťÇğÑ'],
'encodeOffsets': [[
101892,
40821
]]
}
},
{
'type': 'Feature',
'id': '6207',
'properties': {
'name': '张掖市',
'cp': [
99.7998,
38.7433
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÈÒŎÒk„mLUŽlŽU„¯nV°šš@°ɜb„ÞĠaÈ»ĸl‚š„LVUÈ@Ċ@ýUm„@@ÆVĠ¯Þm„LƯޏƒ„Ñ°VVwšJ²»ÆԚVlŤÅV™¦ĉ°ĉĖċwÝJzVxll²IVVVþšX„¤źœV°¦„VĊ@ÆbÈmǔLĸĠ¯Ģaô¯ĸmÆÛUƒlÇĸk°XyĊUǔV„ǩnmV»ƒa@ýnK°n@l¥@»ż„Ċ¤m皃@£ČU@mƒmVkÞUƐ±²¹°‚ĠwÅƑŃU¯™›V¯aÈŁšƒÇ»™ġn_°xŎKlxœklx„@Þw‚„„@Æm²b‚DzLlkšWXať¯ĊaœÑšK±w@wƒUÅçV±Uk™@@„¯š¯xƒU™±±UU°ōxVxÅÔō°ó¯UÝ¦óbÝþƒ@ĉÈóUV‚Ux„„@VŽUVÝwÅÈǎóVkk¯JǐkmmL@„™KÇx@bkš™@U°ķ²ó`ƒš™šmn¯°ƒUwlÅkUƒ`™¦ɛô™Žķz@ŽÅnÇ°U¼¯KmVk²ƒJƒ¼ƏÞķôš¤ULƒ@mnğ`™šÇnUxÇ@Ûÿ™U@ƒƒkŻŽ@x@móJkŃ¥VŹĉóÒĉlċ°ķ„Uƽ܃@›x'],
'encodeOffsets': [[
99720,
40090
]]
}
},
{
'type': 'Feature',
'id': '6230',
'properties': {
'name': '甘南藏族自治州',
'cp': [
102.9199,
34.6893
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ލš™nKlnšwX¥WÝXk˜xÞUnƒ°aĊVnUUKlÞĶWXnĠ¥ô»„™@nmVL@¤°™Vz„JšanU@aÆwna@k›ƒU¯šyX_›aĉb™ƒ„wƒéXkWwÅaš¯V¥mƒ¯UƒƒI@ƒš@„mšb°aÈçšUš¥@»‚knwɜƇ°I°ÑÈmVU™¯Xa@w‚W@wšV¯Č¥l¯Uwnm@k˜aUaóKkk@™Ça™b@ŽÒWa¯IÇxÛam¼™VUƒxÒl‚@zÝÒ¯bÝaĉVĉwDŽW›zJ™mJn²mܯUƒ¯ĉ@ġ¤Åb@²nšmlƒ@@Ž„„U„ƒLVxšV™„U¼Ålma™b@ƒ°™l@WIUƒ¯@mƒ™@™™ó„™„@U›zţyƒXÇU™ÇVUUVLkbWakVWmUbkkƒKUÆ»nƒ°Knk@aƒUVmšnk»l¯Ģ›lw@_kKVU@ƒnaƒ@lUk@¯¥mV@kmbW™b¯Åõa@mkU@kƒÇŽkU@›`@™óó—bl¼Uxƒn„¼šlVȄx@blVkVVnƒ`XÈġÈ@ǃK£ÝJmUUnUĖmlU„mKUn™VÅaUw›Uĉ`¯n¯wW¼nxVŽ™š@bĉnƒ‚kIċŘkXUŽ±Ò™xšÈ@ŽX°`l„œV˜IȯĊV„ƒšVVan@VašUVażVmšblkÈW„ƒWIXa„alL@wVb„„V„¦lL@lĠ™n҄U‚nk‚šL@ÆÞkšÞšK‚bñþW¦Û„ċVƒ„ULUºkÈlŎUxÆxÞUUxšÒ‚x„@XbšL@lÆ@„ÒlXVln@„bm¼ƒJ@„Ån„šƒx@bnšĠm„xVXmbÈè@ŽĊ£ČW˜w'],
'encodeOffsets': [[
105210,
36349
]]
}
},
{
'type': 'Feature',
'id': '6206',
'properties': {
'name': '武威市',
'cp': [
103.0188,
38.1061
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@±¯¥@klwU»ƒƒÞÝmwKm¯™™ç@™kVÇUL¯lVUKġ„ġm@a@U„@X£°l°LŎÇ@aōVÝw™ÔƒKUŽÅš„WJ¯lm@ÛVWa™@klĉUmaƒLUanaƒ™ƒk¯J„™™±KkXóÜÅxƒ²Ç‚@„„nUÒĊb°@™ÆkL™Ž™XÇÆ@xÝn—xWxţ„¯¤ƒI@Æn„ƒVV„VlU²Æè„V@x²x™L›ÒĉbŦ°Wb™Xklބš@l¤šXĊ`„wl@ĢÈŎm@bšnV‚Ubƒ„@șÆÛLƒèǚUÒŦlĸ™`°ĮʟÆǓbĉôϚĊƚĢnŤé΀ÑĸĀĊ¦„@@l°lœ¦Ȯ¦ɆÞĊKŤ™ĵĸů„»mŁyġ™ķŭ@Çɱȭ¯mƧUĊķnŁŻ»UaU™˜ƛɞÝƨů'],
'encodeOffsets': [[
106336,
38543
]]
}
},
{
'type': 'Feature',
'id': '6212',
'properties': {
'name': '陇南市',
'cp': [
105.304,
33.5632
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šÈÞ@l`UmVƒ¼œŽ‚@nnÆwVlnVVa„LVƒÈ_‚ÿރ@n„a„xÆ@„lš_š@VxnK@llLnxmÈŎJnbUxšI°Žl@n¦‚lÈIlmX¥„k°@šk‚J„k²é˜@klaUaVaU@@ÝnIWnmnx‚k„ºÞ„„aV™°„V@nw‚KšxôbÞ£šVšU„bšþšLn»mƒVw„IšJ°Ž@„nb@°°I„ġUkÇKVƒ™™@ů»lƒ„Lnmƒ£@anK@Ñ܍n@»mL@£™yk„UUmbUÞÝ@kyÇbó»™XUxƒWVzb±mÝbXaƒwUamL¯»@wUKVwm¯ĵJ°ÅUWVk„KVk°wÈVšVуlUšƒ¥škmVamknƒUw¯¯ƒbċ¥ÅKƒk™Kk„™VċVk£kKVw‚Ñ„a@kóyÛ¯ÇVk™ów›š—Xō¥Ç¼ów™Ž¯U±‚k„ƒ@x›IĉÒÅVmÈnšÜ@n°„bUbÝV‚ŽUnnJ¯Į@‚m¦nV܃@„„L°JXb‚Ñ@šaÈb@šllôLVb—b@lmnVxk°ċ¦U°™Ž@xX@xWbš°UVÇn¯Ò¯Jɛƈmxl@¼'],
'encodeOffsets': [[
106527,
34943
]]
}
},
{
'type': 'Feature',
'id': '6210',
'properties': {
'name': '庆阳市',
'cp': [
107.5342,
36.2
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@kw‚ĉ—»VamƒƒV¯wƒIóVkl¯™Km™Vō¯ÝWkL@bÝKō¦@Ž™„@š™Lx›@b@l™a@km@@l¯nm@UaÅ@ƒ„óWUXm¥™nƒw`@UUxķôÇ°ğ¦@„VJš_n‚‚IVŽnalxkX„JWn¯šnVƒLšxl¤nnVbklVX@xnxmV@bUK@nm@@xƒV—°±aÅnƒŽkUWnUaƒx@m™n@ƒ¯LƒššmUĀlU@lV@blLUblxklkIÇx¯°‚UXbšaVŽUnšV@°‚LUlnbšX@`°nVmbnÆmV‚kLmK™¦UŽ@X„y@kl@U„°K@¼XbW„ƒš@b„WnLVa„VšƒVz@xlVČ¥lbUxލlV„U@nÆWôn²™VJlU„Ƨ„LnmÜLXa˜n@mœw@wlUlV²mšblwšVȃlLލ„±@lVnUlxnkma@mškšJ@kXV‚U@mn@š¼VXUƒVƒlLnmVbôaVnWV»ÈUl°È¯ÆIn›ÆU@kk»mKkÆġk¯@»mƒk—¯@óÇlÇ@—Vykkl™Uml¯Þ™@w'],
'encodeOffsets': [[
111229,
36383
]]
}
},
{
'type': 'Feature',
'id': '6204',
'properties': {
'name': '白银市',
'cp': [
104.8645,
36.5076
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VKUȚl@šè°šnŽ‚LnxÝބ„V¼kx@l‚¦²°ĊóĠ„™Ċ»š@ÈxšaĊxlwÈVŤa@¯²aÇ£ƒJk£lƒnUÞ@°šô™@y„wl»lIX¥Ǫnw@ÑÞWla„ÅlL@ƒUwĉakƒl@ƒš¯mwna°J„V¯nUVÓÞÑm£²óWaUƒÇ@óÝUçV»ÈkkW@¯‚xV@XlK@wX@Vmm_@wÈݙKU¯ÇwVwÅK¯VƒkƒJ™™™XkWVaƒImŽ¯Uk„ÇlVšœĀV°mxóšk„@¼ó„WxĉÜU@Ub‚zÛJÇk@‚ÆnVlԙ@kŽ„x™ô@ĬWL¯ƒƒK@aÛImm™@ƒIUaƒ@™™UŽÇêU¤VÒÇx¯ÒV„šš™lk@Wbĉ¦UbkWV_‚y¯Lƒaó„kŽ@b@nmbkx„°'],
'encodeOffsets': [[
106077,
37885
]]
}
},
{
'type': 'Feature',
'id': '6211',
'properties': {
'name': '定西市',
'cp': [
104.5569,
35.0848
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„a‚V²wVJV_@„LlanÅllŦçÜӚ_šlnƒWaôk„xUš„bmV@È°lèšnk°l¦„`@nnL‚@ÈlÜIyVaV@ĊÛXwôƒ@»lƒô™nwU¯›ÿU™Èklƒ°Vn„JUblXšWšš„I„l°U„ƒVƒš—@aVVVmnL@„lƒ„UUw‚mkƒš£„bV¥VUVwۂƒlaÇÝރmk£ƒLUy¯L@WlkKW_XaWƒ—mƒ„ġU@a™k™‚ƒakXkmVwmŹVƒU™b™WƒónmwnWW£„KÈnV¥ƒ¥„ƒÆ_k™lW„bU¯„V°aôbnaVwmaōInÇmwkK@kmLUw™@™`ƒkÅ@ƒwƒb@m݄ĀÇ`U„ƒKUbmUUkÅxmm@›„»nUVk_Ý@™Ç™¦™VÇè¯b™aƒn™@@„„JV„°Žn„U¦™°ÆbXxWl„êƒxš„ĊaœbW`™zV°œ„@lmbÅx@bmV™bƒI™`™¦@ÒUVUI@ƃL@bš¼@ššŽ@„šlmxnL„°ULƒŽƒÞğޛ°kLUŽƒL™°™xVŽ„n„KVƒl@šzX@'],
'encodeOffsets': [[
106122,
36794
]]
}
},
{
'type': 'Feature',
'id': '6205',
'properties': {
'name': '天水市',
'cp': [
105.6445,
34.6289
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@UyȍVƒVUnn@ƒVU„`UblzšJnk‚@Vb„KU„°l„wš„„W°„nkVŽ‚UÈlš£°V@n¥šV„kl™kU˜±U„ƒn™ƒlw¯UkwmKUlmkUmnkym@ō@U„mWÈU°l°anlJškUKlU„¯Èm@kmWV»kkÝLUWUx±b™@¯ma@ƒ¯™IƒJUxn„m¼™K™ýƒa™V™Uݤóa™wLmxU@¯ƒUšƒb݃ƒ¹lmwmnXŽmJ@ÞV@UbVbkblŽ—@±êƒlI™l¯@ƒlW¦knÇJkm¥k@¯™Jmbóa¯bƒUV°ƒakXlšÅ`ƒ„„¦U¦ÇmƒLX¤mXnxm‚„ôšXša„VźUnŽUxlnlW„bššl@bĢV„ƒ˜nX„WbX`lLXk@Ž°KVz„Kl¤„nÞ݂Èkb„‚܁'],
'encodeOffsets': [[
108180,
35984
]]
}
},
{
'type': 'Feature',
'id': '6201',
'properties': {
'name': '兰州市',
'cp': [
103.5901,
36.3043
],
'childNum': 5
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@lW²LššƒŽ°I„l„šmbVb„KnbĊVlkš@XbÜU@Žkn°‚XIƒÆ™V„LšÓÞxŎUlôƒ„b°KzU`lXVaĊ¥Xal@šk™™Uƒ°ÑÈwUтV£ÈéVšš„@Vb„Jš@nnÜJ@b„L°„XK@īšóƒwlš@kÓmUÅmK@mƒ_k¥l¯™mkçǯ@nUƒaV™ƒwólXbm„™k™`ÛÔťèkkmÆkbƒK@U`UI±xUƒbWlX„mbVbÅÒólkƒƒIWJkšƒ@ƒz—KŻ¼™@™xUx󎃄¯LWb@ŽÅ҄„±¦U`nbťĀUšVb„LšŽ„U'],
['@@ƒ¯lwna@mōȯK¯kW¤ƒ@@V@bĢnĢƒVLU‚°k']
],
'encodeOffsets': [
[[
105188,
37649
]],
[[
106077,
37885
]]
]
}
},
{
'type': 'Feature',
'id': '6208',
'properties': {
'name': '平凉市',
'cp': [
107.0728,
35.321
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@ÆLUxÈxV°šLÇÞ@xn`Ü@X@nĊŽÆwnJmwUx‚aUkšw@V@w„aVmlLXÝl@X‚VĢmV°@nl@UUUWK@w„ÿVI²Òlmš@nÝĊýVV@nšJ°„„šUłm@kV¼nK›ĢȤôK„blnKllVk²aĠ¥È¯ĸóVw@V‚_„xšmn¦VWôX„ƒÆ@Vbn@°m@kn@@lšb@k‚aœ@‚wšK@™šƒ@UlKVaƒWX™W²¹lӄw@_°›n@@_lKōķW™@ŽmLUWƒn™»Û@›l_Ç`ƒÛmm°ÅbWb@š—VWbƒUUKDŽÅaġlmkUġlƒ»—Lƒl™Um¦@Ž¯U™¤ÇkVUml¯ƒƒX™ƒƒx¯kVƒƒLUa@ml™IkyVaƒ_UV@„mmUVU„ÇŽVzUxUVU¦ƒa™¤l„nVxƒVk„@ƒmKUnUU@b™˜U„ƒ„',
'@@@Žż@™mlkƒġk'
],
'encodeOffsets': [
[
107877,
36338
],
[
108439,
36265
]
]
}
},
{
'type': 'Feature',
'id': '6229',
'properties': {
'name': '临夏回族自治州',
'cp': [
103.2715,
35.5737
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@š@ż»˜L„y„@l™XI„Jl„ôkÆÑUanaWƒXkW@™yk@U„ƒLƒmUšwš¯„KVlKœ¯Ġ݄݄VKƒ¯mKnw™k@ƒ™@™™»@a„K@ÅVJVU@њ¥š_Uy¯š@£UKmn@‚ƒšó¼ğ¦WmĵXݎkŽVLmVĉU¯bm„ÝV—wWlXÞW¦™xkmmL™šÝŽœ„±U@Vގ™š@„ÅÈW°X„ܼƨyUĮnŽWŽnXÝxUx°lVXJlôV'],
'encodeOffsets': [[
105548,
37075
]]
}
},
{
'type': 'Feature',
'id': '6203',
'properties': {
'name': '金昌市',
'cp': [
102.074,
38.5126
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šĢȼ™„Çł°bœU°šV‚ƒń‚ÆǖŰnšÆ„ōĬǔaʠůĭš_kķÆ¥VÑș„çÜKšÅ@DŽƒVaU™m@aōnġÇk@ƒxĉ_™Wk£™@݃±KÈ±aÅnƒ@ƒÝxƒ@kw›lkwōL¯wm`'],
'encodeOffsets': [[
103849,
38970
]]
}
},
{
'type': 'Feature',
'id': '6202',
'properties': {
'name': '嘉峪关市',
'cp': [
98.1738,
39.8035
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@llĊx„¦šl™¦š„kVVnšJVbǖV„kôV˜a„bnaWw„UXmmamUXkWKō¯Xm°™™»ĉÇ@UVƒK™ķkǼğb'],
'encodeOffsets': [[
100182,
40664
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/guang_dong_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '4418',
'properties': {
'name': '清远市',
'cp': [
112.9175,
24.3292
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lǯkÿƒaV¯™VaÈU„¥ÆDŽIlxšmnb‚Uœxl™„Uôl°kš„„Wl„š@ô™VwUanUl@„xVkšaX¥‚kU»„aš¯±@kka@ƒUwmUkwƒJk™˜„±k@ƒ™™L@ÝWUwV݃—xÇU¯ŽÇX@m™Åƒ@@yĉ£VmUwȗ»ÇšUn„lUnWU¯`Ukƒ@@„™x„Ž@bÇxX¼ƒVVš¯LšĀk‚ÝLƒ„¯@VŽƒĀ¯lnĊW¦kVÇôkUDŽUK@ţ™U@a™™ó܃UU»ƒ@™¦k@Vx„KVb„n‚š@„Æ™„l„@xšƒbWšnlU„lxÈlV„È°Æ„@¼™„@x„šWxœŎ‚V„šK°„š¥ššnƒÆkŎ@ÈÑm™„K@¥šk@™ô@„nôV'],
'encodeOffsets': [[
115707,
25527
]]
}
},
{
'type': 'Feature',
'id': '4402',
'properties': {
'name': '韶关市',
'cp': [
113.7964,
24.7028
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@W™Xk±Ñ@ƒUw™mUwĉwlmn@Æwn£mkIš¥ÇÅ@¥šaƒón£nWWwš£V`Þ@šnVml@xô¼„IV¥ƒkUmkamUkVWwÛ»móƒ£UVÅKmn@x™@kbmm¯a™Xka›VĉaUb݃ƒ²—‚lš„IlxnVVx@„lb@l²™°ƒbV¼lW¦™bUlƒwk@mVVbUxóš™@kƒƒX™ƒ¯lókƒVkš›wVma™nkwƒJÅȃ¦ÇVUbšŽU°„blĀ°ŽkÈ@x™¦Æܙ°@„°„¦óa™VUôlUlbXl@nÜV„„nKlŽnIVÞ°Wš„°U@bnm@¥šIVƒ²Ulƒ°VnalzXyl_Vyƒ¦lƒœLlxš„@ŽÞbšKm„knVWanwƒÑVwČº˜@n_ÞV„aVŽÜIœl@„˜KȚ„VJ@aš£È@˜™@km™„aV¯W@_ƒa¯KmbkÇkLmwƒ@Å¥'],
'encodeOffsets': [[
117147,
25549
]]
}
},
{
'type': 'Feature',
'id': '4408',
'properties': {
'name': '湛江市',
'cp': [
110.3577,
20.9894
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@ƒkXƒ™@a„UUċlk„Jƒk„™@wVJXUWk°W@nKnwlUlš²ƒ„blU@‚lI„l@„XbW„šxnm@lW@w„wU‚JX¯VU°`ŎóˋkÝÝkÅ@ÇmğÈřmw™aĵV›xUہ»°™ĠǷnýmóX¥ɅĵҏÇ@°²ĊUĖ±ĮU¤Ç°™Ā¯ɐnżUĊĊĬV@脎@ԃÒU¼l¤nƒĠb„êVĠ°Èy„zVaV‚nUÆL„ašbVl„wÆ@'],
'encodeOffsets': [[
113040,
22416
]]
}
},
{
'type': 'Feature',
'id': '4414',
'properties': {
'name': '梅州市',
'cp': [
116.1255,
24.1534
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„‚nԚlW¼x‚¦@lœVl™lLkè„a@zš¤ƒĖ„¼UxlnUKUbÝlU¼lb@„Vx„V„klJÈwV¯š@ĠlÛĖšnƒbkšÆźÞƒUÈôklmšL„¥‚LœW˜„„™nKUkVa°V„x@IVV@x°bUk„a™a@mV@„@y„w‚L„ÑUwVUšV„‚„U‚bÞVVann‚@XwÇÿš¯²aVamkXaÆ»@»nw@¥›UXaƒkbWa¯KUw@¥m@kwmLU»UU™J@kmU@UUWUƒ@ƒyƒanwmçÛl¯ƒŽ¯UƒmKUmƒwVkmÝXbW@XWÝbƒk¯@±‚w@»U@W¯Å@ƒÇ¥UƒU@ƒƒ™IU™ƒakJƒĀ„ꃰšþƒXkamŽ@Žƒ_J°m‚@X'],
'encodeOffsets': [[
118125,
24419
]]
}
},
{
'type': 'Feature',
'id': '4416',
'properties': {
'name': '河源市',
'cp': [
114.917,
23.9722
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°VlmX¹laĢÒlm„@„„šVš£‚‚@¦Ģklynn¼lW°z„W„„°VbÈV@lÆbnn‚JškX„šVÆašÅ„W@™ƒUUw@ƒkaV»ÞkVaVLkmVwƒ»„ĕ™£@yƒblçkKkš›U@k¥‚wX»™kmӃ@Wn¯‚I„`@nlb„W™ý„¯ƒé„ÿlI@™XUmWUwƒ@@UJU„Ç„mKUV@x™„ţk¯¯LWƒƒnUxK@ű»Vwa¯š@¤WX@ŽÛ¦@¤ÇIȼWxXŽƒ@Wx—w›ŽUnVbÅèmVa±²UWl@Žk„lȄ¤nôܼXxlUnVlbVn„lU¦ƒJó»@wnkmU™‚Ý@U_™¤XxmXm¤„ô™b@¦Èƙ¦lJn'],
'encodeOffsets': [[
117057,
25167
]]
}
},
{
'type': 'Feature',
'id': '4412',
'properties': {
'name': '肇庆市',
'cp': [
112.1265,
23.5822
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l@š¥„@V¼„Vôۚš@bšV@ŤVLȃlVÈólUX¥mĉ°k„ÿU°@„ƒÞKl™ÿ°KU™„UW»Èw@aƒšw@ƒ„@nm@w›£kÓVUVn„Kš™k¥™£Vamƒ@nkKkbÆǫma—kmLU¥™UmƒÛwmVU™mUƒJ—ÇaUxÇIn`mb@Þ¯b@„nJ@nl„U‚V„lVU„L›W¯—Û`Ç_¯`mš¯I™bĉWċzx±J™xš¯ÆUƒƒ_k@™šƒJ@Umb„šXôlLš˜n¦@¼ĊxlUXŽ˜xUbL‚Ġ„UnVĊwlšUš„b@lW„X„‚m²˜@ÞWxXš‚Unb'],
'encodeOffsets': [[
114627,
24818
]]
}
},
{
'type': 'Feature',
'id': '4413',
'properties': {
'name': '惠州市',
'cp': [
114.6204,
23.1647
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lbšW°bnnlaš@@wnmÆLVUkÇlƒ@Xk‚V²±‚bnUÆçUaVmœ˜xXw„@WXwÇ»ÈJ@£Ü¥@XW@£°™‚bUx²¼@ƂLVw„mX„°K°Ťlšƒ@wVUnLȃVƒVIky±wkƒKU¯ƒÅkƒ™XġÑۃlwUwlm@m„nKWašÅm›¯óÇmğb¯alĉUwķbmb@lÞÒVn—šmĀŹ@VŽƒbVŽUnmakLm`@xĉkklVÔVJVn—lV„UnmJmaLUbl‚™zmŽkL™a™‚ō@@zš‚V¦UŽV²kJ„nÜU@˜VXUŽL@„lJƒL@bݤUnVŽ—b@xVnlK²„Vx°V„xlI„lkVl²k¤@n'],
'encodeOffsets': [[
116776,
24492
]]
}
},
{
'type': 'Feature',
'id': '4409',
'properties': {
'name': '茂名市',
'cp': [
111.0059,
22.0221
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚LnÇlk„KnkÆL„ƒUm™ÈxlUœJló°n@ššanŽš„„a@ƒ˜@X_@mÝóóU@a™aU¯mL¯ƒƒkV¯™ÇVwkw@V±Ŏ£@™™@šalw±Vk@m„Åm¯™ÿŃƧIÇ`ōô¯_UVW°IV‚ƒx@xkX@Žmn™wXƒWa@ƒƒkkJ@kVƒa±„k™kVmxmL@‚¯XXlWVUI@xƒš„lƒIklVȃV@b„šlW@„@nUxVblVxkôlx™n„‚y„šnIƻư„aXwlK„bVnƒŽXb‚L„¤„k‚L—èƒVV¼ƒŽ²IlĠVX„ynz°KVx°@VlœLlblKœš'],
'encodeOffsets': [[
113761,
23237
]]
}
},
{
'type': 'Feature',
'id': '4407',
'properties': {
'name': '江门市',
'cp': [
112.6318,
22.1484
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lUXx°JWnnƚXVš„W„X@„šºVLV¯nU‚Vnb™ô„x‚aXmW™XIšŽUb°xlK„l¯œK˜xXÞ°ŽšXÈ¥Ü@„ĉޏU™‚çš»nóƒVma—x‚¯UÅU¥Ý¯@ƒƒç@ș@çĉÅUmU籃ĉKÝxÝ_ÅJƒk¯»ó¯nmèkǀšŽWxœ¼mnUÜġ°@¦@ƒxƒLkŽÇaVnUxV„™šVlnIlbnÆÆKX¦'],
'encodeOffsets': [[
114852,
22928
]]
}
},
{
'type': 'Feature',
'id': '4417',
'properties': {
'name': '阳江市',
'cp': [
111.8298,
22.0715
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°„nKV°šb@bôVÞô@n„VlÒôÆUnlnn@lmkmVkƒaÈkÆƄ™k¥‚ÅÞ»ÆKXkW¥ÅLmÅkamJUkš™UƒVwUmÈbl„K„w‚@@¥Ģ¯VÛnm›»Xw™lƿ™@kbW™—aʵ@óL›l¯ƽ@™ƒƒLn°ƒÆ@nUl‚²kx™b@‚š@šō¤U²@ŽlxUxšÈU°lŽ„'],
'encodeOffsets': [[
114053,
22782
]]
}
},
{
'type': 'Feature',
'id': '4453',
'properties': {
'name': '云浮市',
'cp': [
111.7859,
22.8516
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@V„Iš™l@„`V„°Å™šw²I‚wČyĊXša°Jn™°_È`Ü_°˜œX‚KVƒkUUƒVkƒ@mmI@ƒ°a@Ýnam_ÈJVwlĉX@„šlUšómaUmVU°UK™¹@ƒƒWƒXU™™WmÅXm¯IWwkVWlÅLݼÆl¦ƒšÅÅÇl„bUllnknm@kmVmóÅkуUW`—@@„ƒb™ƒm™b@™¯mkô›IkVÇwnš„VƒÅKmlƒLklmȁKƒšVĊK°²„`n˜¤n„U„bWl„xVx™LUx@°nXm`VklVxmnnx'],
'encodeOffsets': [[
114053,
23873
]]
}
},
{
'type': 'Feature',
'id': '4401',
'properties': {
'name': '广州市',
'cp': [
113.5107,
23.2196
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ș¼VxUnĊ¤@z„@šÆ@nÈW°ÈV˜w„ŽUÞVxÞX@ŽšK„šl@ބVaĊbœU@ml£k±lUƒkkJƒw¯UUw±ƒkLUm@w˜aUVmÞ£@a„KkI@ƒ‚KVUW@—ÛVƒmlIU±VU¥™@yğzƧǃƒšƽĠřšÅnī±m@ƒ²¯lƒ°@nÝÆóUll@XnÝVU¦mVV°—„V¼™Jƒn„b@°mbn„ƒ‚@²¯‚¯wVwƒ@@nmxX¤¯L@ŽVLU„m@@l'],
'encodeOffsets': [[
115673,
24019
]]
}
},
{
'type': 'Feature',
'id': '4415',
'properties': {
'name': '汕尾市',
'cp': [
115.5762,
23.0438
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@‚„@VxnXWV@š„bVššJ„„V@ÞÅU¥Ċxš£UWU‚wÅUU¥WVUkĊÇnkV`°LV™„wƒƒnU@™„ƒlbĊ¯„Vnalšš@@çkUÝ¥ġaó¯ÅaÅLŻÆUýmy¯ó@ĉÆó„ȯw™ÆXbmLƒ‚@nknVxkx܄ĢҚW„Æl„V°„Ll‚²xlz'],
'encodeOffsets': [[
118193,
23806
]]
}
},
{
'type': 'Feature',
'id': '4452',
'properties': {
'name': '揭阳市',
'cp': [
116.1255,
23.313
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@V„Ȧ„Æ@X°V@@¼‚x²°@„lÞaWXX@‚aÞWlnUŽ„xVnnL„‚°V„@k‚mĢl@„ak™@mlk°aXƒ±„nwm±™²¯JV²@ƒwW˜—_mƒa„V»ƒU@m¯ĉUф™šJl™„ašbVn„lĸLlƅÛDZwÝ@ĉxó@è™@k™mbƒUĉ°kaƒ„@šmV„„ƒxUš¯KU_mlĉÈVlXUV¦ÆVxVŽVX™¤ĉwV¦ÝÆ'],
'encodeOffsets': [[
118384,
24036
]]
}
},
{
'type': 'Feature',
'id': '4404',
'properties': {
'name': '珠海市',
'cp': [
113.7305,
22.1155
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@„è@„Þ°V¦VƁ°˜wnb„UÆ»nçƏ@nxܤ²llU°VnÈJސ°UôéšķUklƒô£VVˌKÞV°£n¥ƒ£ȗ™Ýy¯¯mÅkw¯bÇĔğ@Ýn¯ĊƒVğōŁŻƒķJ@Ț',
'@@X¯kmèVbnJ‚™'
],
'encodeOffsets': [
[
115774,
22602
],
[
116325,
22697
]
]
}
},
{
'type': 'Feature',
'id': '4406',
'properties': {
'name': '佛山市',
'cp': [
112.8955,
23.1097
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Èb˜Ž„InVVšnUÜxn„šVV¦nK˜lnbÅǬlalL@mn„Ubš¤l¦™šƒLUmUVlԜ¤@xmnVl°_XVVmƒkVmș@kn@VƒUK@°KW£nw@m„@Ux°x°@±„mƒna@¯ƒa„mšIU»˜ƒU¯nUV¥ÞUWmk@Vk¯™Ukn›ÑWݐƒĊÛ@Ǧ™W¯Wݗw›Lk°ƒkL¯wVa™WJXšWnbƒwkVƒ™W@kĊ'],
'encodeOffsets': [[
115088,
23316
]]
}
},
{
'type': 'Feature',
'id': '4451',
'properties': {
'name': '潮州市',
'cp': [
116.7847,
23.8293
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°ŽÜknèmx„b„z„@V‚VX@VnV@lšIVVV¼nKlxn@@¦Vx°LXbla„ŽWbœV°£¯™W@nW@™‚aUñVœwWš»@¥ŤÅUÝǓÝóV@ńǎkUVmƒIUwÅVWÇX¹›—@W„¯bkl@nlšƒb@‚kġŽn@l'],
'encodeOffsets': [[
119161,
24306
]]
}
},
{
'type': 'Feature',
'id': '4405',
'properties': {
'name': '汕头市',
'cp': [
117.1692,
23.3405
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚@U±°Iš±n²mx²ƒ˜@œWºXÈÆUVx„JUnlVȍ@ŃôUǔÞVçn»VyĢÛVm@»kaÝUǼóšÛÈķKċ¥X„¥Wwğk™ƒ¯@ƒwķKƒkUm™aƒbkš™IƒšVÒ°Ċ@n„VU¼ƒ‚„bn˜`X—„x'],
'encodeOffsets': [[
119251,
24059
]]
}
},
{
'type': 'Feature',
'id': '4403',
'properties': {
'name': '深圳市',
'cp': [
114.5435,
22.5439
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÞLš„@xšbV„šVšK°™X°Kô¥Vw@anU„胐š‚lkĊl@wn_lKnbVmU„aUź@nÿ˜™UmÝѯUƒbk„@ÆkxŻ@™aÇX—wƒJƒƒ¯LķÝUĕ™ó™ĸóêWº@b²nmĬ™Æ'],
'encodeOffsets': [[
116404,
23265
]]
}
},
{
'type': 'Feature',
'id': '4419',
'properties': {
'name': '东莞市',
'cp': [
113.8953,
22.901
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ŏ@ššblKnšykVa‚KnbnIVmUƒ˜kUmUIUә„ƒçmV@bUxó¦¯LW‚¯š™L™UUƒ™a@w™ƒÝKğŚ™ƾ„„ƨÈĠy'],
'encodeOffsets': [[
116573,
23670
]]
}
},
{
'type': 'Feature',
'id': '4420',
'properties': {
'name': '中山市',
'cp': [
113.4229,
22.478
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚XœÒlmšV°ôÞÅ@m„¯°k„±‚@@aX¹¯VݏÇIUmV¯kk‚±Û£mw@‚Őmèżmô™¼èVš'],
'encodeOffsets': [[
115887,
23209
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/guang_xi_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '4510',
'properties': {
'name': '百色市',
'cp': [
106.6003,
23.9227
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lklWXL@VšI‚l@XnJn@VUUalk@mK@kny@UlU@a°™„ƒUU@VmaU@Ua@UWw@ƒn@KmLm@alkšmnI‚m@an@VIUamWÅImwU@@a@K„X@JVL„UVmUaVkUa@m„@@Ulmkk°ƒUaVUlKXbVwVIkaVmUk@KVk@a„aW¯m@w„¥laœX@KmaškVmnUl@nxVKšInU@yVaVIV@na°KlxX@@_lmXšUV`VIV™V@„n@lšbn@@WUkValK@²yl@„„VUV@@K°L@KU@@UVaXIVVV@naVkVa@K@UUK@UUa™LWa—w@m@K@UVVƒ@mVUUVKnL„mVL„K‚bVK@UUIk›mI@mUIVK@IUK@VkLƒ@WU@mU@WmUk@ƒI@VƒJk@WwX_@amK@UUWkIƒ„ƒK@LVb@mVmakL@J@bU@Ux@xƒbmI@`ƒIwm@UbmKUaUWa¯UkJWV@XƒJUU¯LUmV@ma@kkamKwƒLUUmWVkkm@aVUUkVKnVVUmXK@UW@km@Ukkm@@W@U™kUy@I@aUUmbƒ¤U@kUmL@bmJU@Ua@wkLWWkL@Uƒ@VaU@ƒLUakKWbkUWVkKkLVLUV@JVbƒz@Vƒ„@ƒVmUU@kVmK¯@VƒU_™VWakVmIUKUaU@@bml@XU@@V@LmKUV„mVUKƒƒKƒbkaUXƒKUL@x@V@l@„mxU¦„V@ŽlL@V@Ln@@VV@„nlKUaV@nLUbmJnL@VWLkbmV„@@L„W‚„XLlx„VVIVV@x@V²blUVm„LVUœK@kWWXUlV@Xl`„LX„l@@VšŽƒn@VnbVš@lVUVUÈVbš@@`UXU`l@@XUVm@kš@xmVknUJVXUbmKULmbx@VlJ@LVbkKUbVLÇUUVƒUVmU@VaUkUKƒVUwmLkUUVVlƒbka™XmwƒKUšVVU@@V±Uk@VWUUm»XamU™bƒKk™`ƒ„™U@UnWW_kKmbUVUVmnUV@„nJVUlšUbU@UV@n@JmI@VmbnVUXlx¯ŽkKmnVV@L@V™bkV™Umm™@Ub¯LmlUƒL@VWLkmkLmmn£WmnKU_mW™š™bnbmxƒ@U¦UJU„@Xmlk¦@‚mnUUm@@Jn@lV„ÔVJnIVW„I@a„ƒÆK@I@aVK„IlŽÞnnl@nl`nbÆX²l@xV„@llbVn²ŽVVl@nn„V@IlW@Un@@kVa°KšnÈmVaVXUlaVƒÈU„VlwôUlynIVašan@lVXb‚Iš@n¥la@Kš_n‚@bÆx@XnJV„nKVz@`VXVšU`@bƒ¦UV@VšIlx„UnV‚K„XÈbšVllšbVbnVn@'],
'encodeOffsets': [[
109126,
25684
]]
}
},
{
'type': 'Feature',
'id': '4512',
'properties': {
'name': '河池市',
'cp': [
107.8638,
24.5819
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lLVl„bVV@nXVlI@JVX„mšn„W°b„IVV@‚ln„@nalVUb„nW‚@kVkÒlbVKn²°bUŽlV²@˜X@`nb„aUI@ƒ°wlU@aXJVI@aVK@wUamIXm‚@XUV@@bV@Vm„ImnUUwVaVKXU‚nVK@akƒVwV@nL@UV`n@@X‚lnIUJl@X¦˜V@aUIVm@anƒV@UwnL@VlbVL@KVVXUWƒ„wUUVUka@UVJnUlbnalbVVn@°„„LV`Þ@šXVxV@@bVlUVVbXnWlXnmlš@XXWVXJmbUI@V„llUVkn@@VWV@Vnb„@VXUJVnn`lLVk„a„»lVšLnw@WV@lInw@WnU@U@m‚knUVó„K‚wUmUXUƒU@@wVJVIl@XKVVVbVI„J@Un@lŽVLnm„b@U@Ul@nUš°VUVJnnVJV@„@mVU@ƒ@wkUVwkKWk™yUUkU@alkÈ@lJ@x„Ilƒ@UUWVkUw@Kn@@kmaƒVUl™UUL™ÇƒUUKl@UUmL@aXU@mlUUwmKkUUVKVUƒaƒKUnK@U@Vl@XUWU„KlwX@šb@K‚@XkV@UwWJka@aUwmV@U™@@U@wUm@»kLWVkIWŽXnmV@VkbmKƒLUbk™Va@aƒa@@aVU@aVak£@ƒ±UkVU¯V™UUƒJVƒUIƒ@kxmUmWUbL›w@K@aU@@aVU@Kma@aka@_VWkk@UWVUKULWKULUš@KUnƒwVaUKƒxU@UmaƒL—m@kVmVa@UkƒmI@ƒ@KmIkxU@@K™U@mmakI@VƒLkmWkkJ™_U‚@V@L@n˜xXbšKVb@VVL@V@LUbUlmbU@UUWJUb@VV@@L¯K@LU@UVƒƒk@±z@‚kLUbVl@Xm@™akm@ƒU@UšUJU_™VWŽkn@`W@kw¯LmbU@UJUb@zmV™JULmwk@mVUn™lnb@L›Wkbƒ¦@x°nXŽƒb@bUl@LVlUnlbUJUxWakLUVVb¯„llkn@Vƒ@@nVbUlVbUnƒVUK@IƒW@L@bV@nxÆJnXVbUJm@@bnmJ™nkl@b‚nnK@L„m‚@Xx@VVbV@nb@UVVƒ„¯š@bkV@Vmz@lnLl@kŽVbUVm@mI@Wk™J@UWKkXkl'],
'encodeOffsets': [[
109126,
25684
]]
}
},
{
'type': 'Feature',
'id': '4503',
'properties': {
'name': '桂林市',
'cp': [
110.5554,
25.318
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nU@J‚X@`XLm¦Vb`lšVXXWš@VblČnVšŽlanLnmVLšK@_Vaƒ¥@kUa„@VmVb„aV@XVVzlVVK@knKVmX£VKšLlbnš@b@llL@xĊôXaV@°È@¤„bn„V@@Wl_„V„U@W„nVamw„wVbn@„K‚VšLX@VmVUxlV@šnVV_nK@m‚I@Wn@@IšUĊ@@wVWX@@I°VVm@wmU@m@IUƒV™kƒlkUmmkÅV@@aV@@Wn_UKla@kšaV„šlVanb@k„@@KlVn@@aV@nIWW™UUaVU@™kKmwU@UImKk@UU@w@W@‚™k@™UkWƒ@mk_W@Ua@a™ƒƒ@—¯ƒmV£@mƒUUam@—kWakƒVama@UUm@nw@alaUmnUlVlIœV‚™šLVyk£Vm@k@UUJkƒK@kmKUw™KkWK@UXImyVwnI@m‚ƒkUlkUKkUVmƒw@kkJWUÈm@_k@@aƒaW@U„UJUwU@@IWKkƒmUUV@nVl@bVb@bU‚UXƒakw@ƒWUkbkKƒbm@™xUlkLm@@wmKUX@‚™UaVW™XVmU@@UUUƒxkmWXkKkUWaUaUb™L@`UL@LV`UXmK@VmakLVbkL‚xUJUIVbUVVb¯KƒV@Xnl@lVXbmÒnV@L@VWKkVUIWJkIƒŽUamUUbm@U„kU@JUbW@X„WxUam@kbVVUnUJmUUV@bƒU@UUV™@ƒVk@ƒbƒmULV¦U@V„U`VLUL@xVbn@UJ@nWJXXVŽVV@bkxVbUx‚Lšš@x„¦@šU‚lXUVVlULV@@šnŽU„ƒb@xl„nJVnlVknUlVUbmŽU@ƒbVš„x'],
'encodeOffsets': [[
112399,
26500
]]
}
},
{
'type': 'Feature',
'id': '4501',
'properties': {
'name': '南宁市',
'cp': [
108.479,
23.1152
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lKnbnU‚@Ua@K„L„ƒlJVX@VnL@bW`Xxl@„I@U„Jl@nV@X‚V@nXV„@lK@UVL@JULVJ@nnJlœVJ@VULaƒLUKƒnmKULVVUŽ@nU„š`lIXlln„K@UlJnb@nšV@LV@lwnJ@L@„nJl„@VUbUn@l˜n„KnbVŽV@„wVLUb„xVm@LV™VKXLVKVLXU@VllUX@`lb@bnb‚L@ŽUV@bV@@b@Lœx‚KVanXVƒUUmVUUUaVUky‚UUa„ImK@mUUVUkKU_@W@UVVVIUW„UVaVU@UUKnƒ@k@al@ll@bnL@b„VUV˜X@Vœ@@b‚Knblmn@V_@aUalL@a@akK@kVKUKlwUUnV¥VmU_VWVIVaX@Va„alńK@LVJnalL@LnK„wlVUw‚mX@VXšƒlLUVnblaUmVUVwXU@Wm¯Va@ÞKnw@w™mšk„»‚UVW²a@_mW@U@I„y„LVUUKW@@™„LX@VUV@@yVU@UV@nwUUmJka@IU@ƒmƒVkaW@UwUX@`ƒ@kLWUk@mƒkUUm@k‚UUWkUƒkWxk@@VƒK@nV@UVaƒUUJmIkVƒ@UamLUbkVmamLka™@ƒ‚kmL¯WI@wJmwƒx@akU@aUKmbkaW_nW@_U@Wm@a@wkwUKmƒk@ƒbkb›w@mKUkkU@J@bW@kVWz@bVUa›VUx@„ULkJWbXVVXƒ`@œmJUVU@@Lk@WbU@UJlnXlm„Vx@Ln@‚b@K„LX„WJUUW@kƒaUVUbmV@nnV@n@lVLƒVmLX‚mXkV±@kxÅL›šUbJWIÅJ@I‚mXalkUamKkškL±aVwKƒUU@mÞnbWJX„m„@lbmKULWUUVkaƒbnn@Vl@VVV@VƒbVbnLWLXJWxXLV@@VV'],
'encodeOffsets': [[
109958,
23806
]]
}
},
{
'type': 'Feature',
'id': '4502',
'properties': {
'name': '柳州市',
'cp': [
109.3799,
24.9774
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƒwU™„aV@nVaUVklmkUUmmIkƒ@w„aVƒm@™U@VKUkVUkWV@™ƒ¥@w™™KVwUalw@aUUUWWXI@mVIm@Ua@wVKUKV_UƒV@U¥VK„n„al@„Uš@VU@V„V@aVUnVVIVmUUlan@VbXwWƒX@Va@IlVVƒn@VanVVb„lJXIVJlUXL@U@KmUnÑWakU@mkƒJUI@mk™@wUmmUV@JXaWIXWmaUIƒJƒkk@W„nJ@„ƒaUak@›kkJ@kUKU_ƒ@myUóWUkm¥kUmL@KUKm@k_UmVa@ƒk@@UmU@mm_—JWIUVUŽWLUlbVUJÇVUIVwƒKUVk@mU@n@lUL@Km@@l@L™VƒzJmUU¤m@UbV²U`U@@¼Vn@x@Vš@@VnUVx@blbXIVxU@Wl@@L™aW@kxƒLXVWVk@@U@VmLVŽ„L„bUVULVV‚lnLVxkV@nWV@bnKVVk@VL„VšÈVKšVVk„Unb@lm@@LVxUlVX@Vk„ƒJ@wkIÇ@kl@blVVVšzXllLUxlV@x@„UV@nƒ‚U@UImmUIUV™¯mVk@@V@VƒamnUKkm@@VƒIUJUaUUWLk@UJUI@xV@V„VWVnxƒLUômVV„@VkVVVUnV@UVkL@VVV@bVxla@bkXVJVn„`nU@bƒb@bVL@VnJ@„l@šV„aU@@_lW@UUU@Unƒlll@XLl@@UX@°bVWVanLlknVV@VVX@VVƒnUŽVLmbXJ@nllXX@`VXƒlmaXVWk@Wkƒw—J@„VL@J‚bnU@bn@@bVKUnVJVIVVVL²a@bV@@Vl@nUVakalmš„UL@VUL@V‚a@mXl@nK@UlK„L@Vl@@nkllb@š„Vnn@‚šnV„™V°l„šVInwlKXxlU°Žn@@ƒ‚I@UnVlakUJWkUK@anUWK@_ÞJ@U'],
'encodeOffsets': [[
112399,
26500
]]
}
},
{
'type': 'Feature',
'id': '4514',
'properties': {
'name': '崇左市',
'cp': [
107.3364,
22.4725
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@JVzšl@V@Xn@ll@VlnX@@VWLnŽUVmUULVlUV@blnUlnXVV„K‚xnLlb@lnbU@Vn°KVV„I@WXUlI°VXb‚VVbnLVan@‚x„J@_nJ„a@wVwV@@a@IU@UU@WKXwWIXKmKUa„a@U‚UUUk@@Umm„albVUXVVKnL‚a@knƒWƒXImanÝV@„V‚LUx²blKl™nLVbklWbn@JÆIXJ‚IVaœ™ÆKlw²@lUnWWnK„UUK@k@mmU@mnUVaVU„b@lVXVXIWƒƒK@Lam@@KUwnƒWkkmVIV@Xal@@KV@VUnI@›„_UWWUkam@kkm@ka@mƒk@wkJWIUU@WXkW™XkWWLUUƒ@UakLƒW™XV±VIVWUU@anUWaUK@IU@Vak@@UUKWaƒ@m@ak@@wUkla@mUaUklakwVƒ¯¯@WWUkLkKmaƒ™kLUnV`UxWX@Jkn@bmlƒakkk@ƒb@l¯bm„ƒbJ›b@VXn„bVV@„ƒbƒJUkkKWVU@mœÛVUUW@UVUJWXkVkKmUL@WW@U„Vl@XXKW„XJ@XVlmbUxnnm@UlVnV@XVm¦VJb@šmLkKÇbXblVkn@l@bWnX`V@@IVV@ŽV„V°n@@_naÆVVbUVVbUJnzlVUl‚XkV@Vlx@X„VnxƒbƒKUK@b¯VVUV™L'],
'encodeOffsets': [[
109227,
23440
]]
}
},
{
'type': 'Feature',
'id': '4513',
'properties': {
'name': '来宾市',
'cp': [
109.7095,
23.8403
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nVlw„@VJU„„IVVUšV°lU²V@„l¤Ub@bUV@b‚@„b@bUblšVa„KnLla@UnUWmXlJXUlKV@V_U±Van@V£nV‚I„yšU@K@kn@@LVK@k@mnVl@VU„LUxVJÈUVIU‚aVkXKVVUXJ˜In`@nnV@Vl@@„UbVnl`n@VL@LnKlVn¦VlôXV‚nz„@V`VL@llIœll@Vb„b@ƒmIXƒl@„l„IVJnbWXXJWb@IU‚nVVn@xlš@nVJ„I@W„U°LUaVUUaVJVIwlKUalKnb@UnLVWU_@KVK@_šKVa„@VKU¯VLVKn@la„aUkU@maVU„J@k™@Um@XmbkyVaUIUU@KV@laVn@KXKWUkUk@ƒaW™UUVw@aXKmƒVaUUkšmIƒlUU@wUa™xUmmU™¯™U@WƒLUmVIUym@UVmUa@wmw@çm@aWLU„™JUIUamKmL@™aƒx¯¥ƒkU¥U@±„k„UVmKU_mJUbkKm„ƒLÅǙ_@WWUXUmaVUkK™„UWW@nVxkUƒxmL@KkKmbUI@KƒLkƃbUbW@UbUJUXV`UnU¦mŽVVkxVLUL@llL@b@bkKVb@bU`m@knmaL@a›@@U—WVUƒU@amK@akkk@@b@lm„VL@VUVUbƒVVXUJUU@V@XV`lLUVVV@nnLƒJVbVlzUVVbVVnUVVU„'],
'encodeOffsets': [[
111083,
24599
]]
}
},
{
'type': 'Feature',
'id': '4509',
'properties': {
'name': '玉林市',
'cp': [
110.2148,
22.3792
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VJUXVVXlWX@V™xVnX@@`ššULWŽUXÅbWK@mULUUmJ@n¯b@l@VULVx„x‚XU`VXXJVI„V@nm`@nUŽVXn@lWVn@b@Jn@nU@Lm`@Xn@WJƒ¦U@@VnL„lV@@Xl`nIlJnkVL„w@KVK@UšaVL@bVKX™lUUKVK@I„VšL„a@U@WšLUlVL@bU@@blb@VlbUxVbXUVJ@xVL„U„lV@VU„bVLnKl„XJ@L‚b@an@VanL@`VLšKV_UWl@U_„a@WVInlVUUUVm@I@W@wVakIWm@U@ƒXwlaVbnI@ƒm»Va@aXaVLšU„»@aVa@k™KkL@KmU@WƒzUK@wU@VWUUVUUKUa@mKmbUK@_nWVaUkVaUaVUVLXKVƒVUVmVI@UkKkLm`UkW@UwWW_„UaU@WakXmK@xUXƒJkƒUUWUk@Wl—mJ@km@@aUKzmyVk„a@kkWVUU¯lmU@@w‚kkmV@Vk@mÅIƒ‚Ukƒaƒ@Ub@m@UUU`mUbWaWmb™X™XKWIXUWm@љ@y@UkIUJUUWLUWƒL@UkVUxW@kaWbKWnXxW¦n„m`XLVlUbVbUx™I@JmLUKUb@VW@@bkL@b@VlU@xkš@L@lƒxXxWXX°V@VVVbUVV@UVVbULVnVJUb²b‚aUb@VVVVInlV@VnXaVUšlI„VUb'],
'encodeOffsets': [[
112478,
22872
]]
}
},
{
'type': 'Feature',
'id': '4504',
'properties': {
'name': '梧州市',
'cp': [
110.9949,
23.5052
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VbXblVlLXWln„wVV@VV@UnšWUXVbš‚@VWXa@kVK„UaVaVkšUlyX@Vaƒ—VmUwUaVU@UÈymI@aU°@š™nWV@VaVaw@IV@VmnLVK@kmmna@™„™VbVI@aV@XbW`U„„LUVVx„@VbUV@bl@VLXblJn¦lL„°°@n™@K@UlLnK„a°LWbnJ„¦UÒV„UllLlVnKnbWnn„V`„w‚@@Xa±™n™l@XKV_„WVkVa@kVyUa@wU£UW@UIVW‚@@a—wWaX_WKkVmUULmak@UJUI@±m»™—k@m»VyUIm™nmmwnkUmVaVIUn_mW@»Vk„@VwkmmUXa@IƒaVm—mƒ@Wm_U@mIUWóLmUk@laXmmkUK@UmKULUUmWULƒ@VakU™@Ub@bƒ¼™VUKWb@bUbn¼@„mJUakbWx@„@VXnlJUb@x@X@JUnVVUVmkUJ@XƒbV`k@VXU`™LUK@_mKUbm@@b@„U`@nlV@b„UnbVbn@@`VbUbVV¯bm@@mJXb@bVnUllVXUlbUl@LU¦VVmŽkLVb@b™l@V@XlK@V@nUJUz„°mŽwmLmlXbWVU@UUUlƒIU@VVmV@@¦‚bXbWxX„WlXVWL@LUmkbU@@LVVVJUblzna@WVnš@@lƒIUVnbV@Vlƒbkbm@ULUKV°ULƒ@'],
'encodeOffsets': [[
112973,
24863
]]
}
},
{
'type': 'Feature',
'id': '4511',
'properties': {
'name': '贺州市',
'cp': [
111.3135,
24.4006
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nL@xn@lKVkšwn@„alLlaXV@„lx„bVWV@aUa@aUk@mVUnVl„XL@JV@VxVIVƒX@„b@bl@@`ÇnXVlI@l„xUnlVVLkllV„@nmJUxnzWJ@VXLlŽšLVxnL@l„LlŽVI@V@lUnl¤Uz™Kš@„Vl@š„L‚l„Lnš‚b@VnVVU@k„a‚Knxn@VkVJ@ńUlakmWIUaVanm@_UK@UVWUa@klXam™U@Vmƒ™VIXW„@lUVknVlKVLXŽVXšW@b@VlšnnVL@KXL‚Kn@lb@UnW°@Va„X„WVb°aVa@I¯aUkUaVKVwƒaXk@a„a‚™@wkm@alanUVw@alK@Umkw@UƒaUmU@WXUaUK@UW@UaVWI@¥Xa@w@WWšVƒXwƒU@mKUXUWVU@a¯kl@akU@UULmK¯VUVW@U_m`U@@xVbUz@lUbUlƒXU`WLk@mš²šWb@Ž@ƒxU_mƒXmmamLkUkKVkUƒVу¥mIXa¯KƒbmLkK@V@Lmš¯@ƒ¯kKm¥kIWaUKk@@aVUUaƒ@UwVUƒKVƒX_WaU@@bUJUaƒš@šmbnn@lULmKUnU@@J‚xUbUbU@mX™š¯@VŽ@bnJÇz@VUVVbVxUn„˜UbW@kz™VUlUbVbƒŽUL@lWb'],
'encodeOffsets': [[
113220,
24947
]]
}
},
{
'type': 'Feature',
'id': '4507',
'properties': {
'name': '钦州市',
'cp': [
109.0283,
22.0935
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@IlVVlnL‚@œxla„al@n„VLlx@x@bXnV@@`mXX`lbnaVL@blV@b„wnx‚I@xXJ°nK‚l„š@lbnKnblUVanKVb„@lUnJVI„VUb@V‚U@m„L@Ul@Xw„llVVXV@lVnlVn„l@XVlK„@@_VWVxX@lb„U„nV@@JlbnIlmnVV@UwVK@U@k°a@mnIVVVK@nXLÆaVWXVK™™@_W@Umšw@UXWWkUUVWUIVaƒUkJ™UVWbUmU@mkUJUU@UVab±aVaUIUmVKUaVUU@VUUaUUU@W¯XWWw„w@k@Kl™@wkV@U@alK@aX@@UmIUWUIƒ@mmkXU`U_WJUnUJmUk@@amLU@UVW@UkU@@VƒbUWVUk@@wmKkUWLUWX@JmIƒlUkkKWKkLWU@UKWa@bU@@a@_UKWƒUUUmJmw@nV_@ġğKóLmbU¼VÆ@xUXƒ@Um@wklVnUn›lkaUV@„lV²WVklWXXbWlkVkIm`UUƒLƒUU@UWƒx@XU@@lWLU@kbUbV`UXllUV@bmb@LnKVbULm‚šnVVIV`X@'],
'encodeOffsets': [[
110881,
22742
]]
}
},
{
'type': 'Feature',
'id': '4508',
'properties': {
'name': '贵港市',
'cp': [
109.9402,
23.3459
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n@VzUJ‚nVŽ„K@XšVš°nVVnšwVb@xVV„knJl™VVUbn„WL@bUxVVXš„bl@lVXkWƒXwWaa@¥‚@nUUUV@„JVkVVV@XUWanknK‚xnƒ¯VyVI@m@UkL@W@Ušk@aUalKnUUV¥@KVkkaWVkUVkUm@aWanI@n@°aUUVaUa@_m@UamaƒV@akU@mV_@ƒa@KWIkƒmLUKƒaUVU@ƒkƒVUK@wUIWVUaVwka@Uka@aV@@aUKVk™K@X@Vƒb™KƒU@JULVLkVWšUL@aUK™b@VUL@LƒxUKmlkImJk_@WU@ƒkmK@UV@„¥XIm@@Wn_@KmVm@@I@aUmkXm@UWV@mn_@mƒUUJWIUWV_WƒwU@mUknVVmxU@@VUV@zU@UVW@ƒK@šX@VLUVƒKƒz@J@VnX@`±bUXVƒ¼™lšn@xmxÝL@‚Ubn°@XWVUxUVVnkbWVXV@Xš`ÆȄKnƒlLVanIV`nLVUlƒ²ƒV@V¦„l°¦„w‚b@šnKnLVbVJšIVƒXK@b‚n@ènx@xVbUnV‚'],
'encodeOffsets': [[
112568,
24255
]]
}
},
{
'type': 'Feature',
'id': '4506',
'properties': {
'name': '防城港市',
'cp': [
108.0505,
21.9287
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XV@X°°U„lxkbVlVb@nkbVl@xl@@b@n„‚XbVL@Vl@UbV@@JVLXbmV@bVVUXUJU²šW„XlKVb„@VVXKlXšWlXXWV@VXJlI@x„l@nlbn@lln@lbXalIVK@ƒVwœUVb‚U@aXylUX@@aW@U_UJmU™nVKUamL@Kna@aVUkkVWU_ValaV@XK@kV@@W„wVXV@„V„KVVn_lJlUXkWaXWlkXU‚±kU@ƒVUlbœkVmUmlk™¯Ý™™W@mb@¦VxULm™kJUU@ma¯wƒmkX@VóJ±bUVUXÝWk™lWXXlƒxUaƒbƒIğ™Ç@U@mVUKkkm@UJm@XnWV@x'],
'encodeOffsets': [[
110070,
22174
]]
}
},
{
'type': 'Feature',
'id': '4505',
'properties': {
'name': '北海市',
'cp': [
109.314,
21.6211
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VaVLnK@IšJVwUaVaUkWKn_mƒX¥WwXm‚LXalbU£UyV„Å@ݙwm@™°l›LÅUƒmk™mwÛaƑLÝUUm@ȣƃV_„Ó@£UƒƒUVƒ„™¼U°W̄™ÞVbXbôx@b@bmV@ǃ™UÝ@@ĢU`m@ŽnxnIVV‚VX„VL@`@bV@@aXbVL‚@XVlKXLlLVl„knJ@I‚WVXXKlVnL@xl@UVVX„a@UV@VlX@VUV@nK@bl@nVVIVmXIV`V_lWnn„@VJVXnJ'],
'encodeOffsets': [[
112242,
22444
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/gui_zhou_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '5203',
'properties': {
'name': '遵义市',
'cp': [
106.908,
28.1744
],
'childNum': 14
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@@UnUlJn„w‚JU°VL@bnVšU„wlJ@XƒŽXVlU@klVUJknl„UllL@bUJ@xULUlƒ„UblVkblbnw‚UXmla@„wV@VK@L@UXaVKVLXWƒUVa@U@Im@@W@£UKUakKWIXU@al@@llUnL@W@Un@@VlUV@VIUanKl@Xb@lmxVb@b°bb@nlJVVnnJ@b@L‚V@ln„@LmV@Vx@blnVK„nlJXIlw„J@҄b@nlK@Un@UL@VVVVUUUVK„l„@VUVL„J@UVUUw„@Wm@™„UV„ÈVlbUb@JšLlŽX@@x„„ƒLmŽk@@nlx@bUJUzVJ„@@LVxUV@bWxnLnVVK@_‚K²xVbV@n¥@aVI@b„@l@Va„Knb@n‚`n„mmý„W@ƒU_šwV@VlVV@Vn@n„˜@nI@Jn@°¦VaUU@™„mVVWVaUńU@aVKnƒVbVUmmU@a@kUw™m@aUUmUUJ¯lakU‚aXaWUUaVƒkk„amkmUnVlULƒVlJ@XU@UJWUUw„k@aU@WbkWƒL@U@WU@@XUKmV@aUVwUĕUJUamUUVUÑm™nIVJ@kl@XalJVn@KVLœ¥@UWIXWmU@mVUKnUWLUKUaWUUKVU@U@anUny@UlUkK@w@a@aVUƒ»UkVw@Wmk—JƒÅmUUVmwXalLXWWUnam@XkƒJ@UVU@U@W„@@U@I@Wl@Ènlw@KXLWb„lVUkalKUU„VVaV@@wnIlaUmkUƒKWU@KkUkLWaƒKUUWUn@VƒK@LnnWJUIƒVkUWVnV@V™@@XƒK@VUIUJ@IWJkX@VVJ™IƒVkK@I@UVaUWk@m„@wnUWKk@mxk@@„lV@b„xmb@x@VUmLkUƒJ@nVV@b@VkLVbU`¯I›l@™U_UW@UU@™™ƒK¯wm@™xƒL¯¥kIƒ™ƒ‚@bkbƒ@Ua@ƒm@kkW@XVbmV@ŽkV@bWbUbV@„¦ƒxXlmVk@ƒ¦™bkaWL@KUImK@wUK@VUI™b@bmK@LÅy@akXW@kbWlXblL@ŽULUbƒ`@U™kUymX¯@mšUJUUJƒL@Lm@@WX@lU„VlšXll„@l@Èk°V°Ž„X@VU@UVll@XUJVXUVm@@VXLWlnV@Xƒšk@mVULnxV@@bm‚kL@VWLUbU@UVm@ƒb@ķ¥UnmJ@UUVƒkkJUšlÔU`UIW@ƒ°kLUlUI@WVI™U@mWKkXk@ƒ‚WU@bXšW„@J@xX@l@LVl@xšLVxXX@x‚KnxVknb‚KVV@U„L„WlXU`@nUlšX@llVXšVU„KlkUKlI@anKVLXKVaUIVWV_VK@VnLlU„»VKVL„m'],
['@@@KlKkUUVVX']
],
'encodeOffsets': [
[[
108799,
29239
]],
[[
110532,
27822
]]
]
}
},
{
'type': 'Feature',
'id': '5226',
'properties': {
'name': '黔东南苗族侗族自治州',
'cp': [
108.4241,
26.4166
],
'childNum': 17
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
[
'@@VV@XkV@bUbWJU¼Vb@Vnb@bš„@J@bƒL@LV@UVƒlUI@a™KULVb@bkJmx„šlLVxknVJk„‚xnKmnnL@bn`WIXlWLU@UxVbUVmKV„XI@JVIVJ@U„L@Wš@@UmUXUlV„UVJXImm@K„L@UVmVXV‚„LXblKlV@LXV„LlVVnkbmJ@xnXl@šbXa‚@Vana„ÒšL„m‚VnIl‚Þ¦°k@b„@@lV„nJlUnš‚VX_„@lVlK„šV„UUxVLVWVIXJšUlnnWlI@KUaUUVKn@VaVXV@na@ƒmw¯@mUkJUamI@lk@@am@@I„ƒUmVImUUw˜™@anUVaUU@LU@WaWUXWW„wV@VwnU@L@ynbl@@X@a„J@nW@@Vn@„lVLlxnI„lš@@UWKUƒnIlJXIVllIVVš¼XK@aVI„V‚@@bn@VKXLVKVVVInw„J@UWI@mX@WKnI@KmU„UVJUL@V„KW@@k„@aU@@W@InJWUXwWI@Wƒ@¯wkaVaUIl@nŽValIXWWI@UUm@anwWkXWWIUbk@UJmIUamKVUUUVVama¯VkIVVUlKnXVwX@@WVaUUVa@IlƒaVmƒkna›wk™UU@ƒU@mUVƒšUVwœl°LVbnJVU™¯la@mX@@UWKXU@aV_V@@JlkUƒ¯@V™nK@km¯k„U@ƒWUW@mmƒU@™kmlU@wkL@WƒUkL@VmLƒJ@b@V@bknUUVK@UVKUK@Uk@Wa@LUVVnUbmVk@@UU@@aƒV¯K@U@UU@WmUL@aU@WV—w@ƒ˜I„xXll@UX‚K@KXXVJna@wWaƒ£naUKV„m@UU@mUmalm@@XkVm@U@VƒLmWU@kkWxU@@bVV@VkXVlƒVƒ@UUk@@ƒmI@KUw„m@UmVƒUUwU@lwkV@IUa@mUaVIVKVa@w@U@™UJkb@n@bmJ@XmlVUxWXkJmUkUUVW™xUlU@ƒaULUšmbU@@‚WXkmƒL@xUV@nUxÇm@„XLWbnlƒnV‚nnUV˜U‚nVVz„@lbUVVlULVb@V@nUJkwm@Ux@bWbUK@UULka›JbƒU™U@U@lUK@XUJmn™J@bU@UwWa™x@zkJWnUJUUVšVV@bXn@xVb@J™L™m@X™w@`@bkb@VmXUV¯L@mW@@n@V@‚ƒL@K—IW@@aƒaUx¯@U„m@XbW@@L„V@bnVWVkKUzlV@bÆa@lnI@VV@@LnVVKUaV_VJVbnU@bn@‚‚nX@yVIVxXKVLlUVaXU°J',
'@@@KlKkUUVVX'
],
['@@UUVUkUmV@ln@VXVK@K']
],
'encodeOffsets': [
[
[
110318,
27214
],
[
110532,
27822
]
],
[[
112219,
27394
]]
]
}
},
{
'type': 'Feature',
'id': '5224',
'properties': {
'name': '毕节地区',
'cp': [
105.1611,
27.0648
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@UkVƒ@k‚W@Xn@@K„KVIVVIn™°@nWVzšl@V„_VaVK@kKWaXklaX@lW@bÆz@KnL@ašaVJ@UVL@xnLVJ@LXKlbša„¥l@nUWk„wƒ¥U@VaXa@amLkUƒKmƒ¯kƒmkIUaƒKUIWƒkKm@anw@mlwXIƒmƒUk¯@a@amUƒ`kkKWVkxmUUak_mJmw@w„mXUW¯X›_@WnI@aVwkWWýŃU@WLkU™aUbVV@lUVVnm@kUmV¯™kK™LƒwmVUUaWV™aaWw¯wƒÈ@VULUVUUƒK@nWJkI™l@Umxnbm@kbUJƒa¯bUbVxmLUV™aU@VUUWxkVVV@bUV@XWbnlUbƒbUJlbUV¯b@z„`WbXnmbƒaƒwUwVWUƒbUxmbU@Uam™@Vƒk™VaƒwVaUƒWI@mUKóz@lUlÅ@WIƒb@xXxml@XklULWKUmwUa¯KUXWJkaULmKkLWbkKUVƒImƒƒWa@kUaULƒW¯LƒK¯@kbƒL@b™x@J@bmnnlUšlzU`U@@Uƒb@„m‚n¦°bU„Vx@bkVm¼mx@mk™mVV@bkxVn„aVV@bU@mL@b²`lIVV@lXLlš„bVxn@@bl@XllIVšnbVšn°°wlbXw@mVa°lVnU@mš™VLVbn@@b„@@WVnUV@Xlxn`VznJVb@L@bV`V@šUnwšU„@WUXKV@UUlmUUlaXalLšm„bšIVbnJVIlVVaUUnWVXn‚VL‚k@ƒnWnblnlb²x„xVKVXlVXLVW„LlUVJna@wVL„¼@JVX@`@nnx@nWJU@Vx@XXKšŽUblxUš°„LVKVVlL@KnbVUnJ„IlUšƒnKl£VW„x„IlJ@nšVÞUVVnb‚VX@V_°lnK',
'@@@UmWUwkU@Um@@VkL@V@„„‚V„VkV@nbVa@ƒ'
],
'encodeOffsets': [
[
108552,
28412
],
[
107213,
27445
]
]
}
},
{
'type': 'Feature',
'id': '5227',
'properties': {
'name': '黔南布依族苗族自治州',
'cp': [
107.2485,
25.8398
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚V@IöalK@UV@@KUaVIVVœLlaVbVWnX@‚@LnUlxl@naVLXVVaVU„J@lUUanWWI„@VlV@Xbƒb@V„n@VmVVbk@kU@V›V@X„J@zn`ULW@kK@_WVUK@LUb@Jlxn@nnWlU@@b„x@XVVU@UbVb‚@n`VI@VVLUlUIUV@KmL@VV@XIV@@lVLVmXV„@WLXLW@U`šnkb@Vl@UL@VVV„L„llX@`lIXb„J˜IXW„L‚aVL@ŽXXW‚Ģ™b@bmK@L@°@Vnxmxšn„K@xVn@VkL@V™Lƒakbl`VnnxVnUlššV@@VVXV`@šœk°JV_UalK@U@aUU@m„IlVnK‚V@U@wnaƒw@akU@ƒl@nwl@XLmV@xnƒl@VXUb@V@JlL„UšJUI@UlWUƒnLVUUaVwV@XKWkXJm_@amKnmmLwlƒUIlmUwkKƒ™nwlI@aUaVKšL@bVJ„kVUU@@K„K@a@I™ƒ@ama@UUaV»XIVa@alU@WUU¯IWVUbkVUKWLUwUJ@zmWm@@amVUaUIU`VbULmU@KU@@UmJ@kÅb@akUVylLXUmU@aƒU@KX@Wan@Vƒ°@Vw„b@bX@˜J@L„K@@U@mX@@n°KVUnW@Ula@a@_šx@WšnšK@IUa@wWm@aUUU™VVVIXmlI@yšwXbVxV@@ašInmVI@WVL@k@VšV„V‚aœIlbVK@VVLXa@aVwn@lxVI@m@UUaVKUkVUkaƒ@UymUV—VUmmU„mmkXaWK@ƒÈnVw@mVU@w„KlnXW@V@naV™VKUk@KVIUWƒ@mk@KXU@Um@@lVƒk@UVJna@UWaƒL@a@ƒXa@kmmVUUk@mkkƒamJ—ImJUUmIm±aUUkambkamVUU@VlbUbVVƒxX„WVUU@VUakU@UmUV‚U@mnUVVnUbVJ@b—UW¥kLVamVkUaWJU_UVWKk@@nl„UVVJUXm@Vm@UnVlmbnmJUbULU@@UUKWVIWxnJVb@xUL@bUJWIkxƒbkb@xVJƒbmU@kW±LkKUkVa@a¯am¥ULkalÑlKXUWƒXƒaVakImVƒ@ka@UUƒJ¯aƒX™mmb—KWU@wUUƒaUa™KmU@UXlWb—¼WLUKUb°„UlVbkbVL@VƒšƒJ@nVlUbUXmJ@VX@lbUbU@@bWb@VnLVJ@bVVUz„ŽVL@lnL@b™VVVULmKUk™Jkbm@ƒxVb@V—kƒKVnnV@b@ŽWXU‚„nV„l‚VVXVJUXlVXbWV@VU@Ubk@@KWbUUmL@JnXV°XJ@_‚`UbkXVVlÆkbƒ@VLXVV@‚V@k„KXX@`V@@n'],
'encodeOffsets': [[
108912,
26905
]]
}
},
{
'type': 'Feature',
'id': '5222',
'properties': {
'name': '铜仁地区',
'cp': [
108.6218,
28.0096
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°a@aÈbVUlU@aVKnVV„VUlyX¹lWVa@U™VƒnUVU@m™@mUl@„mÞw„@‚xnIVbna@KVI‚J@kwV¥ƒUXÇVkVW@kkKWU@aXUWmnIVa°VXbmL@VVbnVVVUb™VbšJVbVKXkVKVanU@aWnWUWa@U™nk@mVIVK@wXxlLXbVJVlKœbl@VI@mšaXalVV„VbX@@ašalnkx@b@V‚b@Vnx@bVVUXn¤WXn@Vl@Vlzn@š`@I@KUU@ƒV£namVkXa@aVK‚nnU@anVlKƒa@UUU@amk@»kƒU¯@aš„VWnkWmkImU@akaVm@»VUV@UKnkW¯XWlkUKnIWaš@nmlIXmWUnwUwWm@wULmaUJkIUaƒaWa—klwkwmJmU@bkJ@XUJ¯W@XbWbUKUkWJUUVKnn@UmmXUWa@mU@@UI@WmXVykwm@kaULWwU@¯ƒlKUUVU@mU@UkmaUbmV@b—š‚xVnVUJVnƒ„@Jn@@bl@@knJVblInV°@nx@„mbU@UWUbm@ULVVVb@LkJmXkm™VWIUJUXUKVwƒV™UƒŽkLkUƒ@W`Um™kVmIUƒ@kƒ@@a¯lÝ¥kmJUƒn™KƒÑmbUb@Wb™ak@mWU@UbƒUVVkLlbUVƒkXaWK@LkxÇmk@@X@J@Vƒ@@X@VUV@V„IWln@mbXVWXkKWbnxVUnV„ƘInl@XUxVl„¼UV@b@b@xlLkV@VmzmV@b@VUVVLXVVbVLXKmVVLU‚@nnVWXXJ@V›¦UK@LUmkIWbk@@lUImJnšVÒVUnVVbVIVĖUxV‚@bnUVL@WV@@X@V„KlXXaV@@bƒlVxXVVIV@@WkI„UVKUkVmlnnŽƒbllU„VbXVWbblVkb°ŽVInVVV@bšnVx@l@bnVVnUŽUam„UL@bƒVVÆUbUXU‚ƒn@šVVUb'],
'encodeOffsets': [[
110667,
29785
]]
}
},
{
'type': 'Feature',
'id': '5223',
'properties': {
'name': '黔西南布依族苗族自治州',
'cp': [
105.5347,
25.3949
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VL@Vl@@IXW@kVUVbnW@XlKVVnU„VlL@b„aVbƒb@xX‚°ÔUxV@kbm@VxkxWJœ„V¦ƒŽ@ÈnšVKšxWXJmV@n„Ò@xVbn@@blLk`VX@bššla²JVUlnn@U±lw@wnw@mlwVIX@@m@klKnk‚a„KnwmmXkƍVm„Uš¥l@nb°n@„aVwVmVIVnI@a„¯@mšU°ƒl@@VnI@JV@UV@b@IUbVJmXöºƒzllUbVa@aXUl@„U@llLnKVaUa@UmK@UšwV„bnKV@VwVK@UXƒV@Vbn@‚w@U„WnX‚@„a@m„I„™@UUKlaUaVk¯ƒVaVLXK˜»XaWk¯mƒkğwmW@mIƒVkwƒJUIšÇVwU™UkVKkƒm@UkmU@WÅwm£Vƒ„m¤¯IkJWa™_™lUbmJzÝJk„ƒUÇVU„ƒ‚@bU„Ýn™m¯LUb@`mL@VkL@VƒUmmk@UU±Umka@kUƒ@ķymUkk@mmkÝmUaUakImV@V@VÅLƒ¦ƒJUXmJXšWb@n°Æœx‚¼nV@LlbUŽUbmL¯@ÞbV¤nbVx@bUVlblIœ™@KVVUnVJUn@VlLUlmLUUUxmK@I@@VW@@bU@UJmUkLVVUl@b@V'],
'encodeOffsets': [[
107157,
25965
]]
}
},
{
'type': 'Feature',
'id': '5202',
'properties': {
'name': '六盘水市',
'cp': [
104.7546,
26.0925
],
'childNum': 5
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ôyVL@nXJV„Ub„x‚bUŽlšU„@ŽšnŽVbV@naVw„a‚VUXVx„x„bnaWmXaƒ_@y°aVUkaVI„aVamkXa@WVU@aUUlUXwVV@UVšbVUnKUwVa°a„bVIlan@manw@VšklJXI@m„LVVVUVK@U„ǃk@KUa@UkaVU@UVWV_XWVXVWlLXKlLXaÆKšwVL@akKm@Uwƒ@@XUVk@VUI@wWK@aUV™I@UkK@ƒmL™Wƒ@kImJƒUÅVmkXUW@UJkx@nmx@xkxV²m@kmUV±Ikb™™@aUWl_kK@am@Ua@wƒÑ@mnUWIX™wULm™@DŽU¥›ƒXIlwUwn@laU@Vw¯ÓW@w„aUaƒb@akKƒUmVUUkL@WmXUaUV@lWX@Jk@@UUKULmLUJmzkKmVX°VšUnWKUL™ƒƒL@mU@UnVJ@b@„UV@Xƒ`m_@l@@bmbXJmnnš@°˜wnn@ŽVLX@V‚@nVl@nk@@b‚l@nn°WlXzW`XXVKnUlxVbUb@‚V„Xb@Ž‚VxÈbVlnbmn@ŽkVUL@„ƒŽmLUVVL'],
['@@@ƒ@UmWUwkU@Um@@VkL@V@„„‚@„V@VkV@nbVa']
],
'encodeOffsets': [
[[
107089,
27181
]],
[[
107213,
27479
]]
]
}
},
{
'type': 'Feature',
'id': '5204',
'properties': {
'name': '安顺市',
'cp': [
105.9082,
25.9882
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lL@bUK™xÅLWbkKWLkKUXUWWXU`UX@VUVlb@VVb@L„l°xXx‚bšbXUVb‚VnU„xšKlL°šnUlVn@UmVU@kUUVašblVXKV@ƄXþlXUxnU@mVK@_@ml@UU„@šblU@KnLVyUw„@@UmkšWVw@UVK@VXzVK@n„VVUUW@kVJnlaš@nKW™kaWL@U—™õb@JU@mU@@_WWƒL@lUU@WUUK„@lakÅUUlWVa_@`WIU¯mW@InKVVXa@Ll@VaV@@UXUWakUVWUIUW‚UkUƒƒmVXW@@amUUm„L˜l@UUa„wn@lašIVlnLVKUUšU@amK@kUKƒVyUU@aUImK@UXa@aV@VakaW@@UnIVWVaUkƒb@mWƒX@Vxm@UaU@W„@VULUxU@mLƒaUŽ™x@VnL@VVbUbmLkK@kƒVk@WV@bUbVakk„yõ¹nWUIVa@J@aVUU@@ImJ@Uk@¯„™V@nƒ°@bmJUUJUnUxƒbm@¯Žmak@™¦ƒVUnŎWlnnmxƒLbmlkL@l@nWVnlÆU„VnIlJ„@šXnK@„lL@VšJVU@bXL@xVJUl@VU@W„@Vxn@'],
'encodeOffsets': [[
108237,
26792
]]
}
},
{
'type': 'Feature',
'id': '5201',
'properties': {
'name': '贵阳市',
'cp': [
106.6992,
26.7682
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nŽlLX„VJ„LVblJ„n°ln„„LlVnKlU@nUUa@WlX@l„n@‚Vb„@la@a„„šlJ°¦„Kšwn@°x„LVkUmmwUmk_la„bšK@UlK@UUm@wƒL™mnwmw@U@¯@KnL@aša‚ġXWW@UKbƒKWX—JƒIWakJ@_kWƒkƒKUU@UVKk@@Ula™mV_X@WKXKƒ@WUUnUK@kU@WJU@@UnK@LVUVJVkUK@UUJm_@UaVaV@UU@Wƒw@aV@Xkmmm@kw@IVa@KVLXU@`lLX@VKm_@yƒI@WœU@UlVl@UanU@Uƒm@U„aWaU@Ukƒ@XJmXVbkV@ŽƒIUVUbWUUKmbk@kwmV@K@mWUXUakb›KUUUJVb@LU@@VkL˜š@VXKlbXšmL™@kbm‚UI@lVXUVƒU@mULWy@UUL@VUx™Xnl@Vƒ@VxUzmK@LkV™aƒ@VVk@@n@`UL@nmV@bmJ@Xœ`WX°WVƒn@xnxnIl`VbnVlwXUlLl‚„_nV@b@bl°„V„nWJkx@nmx@b'],
'encodeOffsets': [[
108945,
27760
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/hai_nan_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '469003',
'properties': {
'name': '儋州市',
'cp': [
109.3291,
19.5653
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@஼jpnr’``ŽpRVHʘ̤žZt^JÖA˜[†CâlTébQhRPOhMBcRSQiROE[FYdGNOEIH]MgEAMLLIAG_WMCSL@ED]PCLYC[ZIHgjSxJTMbHNEFCMEE_HSDFHSLECRNSFDRICHNADGPI\\RZGIJTIAHLDQOHG`GTNCOIC@eIGDWHIS[kiE[FMbECZS@KKS[FDWsCeRuU_DUQNOE[LKGUBM¨EDQP@HWHGDImXƒCog_~‹I_fGDG|QDUWKBC\\ore|}[KLsISBHVXHCN`lNdQLOnFJSXcUEJMCKSHOUMDIm_‹DI`kNDIGEYFM\\YPEEIPMSGLIKOVAU_EBGQ@CIk`WGGDUM_XcIOLCJphHT_NCISG_R@V]\\OjSGAQSAKF]@q^mGFKSW^cQUC[]T}SGD@^_ˆaRUTO@OHATŸ”'],
'encodeOffsets': [[
111506,
20018
]]
}
},
{
'type': 'Feature',
'id': '469005',
'properties': {
'name': '文昌市',
'cp': [
110.8905,
19.7823
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@€hIJ¤Ī¯LQDaFßL[VQìw€G‚F~Z^Ab[€¹ZYöpFº lN®D´INQQk]U‘[GSU©S_­c‹}aoSiA£cŁ¡©EiQeU­qWoESKSSOmwŸćõWkàmJMAAMMCWHGoM]gA[FGZLZCTURFNBncVOXCdGB@TSbk\\gDOKMNKWQHIvXDJ\\VDTXPERHJMFNj@OwX@LOTGzL^GHN^@RPHPE^KTDhhtBjZL[Pg@MNGLEdHV[HbRb@JHEV_NKLBRTPZhERHJcH^HDRlZJOPGdDJPOpXTETaV[GOZXTARQTRLBLWDa^QAF`ENUPBP…\\Eji`yºEvåà'],
'encodeOffsets': [[
113115,
20665
]]
}
},
{
'type': 'Feature',
'id': '469033',
'properties': {
'name': '乐东黎族自治县',
'cp': [
109.0283,
18.6301
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ªVLP`@PEdNRAHOPEAKHEVL`GZBJfvdTAXNNTZJFPrHHNpKTD\\ILHbEVd^J‚OHLh@NNBnHP`\\xH@NBRLJTlŽNv_^CTLd@bNDVFbxdFV€UPBTKOGEOUO@OEBXQP[H_EI\\EbeYa@UO_J‹MEJ_IEDKJUGMDcNUd_FMTEJSGoZ]EIYGO[YW‘gEQ]a@WHEDQKUSDUGAbYBUpSCYNiWqOSQEoF[UcQISWWNMSDe_cLQ_UBiKQOOASQAWgS­ā]ZaŽSPÝZ]XMXSŒ[^oVËNgNKlE RôEø'],
'encodeOffsets': [[
111263,
19164
]]
}
},
{
'type': 'Feature',
'id': '4602',
'properties': {
'name': '三亚市',
'cp': [
109.3716,
18.3698
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@®ĂhTBXTRPBRPjLVAR`dKf`TC‚NXMTXRJVdE\\FpTRrPjXZMTDVoZABaVHTCLVCRGF@X^bFR’hZXP\\ZHHMA[^wBWXJlW¤EJ[bCTOF‹WWMm@ILMGWQ@DQ^QNWFSHEbF`OXNbO„VNKTEPDTLTCCVTREfvfEHNbRAENH^RJXCFHNFRpVGHWISDOTMVCZeGamaLoLÛD¹¹ėgsia{OųE—Tt‰lɂwr}jŸR±E{L}j]HąKÃT[P'],
'encodeOffsets': [[
111547,
18737
]]
}
},
{
'type': 'Feature',
'id': '469036',
'properties': {
'name': '琼中黎族苗族自治县',
'cp': [
109.8413,
19.0736
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@bRFnHNbHŒgN@NPEnbXP@bND`NT\\@\\QZb@`@J]V@XhžDpW„nCJGHGXO@CR§FANHVKLF\\MPVR`CvVfQtDPKpGHG@S`WJP~^dSTHWX\\RHTFACQTIAUPOU@MG__IaYSFQK‘NSbORHXCZeTFJg„B`YBMNMFi~IVDV[tGJWXGDQRGF]ˆJrALgESLSAYDGIaFeXQLS\\MKSLSQYJY}eKO[EHiGSaK[Yw[bmdURgEK^_kcSGEOHKIAS]aFSU@Y]IWFUTYlkP_CUOUEkmYbSQK@EMWUuAU\\M@EpK^_ZMDQ^OXwC_ZODBrERURGVVZ\\DTXcFWNIAWJWAYUUFYEWLQQaCIZeDM`cLKRGpanJZQd'],
'encodeOffsets': [[
112153,
19488
]]
}
},
{
'type': 'Feature',
'id': '469007',
'properties': {
'name': '东方市',
'cp': [
108.8498,
19.0414
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ºŸx‹JYZQ”IŠYXLl@dR\\WZEn]bA\\S~F`KXaDeTiNO^EEKWEDQXITBXaWaDQMUJOIaTWf@NJV@dSxGZ‰Fu_@WMKAUˆ}AQ@MwG_[GOAmMMg@GKP]IUcaFKG[JSCoLGMqGEOYIMSWMSBucIeYA_HUKGFBLOFGPQBcMOF_@KO©UAtERadwZQ\\@ÊJÒgòUĪRlR°KĮVŽLJ'],
'encodeOffsets': [[
111208,
19833
]]
}
},
{
'type': 'Feature',
'id': '4601',
'properties': {
'name': '海口市',
'cp': [
110.3893,
19.8516
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ńZƂtĢ¬æßFuz¹j_Fi†[AOVOFME_RBb]XCAKQKRSBQWSPY\\HbUFSWSPoIOcCOHIPkYCQ]GdGGIFQYgSOAQLK`MFUIGa@aQ\\GGUFcHKNMh@\\OYKAigsCgLSF]GOQO]@GM]HyKSHKPW@Pxi@EMINYREXWRQ@MQcFGWIAwXGRH\\yDI`KJIdOCGRNPNtd\\UTMbQYi@]JeYOWaL[EcICMUJqWGDNZEXGJWFEXNbZRELFV]XQbAZFrYVUBCLNFCHmJaMIDDHXHEhQNXZ_TARFHVB@DTQIRR@YHAJVnAbKFUEMLd\\c^ÍÞ'],
'encodeOffsets': [[
112711,
20572
]]
}
},
{
'type': 'Feature',
'id': '469006',
'properties': {
'name': '万宁市',
'cp': [
110.3137,
18.8388
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@^J@ZTVbET^JBGLFPTHld]`FLQhcVanx\\\\ZbLHTGj\\FLP~fIZRZPVTQFSVAFJE^NDLEE[~LjsxVTG\\NZZNGlLRRGLJTV@hPZANN^@T\\NEPPbDZXO`d^HSvcJDIV\\XZAJUFCLNP@PQ¤@[ïKLÑIÏ]ÇE±I{uƒ­YśUćFcYUmsVeBSVgB[RO@aYYPO^]@UVaNeDShMLG\\EfFVE\\F`'],
'encodeOffsets': [[
112657,
19182
]]
}
},
{
'type': 'Feature',
'id': '469027',
'properties': {
'name': '澄迈县',
'cp': [
109.9937,
19.7314
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@T\\GJCXJH@fJDDPNCNJENN^NLHBNSx@DDYbBLLDRbjZTj@`XXTlG^Xr@PJLW\\WLTlWR@HDJTD@X_PO@STMDNTMVV@NLDM`M\\XM\\JNBH[PYZ‡úYzŸ`Ċ\\ÎÝd]c[NKVFLEBaUmBIZGQ@JQSR@CUAEGBQ`SWYRMFgWGCGJCbNnIDGMEDKVAZUEqBYRa^WEUFKYQMaFWXEHIFWMYHCrXVIIiaK@aMCUYNSIISTwXALKH@XWXIEIJQCG[IEQDE_XSBaa[AIPW@]RS[FWS[CD]PEBYNGFSaSyJG]@ugEUDQlGHiBKHUIoNSKqHFaPMICK]UUHIPDJMuCA[SCPIDIOILGAEmU[POPBVSJDREBGS[QXWSGcT}]IO_X@TGHoHOLCX\\ELT@LYTD‚aFENF\\lj'],
'encodeOffsets': [[
112385,
19987
]]
}
},
{
'type': 'Feature',
'id': '469030',
'properties': {
'name': '白沙黎族自治县',
'cp': [
109.3703,
19.211
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@D\\RV]dTXELnHr]^@LETBBRTHPi^[@U`QTHDJ`MGSogDIPKdJ`WVNHCXHl_DJR@AH`FBVPUJLHKNTJOFFZON[ZEHFCJlMJ_ŒCn`CJVNGPLTNDFIdVTWEIPmRKMc_kDMWGGUTAtJLK~\\f{pqD[LAVXRCH{HC`eŒJ`}@W^U@I@_Ya[R[@MSC_aMO@aWFmMOM@‹haGGMEmaQ[@MESHaIQJQ……MckBIw[AOSKKAMPSDSLOAV_@@`KJRbKRDfMdHZERgAWVsDMTUHqOUr@VQXTT@Tƒfg‚L^NH\\@heTCZaESNObHPƒHeZF\\X^ElM^F^'],
'encodeOffsets': [[
111665,
19890
]]
}
},
{
'type': 'Feature',
'id': '469002',
'properties': {
'name': '琼海市',
'cp': [
110.4208,
19.224
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@TP\\pATHTGlZDJGAQjE\\Rb@jVBDCN`JZ[NCNHNXbULPrP\\KNbMTLjJJRFP`“pNLZz^FLRHjVPZ@hxVKbHBHMNNJFRlLzGPnNHhIrHHADcPWdUAmEMVQDSKYHY\\EhBN^HpXGNDBNNBnIß‹Å_g{³So]ã@ORO@KMEDIVYB[WJUICudGTc]P_YWaCOOMFS[]@MMYBgOU@ISHKQQkKMHYY[MSHwUit}KF\\KFMCF]EIUBETSROUKTLT[NKTWREfJbCHBZKTFTKh'],
'encodeOffsets': [[
112763,
19595
]]
}
},
{
'type': 'Feature',
'id': '469031',
'properties': {
'name': '昌江黎族自治县',
'cp': [
109.0407,
19.2137
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@`ZĤd–`òüˆ˜ “BSPGP@VSbQ`‡@]HC~T^SE]N]FkW]E[fY„GGOPaTMbFDYfS@g[MGK]h„e@SSSRW@UVqrPVGNStCXUhBFQGYNcCeLQQaLI@_`@EUwcEaCUaMc@SK]Du`MSkKI‡~BVNL@X`‚EvYŠwHcTU@MIe@SXJbIPNVCRXbWbSAWJCRXFFL]FMPSjCfWb_L}E[TaBm^YF[XcQk@WK‰Z“JYRIZwŒ¹ '],
'encodeOffsets': [[
111208,
19833
]]
}
},
{
'type': 'Feature',
'id': '469028',
'properties': {
'name': '临高县',
'cp': [
109.6957,
19.8063
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@jD`hNd\\^dZädĒH´Op@ˆùZY\\OAGIMN[[W_NCNMKU@NUMSNCTSP@`O@WSCCI@GXQSkXKX[IK@OWqH]SkWW@_SiiYQaKCAKZaCCw@MTGAMKM]FMMIMDSM_HGHRPKCBGSJJIYH[QOJCHMBDGQJECMTDQKFGTCEGTF`NFEDMFaGSNwIiTGhYJD\\KZODC^@FTKND`XBHKJNKFBNhG^FJMPcHEZF\\QPRjQTAdgNOPgQaRSê'],
'encodeOffsets': [[
112122,
20431
]]
}
},
{
'type': 'Feature',
'id': '469034',
'properties': {
'name': '陵水黎族自治县',
'cp': [
109.9924,
18.5415
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@R]NC`YL]FoN@V[vBXVFNL@TRZalnVFVP`DlOZkVSXEE_F[EUFeH[NKTgfCbMVU^@P]ZObZP@\\QhATUfAtUasñiāEoI]eYǯ@aKmaeƒWuCºKÜKpnbHbYfUDSNCPJTRAHJTDJSfDNLHXC``VBNGTYCQDIXMDSP@xLNEFRNXBIpVNLXah@RgF@`qOML@LJNSPLbaHAh@Jdj'],
'encodeOffsets': [[
112409,
19261
]]
}
},
{
'type': 'Feature',
'id': '469026',
'properties': {
'name': '屯昌县',
'cp': [
110.0377,
19.362
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@\\OnVBFKHPJCJOJTDB\\vDINOCGJVVL^JDONEbrGTLpMVJLGjAHGRkVChF@vH^zIbTETMHAZOFC^\\DXT\\EffAP\\PdAV@UIYfS|S@YPICMeM@sC[_A]VQEwyHSMuNcAUlQJMVGMS@mVBZPFO\\CSFQK[LqDMACiUa@[QiFBRIHYCHkGSBS[oSOqB‡IE^QHCRWHIXsHU\\UC}JEjMNAN_ZƒAIhSEYfWDQGaPMTL’ERZTJb``NHV@'],
'encodeOffsets': [[
112513,
19852
]]
}
},
{
'type': 'Feature',
'id': '469025',
'properties': {
'name': '定安县',
'cp': [
110.3384,
19.4698
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@JjDNdJ\\FbKPXfZ^Ij@RZNaVSc[MsMOHQPDJcLIJ_zCG[HQxWJBHXdENRR@XQFWZQQGOFSWUCI[WCJuRGLXNMPLhCl[Ta@SqGgJMGOmyHkKEQMINMAGaGULgwY@UOGiKQ]EYyMK”oO_QEIIKiNSMa[LqOKOaVMWMGMDY\\_IKrL\\ERT[DEPYOUA@nNTUHINkRBVMdNvGTxzRF^U`BD\\@tfNDNOJ@Z{TeTJZ@VU€cB[OBOeeQT@^OXBJb\\AbWTF`RCJFH\\RDJIJFXW@WLGBKxWTSJJMTVZND@bbL'],
'encodeOffsets': [[
112903,
20139
]]
}
},
{
'type': 'Feature',
'id': '469035',
'properties': {
'name': '保亭黎族苗族自治县',
'cp': [
109.6284,
18.6108
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@FJp@fxpQ\\ApN\\GNPNBM`HLMrXLXj\\PEHnI@WUCEM\\GTc\\GZYHTPBHRCPTd€H\\K\\@HXi–BJILJJAVNTOZJNtFPC`YxDPWci@IBgbGKaTOIM@KNKrP@_hE@QbgKWUMJoWAQMFEKM@wTONCJWRCZDHSAM_UD_GWMKeCITSCGIQBGXUHQoMEEGWDQIG]FMQBMaFGueFeSQDUSDSKOCSFMLƒUaPWM_PaEGFETMX]RCRR@HXKN@JNnXXEŒSPaDI\\£FkXWIAX]xB\\GN'],
'encodeOffsets': [[
112031,
19071
]]
}
},
{
'type': 'Feature',
'id': '469001',
'properties': {
'name': '五指山市',
'cp': [
109.5282,
18.8299
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@TCNOLBTLBPx\\AJdl†NR†RIbJTGNF\\@RcIYbmHoLQdKN_fCJYbDRRXKZFVEZVXBXIJBXMdESW[CUYHUVQFQAqsEIMPYMSBUIIJKAIj•GW[@[LGScDOGQOAGSYZ[HSd[HFNVD@XmJFG[OWiWKNqGKN_MAMO[HoM[BoRewo@Y^HpITSFENc`MVCdHNIVCLJFI`NFIŒP`@VZbaf[FFJG`O\\WRFA@PVPFPPH'],
'encodeOffsets': [[
111973,
19401
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/hei_long_jiang_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '2311',
'properties': {
'name': '黑河市',
'cp': [
127.1448,
49.2957
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VÈÞ@Žkx˜nXŽ°VÈa°V@kôw„b‚š„JVškXlVUx„„@ŽlL@xkVV°ƒ„VbxlVUnVxk@ƒ„ƒKkŽVb„Il„@°kVl„@„™lÆnkll@@V„VXƒŽš@V„²bUlƒVlV„U„VÇn@nkJšŽlkVbœ@›x²V@n°VUnlKU„n`@n°bWLnVUblVUVVbknV`°kkŽl@@V°@nz„J@XšxlWXb°n@bƒĠlbXb™bVbƒJ@Všb„a@„„@lbUbšVmnœ@lšVmnIW‚œ@WbÞ@„n@x°@š„ĢaƐéϚnœ„‚lČ¯ĠŻÈwm@ôçU™mm£Xy°UV™›@wÈ£Ǫ¯kõÝçUњ™Uķ‚ƒĢkVфÆšÞU°nŎ¥ČUĊx°m°¦żVƐœx°ƒÇ£@y„UônރÆ@Èĉ°Kô¦šW„kWU—bÇ»@™ÈĕWÇÈ£ŤU@›n£ÆUUKVamanwŃmÝJ¯k@JƒIkaVaUUÇbkaÆÑkWmÝUۙ™Ý@™ƒwnU±ƒ@kkV¯KUkƒJƒ¼U¦ƒšÅ@ówķaķůV¥Uaó@Åwmƒƒ_kVƒwĉ‚ĉmmn_V»™a@U™ƒVwķóƒ‚U¦LǫéóXÇmōLǓÇķxÝkƒƒĉ™kmakbUĶ°@W¼„@bƒšÈÆ@Ė™L„l@„°J¯„mkl¯L݃±L—amJ@¼ƒ„™VƧUó„™UX˜ċb¯ńVbkÆÝI@llx„k°V²šV@Uxގ˜L@b„@b™`ƒšÇzkókݤ@ğ¯Wƒ™LĉǙLmmnċVkbUaƒL@Ž¯„‚bU°ğL݂Ý@'],
'encodeOffsets': [[
127744,
50102
]]
}
},
{
'type': 'Feature',
'id': '2327',
'properties': {
'name': '大兴安岭地区',
'cp': [
124.1016,
52.2345
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@k›ƒϙmƏêġb™ƒ¯@@wƒmÝ@XV@IlŽl@bUxl¯VlV™bV@ULVlUV™_kx™VVV™ÈÝJ@„¯šU„™lm¯x@xóÒĉ¼m„¯Wƒxţ@Uz¯ƒWwnUwťƒ@knƒWƒ£óVƒUUwğyó¦WI—Vmm™I@±kwÇ@@bƒ@ĉ¼ó@¯wó@¯aó¼›KՃaUwmWUwÅI@aƒKó@Ua™LƒaƒVÅwō¼UUÝl±I—¤VxÇx@zkJmnn‚mbnz™xlŽƒl¯ČkJl™°@„kb„Žmx@x™@kêmVnŽWxôXšxU°„bWLóJnÇWĵ„V¦™ŽƒUUb™b™ÆġK™šk¯™VU±aXmċÑUwĉKġ„k„™ŽVxk„ÇKkbƒIƒ‚ÛXWl¯bƒŽ™X¯K™bĊš„„ÞVƚnŽĸ²lxUŽ°n°òÈb‚¦—xVbƒŽƒ@¯„Vx@¯VķÞČlĊ°KĸŽȘI°¤ČIôŽò»ƨnȰKǬ¦ôWŎÈƨwlƒnKVXmbX`lbšwkVW‚XXŽ„L°a„ƾaĊ£nƒ°@°¥ŎzÞ¥‚»œalwôkƒJ„a@ĶK„£„bU°ĊxźVÈUĠ¥ƨ™VI@XU°x°Ln¥šw°UmwXm݁V¥ĢŽ°@nU@mÆ£š¯lKœšÜw@aÅU‚¥UaÝIkmV²‚nn@Ķ»@Uk¥VKÞ@ÞÛ@ƒkVmĢa@_ƒJómƒǖ¯Æw—óÇa@alƒUwšwĢřšk@wÆWXUWXƒWa™m@_ƒ»ÇéXaĸwVa@ÝKkUWkX‚kšKXxƒn@lĊV@¯m¯nřÆwš¥'],
'encodeOffsets': [[
130084,
52206
]]
}
},
{
'type': 'Feature',
'id': '2301',
'properties': {
'name': '哈尔滨市',
'cp': [
127.9688,
45.368
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°`„_šJlUšŽ@„„@V¦°JUšŽnLôlnŤ@@šÈaUÒVbkbl¤ƒzk°ÇVÛô°IlVUVôU„xÆU„Ž@bźĀ„º@¦šb@l²‚UVlœ@°ÒĠxšnXxÆVô¼Þ@Üx²KލlƒVÑ°UȰôlwô@²ƒĸ°„lanV@„šVŎUll@bÈnÜm„wĢ@la@ÝÞb°UXb˜lŎ²ÆškšV‚I@ŽnJnĠŽ°knƒÜbĢwna@a˜kÞKƒĀ„a‚™œ‚‚IVbU¥wĠwkô˜xnLƒċVçkaUƒ±IUmnġW„°WôĉšalƒÞÅĵ¯@W¹XÝaƒb¯a±X¯ºLƒaVƒmkLóƒƒbkaƒVUKVkkKV_@aÝykk±L@ƒÅU@yV_™aU¥ówÇx™@UkVƒn@lƒkÅlwšWVwUkĉmkklW@šašbVwnWWƒ—wWL™™@Ušƒ™UƒÇLšÇmƒ„@wƒJĉƒL¥@ƒÝ_@a¯y„UWw¯ƒ¯Uġx¯aÝXVmaU£ó±›¯nwƒa¯óÅVƒXman™„Uƒ›lUXkWa@mkI„›ğaƒm™IklÇU™„kĊƒƒzkKƒš„lU„ōĬlš™„@ŽnX°@llUxŹ²mKĉVWwk@UbUK@bmVmI—ƒVmwaWxXlWȁšmºšÞÆbUxV@ĵńWÆĉLkWUbƒaWzkbĉ`U„±LklōwUVÝ£™UW`Uwk@mk¯VkaõVX@WbL™K@XƧºWzxƒK@lmX@bkVVÆk¼Vbk@Vn'],
'encodeOffsets': [[
128712,
46604
]]
}
},
{
'type': 'Feature',
'id': '2302',
'properties': {
'name': '齐齐哈尔市',
'cp': [
124.541,
47.5818
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Þ@ށĠKV¯a°ƒ@„KVblaČU‚mnnšKĊȚKX„°ŽĠ@Þ£ôllÈy„™š_@a‚ƒ@a—KݍVwU@±™¯Uƒlkw@kÞJlÅUa°ŃČaW—šVôƒƨVšU„ƒ@»nI˜b²Kބ°Klkn°ƒ¯I@ƒƒkšK@ĕÇń™@aƒX»¯@VĵlaÿVamI@aÅÝउýƒĊȗJƒôȁÅkmƑۃ@kxġ@@l™aVk¯»ƒīŹaƒkƒ¥Å¯™JUaWU@@w™aƒ»„KUkÆkUm„UmwÛ±±UUbUŽUXƒwWwÆÝk™lkUanaWwnKl™kal¯ka™ƽa›kÅx™a¯@™amb¯V™lÇwÛĀ™V@x™šmêVƜVV‚aôV„wÈx@šˌx„¦VÞ¯VšlmX@‚ƒL@¯Ua¯LmV@„„°X„ċK™V™ƒ@UƒÈ@‚¥@w—ƒġIU™km¥Źwƒ¦¯lmn@°kxVV@¦óam„n¦l@nx™lĉVóšmx™n™ÒĉĀĊ¼„þ„šǔêÞ°ˌĠÞÒ°ĀɲĀƨźˤȤƨĊ°w@£nymwnkUUV¥ôÑVmkÆmUUVa™mVIkmô„lxkXÞþƒbl„ƒl@kV„ƆƒV„xV@š¼VÒ@šŽUŽšnnނJ'],
'encodeOffsets': [[
127744,
50102
]]
}
},
{
'type': 'Feature',
'id': '2310',
'properties': {
'name': '牡丹江市',
'cp': [
129.7815,
44.7089
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@U`lLUlVL„Ulb„aô„lKnŽU„„b‚K°¹²W°b„aÞb˜knyUlUkamř²L@m°@lšmš²n`ôÅlK„x„ÜKnxV@„l@œƒ›ÅXyW_k@™wm™ŹĕmƒX™»‚ƒÛ™l°ƒôšÈ„»š—ô˜ô_WW@Uœal»šwU@@wšUVƒš@VƒXI@w‚Ģ͑ÞȻ›aU_@mUkly@¯óV»XmWUXUWmnm¥nUUaWLk»Æ²IÇa™wÅaÝ°¯nUa±a™ƒ™@¦õÆğ„@„™@Åb›xU܁nÇłlb¯¦„ôó»mƒ—@±ƒUk@Wwƒa¯xU„V°ƒxXbǎŁUV™™ƒK@¹ƒKUaȯ@ōݙXƒal™ƒlÛkalÇUǫÇńÇakbÝƆ¯nlš¯Ž@¼™VUx@x¯W¼™Æ¯šmĖ„Ĭ¯ČƒVk‚ķÅmxœ°ô²V¤‚bUnÞW°bĢw°V°„XxƒV°z@bÞ`@„‚¦„KĊŽ„I@xƒŽn„™ÈÈK‚„šV™„@VššXK˜xX„mXUx™a™b@‚kXllĊnVlUx™XkxlÆk„m@U„Vlš@ÈwôxV¦šbU`@zÆV@„²KllÞz@b'],
'encodeOffsets': [[
132672,
46936
]]
}
},
{
'type': 'Feature',
'id': '2312',
'properties': {
'name': '绥化市',
'cp': [
126.7163,
46.8018
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ऊþÆÞ@bnJUb‚ĀnblŽĊš„„ÞlĸwǔÈŎKÈnôWǬê‚KV¥„ĸôUxš„@VšbU¼m`nnĊŽĊ„xlUšmkaVÿšLšwš@°»UmbKmݙUšwUmVknKUUl¯ƒKU™ƒUȃ‚™nK@ĠkX±lX„°„L@¯¥@wV_m›ĵ¯Ww™L¯ƒUkōƒÇVU™l›w—V󁱃¯aƒVka°wVk°mÞ¯Ŧřƙl™²™Ŏk™U@ƒmUkb¯ƒķŽ±„ó@kxȯó¯VUÒk„ÝŽ±LÛwÝ@ó»ÅUWw™mğw¯Ñ›@UkV±@k™a@¥ƒ¹Źÿ@aƒÅVƒwóVVUkU¯JÜóÈUl¯„yk£laUaVÑÇb@™ţ@kmómK™V¯IU¥ƒ@@ƒ™kV™Iƒ`@ô™¼„blU„lƒ™bÈb@xÇKkĢɳaÅɆō@ƒŽVƒK@z™@@¥ÆKnÜ@@aۏUw›wnU‚ķ@ƒ_ƒV°Ž@„klVššnULVVÞbVl@°™@nx™n°LŚÆlV„ȃmU²@VmĠLƒx„n¯xkWƒzšJ‚wnLmbXbW°šÆ‚™²™@™Žšx@JVx„L‚Ā²Æ°I¯º‚È@ÒnÈ'],
'encodeOffsets': [[
128352,
48421
]]
}
},
{
'type': 'Feature',
'id': '2307',
'properties': {
'name': '伊春市',
'cp': [
129.1992,
47.9608
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƒKƒ¯kWW²ğl@ŽmLšÇ„„VVš„Lk°VVmLUlVn™xšVnނLnaVŽ¯¼™@™x™KUĀlb™n„`n„Æxô@VbU¦ĸŰĸbôxÆ@„™V¥„»„IVl°LUŽll@²„mV„x@ššÞܚÞVnŽlXÅÒlbÈaVVUblb„J@I°lÞIn‚Æ„mxnbUbVLÅVm¤@œţVǤXÈÇĖ@šÈ¼˜aXVÜaXbWŽnzŎašř„KôbšUlw@¯naÆKnUU¯Üa@mkkVUĊm„™żÝ‚ǖŽ‚K„™°L²lÆI@ƒ¯¥ĉƛVaÞk@ÝVaĠlnUVwƒœómaƒ@™wĉ@™a™VƒxamX@aƒ@UaÅLƒaVWƒ_nWm£nWm_ÅV¯ƒm@m„󤁚ݦƒ¯ÅalmX£ƒ™VWUŚw™mÇ@@IV™„WUw@ašI@„k@wŎ»Wƒ„ƒ™ÅVaœK›Ika@¥lUkUlwÅwVyÈwWU@a¯U°m—Ç@UçƒaVa¯mV»ÅwÝUlƒUk™V@k„mUk‚X£šw°@@ǃaÝIƒƒam™Ûam„¯lğmmI@J™U™l±ÅōŽ—kWa¯VÝa@Þkbġ@ƒxÛnÇm@akkōVōl±škšÅšťŚÝ°¯nUl¯xlb„U°b²„ô‚˜Uœxšk‚VÈUŎ„Vl°„šKXxĶ°nœU`@x°¦@'],
'encodeOffsets': [[
131637,
48556
]]
}
},
{
'type': 'Feature',
'id': '2308',
'properties': {
'name': '佳木斯市',
'cp': [
133.0005,
47.5763
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nš„b‚„ÞJ„b@ȯ@™xW¤Vlƒn@lšUVlk„ÞVÆxU¼°nUb„bVèÈ@˜ŽnIn‚@šĢmlUw°™żƒ‚VUn@lnL@VôbšwĊ‚lœ„JķĸĢl„wôwƨxVVUƒŦšxšLź™Èš°`nnĠwŎJސĶwôJ„@¤Xn܄ĸlšn°¼È°lŽ„„Uš‚b„xš@„l@ÞÞÈm°„lôwšL°¼ĸ‚°Þ²nĠ@ôwÞ`ŤI„V„ÒĠU„„@„VJĸbƄ²@°ŽĊKšœ„JĶaĢȰ@ô¥°nš¤‚bČUš@Vx„mUw@a݁ţƒÇ™ķƒ@ĕķīU¯²@ÆmVÑô¯X¥ċç@™ĉ»U¥ÝţKWVÅkUVÝŎUmǍÝx¯aķxÛUóL¯a±óōb¯™ƒÑŃVÿƒ_Åķ„a@UƒK@wm@Van@UmmLVa—@VImmXUWƒÝUřƒKUwÝUUƒkVƒk@l¯X›‚Å_ƒJ¯k™Jm„ÅLƒa@¥U@¯Vƒz¯@ƒ`@¼šmxƥšŏKÛk@±laÛ@@Xm@™ƒ@xƽ@WŎnšˣĕÅ@@aÅ@@nÝbǏ¯@ƒ_U›kUWƒkb™wÝU@ç„Wlw@anIƒ¯lyœX°m°VšašÛšm@„mVwÞK°ƒšXlaXmm_ƒ@UƒkwÝK@ƒVI™ƒXmV»ƒI@aƒ¯ğW™bġaU_¯JU¯ġŽƒ„ĉ„k„ō`±nÝÆk„™bóĊ¯Xƒ‚ĢX‚mVn²JV„lbUè„ČmK—wlóğx‚xV¦UaJ›šƒbƑÿÝL—l@bmbġx'],
'encodeOffsets': [[
132615,
47740
]]
}
},
{
'type': 'Feature',
'id': '2303',
'properties': {
'name': '鸡西市',
'cp': [
132.7917,
45.7361
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚LšKVVnkšbVšÈb‚²U°VnklVlaÈL@anU°ÜmXV`œnôLƒèšxlŽšLX„˜L²ašVVmÈX@ķ˜lnU„Èl`ȹš@ŤŽ°U@x„KnnV„mlnnUl‚lVnnaŎwlVÞ҄@n¦šLVŽ°lšwVk„Lšaގl„n҄š@xmLÞ¤Wnœ¼‚WÈLVVUxlÈô„„WVaU_VKšKXUÆbn™‚nôK„bÞw°bÆWXamVwœK˜™Uw¯WUk„UlJUwVUa™@@kmyzm›ĉw@kVwškƒW¯ÅKU_Vmƒƒ™xU@aW@@kK@w„a@Kƒ@@kVUƒaky°_Vm™kna¯K@™ƒL™wġk@@IÇóX™ƒwVakmV@mwXUWanƒlĉ@ǙUw™KƒƒóšܛNJۄm°@›w—Å@ƒ±b¯Wƒ¹„WVwŹĕ¯kVmōb¯w@aƒwmV™UUb™V™IkaVwķ™xk¼›b@VXXó`󗙘ƒ¼Çó™¯„kŽÜš„š¼WŽn„źĖnššxl@X`WzœÆ'],
'encodeOffsets': [[
133921,
46716
]]
}
},
{
'type': 'Feature',
'id': '2305',
'properties': {
'name': '双鸭山市',
'cp': [
133.5938,
46.7523
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@™UƒƒUwó™mÑÞÑUÝÝUkmmŃyV¯ī„¥ƒUÿĉ¯mÇkaWbÅX¯aÝxƒaóLmmšÅaWV™LULV`UbƒXóƒkÇVwUUÇKX›»XmÝ£nK@wƒ™mÑkƒÝ™bƒKUl™x¯kU™Km¥ƒ@ÝÑkUōxmbUmkVkmmnkUƒmmƒL@w¯Vţ™@Ǻk_ƒÇmV—k@ĸVx‚VÈ°lLkllšUbōwƒnVW¼nlUx¯XmWUnÝ@™xÝUó¼¯J@LVbkJWnkb™W¯„ÝLUxƒn@‚™n™Ü™b¯U¯n›Wkz„°mJ@bkxƒX@èÞVšxlaX„lVVœ„`°@ȐÞa@mÆ@@bÆ@ˤĖm™Xōƾ@@wš„n@@WÜ@kb@²ÜlŐLƦ™nw™@»„_°@„y°UV@@¦„bÆKnƒšI°l„IÆ`œ°W@k„llUV„ÞVVx„LƚÞVX„WVnnUJ˜@UbnKVnm@Ubn@@x„L@VƒbÆĸ„`UĀƄ„Ò°šŎa²ô°bôKÜVĸw°bÞwȎVnÞōVUÆlXU'],
'encodeOffsets': [[
137577,
48578
]]
}
},
{
'type': 'Feature',
'id': '2306',
'properties': {
'name': '大庆市',
'cp': [
124.7717,
46.4282
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@mÇ@сǰ¹¯J±ÅÿƒKUw‚I@™wšš@š±Å‚™X¯WanamKx™I„ylX°wƒm„wğKUn±@nVDŽUƒÅkƙ¯Kšmmwš@@¯UkÝaUUVK™mU™lk@ƒ¯„U„`ĸ@V‚mœxVxܐ@bÛ@m‚ÅL@¦š@@y„L‚U„Ŏ@ÆɅɴblġÈL@wÇaša„ƒkkVƒaš»@ó¯_ÝJ™wÇaÅXny›U¯¥Å„@w™bÝa™Lmm@@ƒVUŽlbğVmš™¯Xƒm_ƒ`¯_Ux™m™L™a¯b@mƒaó¦Çk™¤V„@bóJknVx™VXx±aƒLUbVxkLVlLWlƒ@nX@VÅbWlÈnƒx„bWšÅbmŽ@xœbml°b™„XbW„XVmnn`ƒLmšnbmb@šk@mwU@@š¯Jlbk°lbkšmLXxmbVbkllšÅނxX„xVWVVa²VܲnxƒVVnÅlVlƒL„¼šb@xV@XŽVbšIÆ°„¦„lźb„Ĭ°¼Ulšb@kĢ@lw„@ƒÜlnȂƄóȘI„ĉ'],
'encodeOffsets': [[
128352,
48421
]]
}
},
{
'type': 'Feature',
'id': '2304',
'properties': {
'name': '鹤岗市',
'cp': [
130.4407,
47.7081
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Þ¥‚™ô£nƒn@°„ÆUn`mXn¤mX„`UX„bÆKVb„@@bnW‚b„wšUšbĊ@šx„@nbšWVmƒ_mm@ó»Um„ŘWXkĠ»²¯‚¯nķšwŎ@ĊšŎK°bĸUnјKȦĠÈbÆknJššÆUĢV°IšŽšVƾƒwaV™ƒƒkÇ¯¯»™mķkۃWm@£ƒóIĵxݏōIğxmm¯_ǙŹš™K™wťŽ„UVUŽƧwóxƒxġkĸķƒIk›ĉ™xóa@UmK@kVmUŻ„¯šVxkŽġn™‚@mmJ¯n°V@bXVÇxUzÆxkxlVkV@¦lbœJ›LUbšÆƒ„X„ō¼@xƒl@™J@bVxƒXUš@JÈ@šn™xVÆUXš‚„W¤knÆb„°'],
'encodeOffsets': [[
132998,
49478
]]
}
},
{
'type': 'Feature',
'id': '2309',
'properties': {
'name': '七台河市',
'cp': [
131.2756,
45.9558
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²mŎ_lƒĊƒ„ƒĢV°°IV`ĢbšaĠX„°@b„JU¼Wnš„UJ@„ÞLlxV„„@n`lIUa@K°Iô»ÞVšwÞ@VmnX°WVwmkX»‚U„mŎxVak™lkkKǯUUwÇWUn™U±b—KWƒ™Kk™w„çóK›mU_nW¯ÛmV@bÇKkbkUml¯U±VÇaU™™amlUU™LK›„k@ƒU@mwÛLƒŽƒwkLóÆm_™±™nkŽ¯@@n±KnŚlbkVV‚mz—lWXº@Ķ°'],
'encodeOffsets': [[
133369,
47228
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/he_bei_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '1308',
'properties': {
'name': '承德市',
'cp': [
117.5757,
41.4075
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lLnlmxn„„IVVlUnb@VVxXJWL@LގVnnV„J˜_@wkmšK„b‚x„wXk˜WXXšKlb²K@nVVVb„L@WlU²„lKVnUJVz@VVb@lżmVUVnbôaVX@°Ub@lWbXš@b@bVb°x„@VxÈLVlšaÆ@Þb²k°@lVUŽ@Xn@VW‚LXb@¤VXšKVVVLnm°_ƨ¤@aUIVa„alkX›°k„™V@„alwUVy„U@k󙰃na°UVUUmUÆw@mkLVUƒWVI„WšLnn@xlVnK„myU@ƒU°UXaV@U¥ƒU@Uƙ@aVUkWU¯ƒaU@WLUV@bkbmKULmKkUVUkmVIUwlWV²™Uml°U@W„LUwVm@UUK@_ƒKUUÜaXw@ƒVKUU@mVIUUlmnIVVVbÈVlKnbVKš@nI˜@nVnwVLVK„K„„˜Vnb@aUIVW@In™°@lVnIš@lWĢ@°UVL@b„@VyUUƒa@w@WUnU@Wǯ™K@UkkJWaÛbmk@mVaÞU@amkWƒ@mXUKkÿƒ£@a„kl@Um°UXwla„al@nmlXnW°znW@aƒwV™@ƒakbĉ¥VmU@ƒIƒVƒUƒJkUmWU™KbmkUaƒKkUVU@KV@@klw—™WaU@kmƒXVènbmlUUƒKƒX¯JkbƒI@JmIUWU@ƒLml@XkJ@U™kƒK@aVKwWa—IWwƒmUƒ@mU@J@UaċU™aUUƒVkI±ƒk@UUƒ@UbVVm@UVKƒLƒlkIWaULUWƒXUJU„ƒ@WbUb@lkXUxm@@JVn@J@b„nƒb@Vkx@bšLU‚Æn„JšaVXnKVVmzX‚°V@_lJXxWXƒK¯bÅamUƒ@lUI›bñJ@LÇKkIÇ`kxWL@„ƒ@@bUVUb¯xWKk„Å„VlULW@ƒŽn¦Ul@I™lmUUUVm@kWƒnkKma¯XUKWmnwVwÝL„mŽ™VUbUVWb@Lnxm„xVŽmbXx›¦@„nb@`™„ƒVƒ@kbƒLU„mVUlkbVXkºmnm@@xk¦šbĢÜlš'],
'encodeOffsets': [[
118868,
42784
]]
}
},
{
'type': 'Feature',
'id': '1307',
'properties': {
'name': '张家口市',
'cp': [
115.1477,
40.8527
],
'childNum': 15
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@k™ġۙal¥@wn@nml¹UWlaVknUVƒ„Kla„@„Ušƒ@_ma@ƒœ¥WwnaU‚wnƒmw@KXaVUVašUnmWUk°™lƒnUVUXWVw™IWVóKUI@WXƒxUU@mma@kUKWLkw@yk@ƒaVkUUċaUU@Wk@Unm@UVmLm±IUƒkJ™kWƒ@a„I@m@U„ƒVƒ„Ula„@VXVƒXmVwnkWKƒKU_k@m¥ƒmX_™JmnU@km@U@KmU™VƒU@U™@Umk@@LƒmW@Û£Wƒka@wk™@aƒI@mmk@mUa@UmUƒIƒwW@aWUƒbU@kbÇ@kwƒ@makVUk™U@aƒm@aU@mxkUƒbƒKUXUƒ±KXVWLUK@wkU@V™@WXUa@WbUxƒJIƒŽ@¦VèVVX@±ê¯KUIƒ`¯UULVx@Vƒ@UKƒIƒVkLmVkKmš@nUJÝbkIUJVXšVVxVbU„VJ„Un™°bV„mlU°„XnK@Ul@lVÈVUXšx@W„@VXšV‚KÞb„n@VnbV„m`ƒUx™kW@UVkL™Km¼@lUnUJVnV„XV@Vm@@LV„klƒIkl@VƒWlŽULWKUL@mJ„@blbUVUlmzUJUxm@UUbċÜk@Ub@VšLVV„¦ôbVŽmšUKUkU@m„„@VlVn¼WbUJ¯@@„°šnIllÈl˜@nXšWlLœk‚J@bkxlxkxlXUlklJƒšXL@bW„n`@nƎXxlL@xl@Xb‚LœKlVlIXblVUbUJW@lX@VL@VVŽšXšJšw„n@WnL°K„bVbl@VI@K„@U@nmVmV@XUWI@aXm@™VUUkWmn@lmUUk@mUmK@UnwVĉ@ƒƒmU_V@XJôVVUšLVUn@šllUnJl_n@šml@XŽlLlw²LVJUL@VmbVblVXmVnlš@Ť¦„nn@܎@bšl„@@XV`„Unb@VlLVb²J‚Xn¥ÆÑ@¥Þ@'],
'encodeOffsets': [[
118868,
42784
]]
}
},
{
'type': 'Feature',
'id': '1306',
'properties': {
'name': '保定市',
'cp': [
115.0488,
39.0948
],
'childNum': 23
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VbXWš@@UlV@xVLXKWU²LV„VW„L„alVnwV@@b„n@bšVVllUnb„@lxÈ@laV@„aXV@b‚X„x„J‚nV@VVb@nnl@n„J@blšl@„ašƒU_VWUwVUškUm™Ukb±mVwœU@VIUW@UWk„@VU@ynL„m@IV@‚bnK„LVaVmnIlaXwV@@WVL°@@xnX„@V`V@VbUVVLVKnwnL@ll@@_V@VVnaÆ@œKVXÆ@nƒ@wƒKmU—™Wm@km@kÜKXU@ÑW±nIUwVƒ„Kla@I°wU±kškmm¯mƒ_ƒJnƒaƒwW@IVaUama@wƒUƒmU@mVw@aXk@mWa@£km@aƒ_kVmUnWW@¯bƒkUmk@ƒVÇm@@kUU™KUU™@UVUamVUaWIkb@xU@@amUkKƒVkam@@kVUkUWmKmUkLUb@xmJƒ™U@UImVÛVmnUwƒJƒU@VƒX@UWm@Ub°¦UšmxklmX@`ULU@@UW@@xkn¯@makV™UmxUb™°ƒlUšƒbUbƒnUJƒUUVƒa™LkbUU›JUU@mUUUƒJkaƒ@™xUIWJƒUnƒJ@V™zƒ@kb@`@bln@l™bƒŽ@X@š@š„@Xl‚bnbVb„@„„VJlInlšbVw@U„K„l@lbnan@Vb‚JôLn‚UzlV@lÈLVbVK@LVx—VWXX`WxXz‚bV`UXV¤nx@„bVlVnVlUL'],
'encodeOffsets': [[
117304,
40512
]]
}
},
{
'type': 'Feature',
'id': '1302',
'properties': {
'name': '唐山市',
'cp': [
118.4766,
39.6826
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„@VVl@²„lJ„UVVšbČVVb‚@@InV„@‚V„nXx˜JXb‚xUL@b„Lšl@VlI@Wnk„KV@VXnJ@I„Jla°I„W„LVVnkmaUç„WVkôaܯ„@nV°wnJlaV@VUnUUaW¯wXWWwna@£UaWKU¯ƒ¯@aVUkKUamUUƒn»‚an™„IVwUWlkš@„LlWVakU@K„_lƒšbÞU°@šy°n„@„KÈkWW™ţ¥ĉōƒkġWUw¯£¯ƒÇwţwƒ@kK@kƒ¥ÝwÅbǤېťV™lW°@ĸ™x@VVVULVLkl@V@Xƒ`Ub@Xm@UWbƒk@ÆVbnLWV@lnXUbl‚@X¯lmU™VkKWLkK@_UK@U@UmmUxmVXLWVULkU@`W@ULUK@XlJXzV@@xml@VU@UX@Kk@WbUK@Xn`ƒXmJnšmškxUVbUVlVVxUbV@nKlL„kVKÞbVKXI°KVšmVUIUKULVxVJVLkV@Vƒ@UbU@WUU@UbUK@b@nƒV@VkLmb@b'],
'encodeOffsets': [[
120398,
41159
]]
}
},
{
'type': 'Feature',
'id': '1309',
'properties': {
'name': '沧州市',
'cp': [
116.8286,
38.2104
],
'childNum': 15
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@ln@UȄŽl@Vn„l°aX@mXnVlU„`@bln@¤Xb@nWl@bUx@nnV‚„„V@xnbVbUb@J‚X„x„b‚mXa@k„UVwlW„k„KôVm@w™kkK@kl»Èƒm™VKXkla°@XVV@VI@ml@@Vn@VX@V@J„@VxUzVVšš²blVk¦@šĠ@@»š@VK@VÈLlK@XnJ@alIUl„a„VVbš@„n@a„U@WUIV@mUn@mKXml@lL@LnWšb@XV@@a„VVb„V„@VV„IVWÈb˜IÈ»ƒǟlWšaVUÅUƒƒ™Um@kVU™WVkaUwmaóUƒJUU¯ÑU¥mk™¯UaƒKÅnÇyóXmWÛX¯aċbÛa›J—W™ÝU¯»ƒaóóUm@IƒšVVl@bƒLUJWLX@@xšXUxl¤V@V„nVUV„XVbVš@Ž„@@VVn„°VŽ@ţU¯VƒUmƒUWV@mUXƒaƒbUKUwUaÇKn„ƒVk¦Wb@VnLmV@bkV@n„xW`Å_UVƒV@bƒUklVX@VmlUƒx@VVL@x—VWVL@VW@UUm@'],
'encodeOffsets': [[
118485,
39280
]]
}
},
{
'type': 'Feature',
'id': '1301',
'properties': {
'name': '石家庄市',
'cp': [
114.4995,
38.1006
],
'childNum': 19
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@la„@šy@U„I‚m„VXIVJšw„@lb„IVVnV‚@VVœIVVlašK„bVU„VVI„mVa„aV™„kš¯VanwšVlUnb°@lm@wX@@VV@VK@_nWlknwV™¯¥Van@VX‚@„W@U„V„IVxnmÜUnUVJV@„šnI@wValKnV@k‚mU£na@mVk°K„LVa@UU@UƒmknWWkXU@aWW@@km@UaU@@klK@UkaWaUnamm@U„a¯wWU@UkƒL@ŽUn@x™V™lUXVJUb™LmU@aUWUkmKkLUUm@mW—XƒaƒmmkkWUm@@U¯JUUm™kU¯@mKĉxÝwÝ¥LƒUóŽmwkUUUWVkKm™kKmLX„lxVLVxXJ@nVJnz@VWL@`nX@šƒxƒ@kVUUmJmIXx„JV„ƒnUVƒ@UVV„@LUšƒ`UXVVƒ„ƒlXL@l@b@VmX@b™xn°™UƒbkKWLXlW@@bƒK„mKULmakLUlmb@šXb@xmXU`V„b@`lLx@nWVXL@‚°WlXnlb„KVK„XVb@˜X@l_lJ@V@XnŽ„I'],
'encodeOffsets': [[
116562,
39691
]]
}
},
{
'type': 'Feature',
'id': '1305',
'properties': {
'name': '邢台市',
'cp': [
114.8071,
37.2821
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nKlLnšlLXUVVlVnxô„V‚KÞ¦ÞxĊwnL°@lVnšVV°I@Vn@V‚lXnl„n„b˜WnXn@VVlKnLVlVX@bnVšKVaUIVWškšU@wVm@¯@U¥VmU_°lšK„k‚w@LX‚Va„U@wšUƒUUKlUóW@UVUœUlƒ°K„wlKU_na„KVnlKkkšWWa@IœJVa@IlJnU@„KVUUmVlaXUl@lm@kXWÝÑnkƒ™±™k@wğ›@@U@mKĉLmVJ@zmlnŽWLUÝJU_ƒ@@šmJkXUVlbklÝ@Ýa™b¯@¯±JÅwġaUU@ƒkU™@mVI±bUKƒL™WUXƒJkaƒLóKULWbUVkKmnk@@bmLUŽƒl@b@mnmJkUULƒaƒbnŽmn@lVV@¦n@„l@b‚znx@`Vz@b„xnV@xl„lbnKVx'],
'encodeOffsets': [[
116764,
38346
]]
}
},
{
'type': 'Feature',
'id': '1304',
'properties': {
'name': '邯郸市',
'cp': [
114.4775,
36.535
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„bVKlVnInm‚@@a„kVnK@al@nmlLVUXaVKôL„Klb„IVWšX„KVL²a‚JnUš@lV@„VVĢbÆx²I°Ž°@šaÞbÞ@lkkaVUlWnI@™„@V`ÞI‚VXKmnk@y‚InUĊKƒÇkUUamUUkƒƒ@aU@U™ƒk@WUwVkVJVkkw°a@„mK@UX@VV„LVW@wšwVa@¯Xm@@lUIWaU@UWkXWmU@UwmUkKmn@lkVƒ²™VƒaULUVmJUUUwƒLma@™UmkIUm›L—mVšmx@b™LUamKÅL@VmbkU¯KÝamzkJUb±Vkb™L@lU@WIkJƒzkKmKƒnUalWkkKW@@nkbk@WW¯XUVUJ@XlJ@Xƒ@XlWLkUƒ`VUnaWa„UV@UVIƒaUxUUmVƒK@I@W@DŽU@@U@bƒ‚@nmKXmx™@UxkVWUX„@`VLlL@`™zX‚Ýb@b‚„@VUVkIUJVz°KVlnLlKnL„xlLVVUVlXUJ@nn‚„I@mVUlbn@@Žm„@bV„nV'],
'encodeOffsets': [[
116528,
37885
]]
}
},
{
'type': 'Feature',
'id': '1303',
'properties': {
'name': '秦皇岛市',
'cp': [
119.2126,
40.0232
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lnV@Xb˜škx@lU@@LUVlV„LVbnl‚ašLXVVn‚l„I„V„U„JV@UnĊ¦la„bš@nJ°UmƒV@„wn@VU„JVI°bnWlXnWVLVK²b‚akk„lI@aUaVƒUwVUUalaVwnUVak¥šX@W‚kœLVÓm„mUK@_lWš@n_UK@alÅ@ğÅƑŃݍmƒ@їţÇlƒLƒ@¯m™z¯@ÝV™ak„ƒ`@LlVUbkXƒK™@klVXUxƒJmšbm¼V„nVVblLUV@b„°V°XLVb@¤mbXxWX°xXŽVbmVUVU@kbmI¯xmUƒ@Û°óbUl'],
'encodeOffsets': [[
121411,
41254
]]
}
},
{
'type': 'Feature',
'id': '1311',
'properties': {
'name': '衡水市',
'cp': [
115.8838,
37.7161
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„KVlV@X°xƒb@VnnmbVŽXblb@VkL@lV@Vbn@@l‚@XX@bWVXlmXnlV„V@@VUbƒK¯LUl@nmbV¤n@l‚LXnlVUV@ln@lb„UlLnV@bV@@wlaXJVbnUVbVUš@VVšLVVn@VVX@@U‚KXU˜U@wUK@U„wVnk@UUWlk„V@a„UVUÆ`X_ƒw@mlU@anUmK@UXal¥„UmƒÈLVbVxVL„a„bVW@nXU‚Vn„„V°UŤV@Uƒ¯Um@Uƒ@@U™UaƒWVUmUUƒU@k£Vw™W@wW@XKƒIUa@wU@@al@UK@_mKXKƒbUU@aVKmš@Xmƒƒ±@kbÇakLğVaUw@a@ƒmkUJƒk@ykw@£ƒWX@lknk@WVkbUŽVnUVƒL@‚mVkI@JUb›I@JXb™XllkLUmƒLmbV`kLƒx¯Lk„›VUV@VôXkVVL„V™V@xƒVUbW@Kxƒl™L¯kV`UnV¦°@'],
'encodeOffsets': [[
118024,
38549
]]
}
},
{
'type': 'Feature',
'id': '1310',
'properties': {
'name': '廊坊市',
'cp': [
116.521,
39.0509
],
'childNum': 9
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@la„Ušš@šUnL@VWbklWxnIVV„V@X„JlbUlšXVbn@@K„mV@@X°WVInJmn²@lmVbnL@amKV_kwlmX@@LVamaXaƒaVU@UnJVanLlUkaW@UaVakK@IlKUU@an@ln@alKUƒkIVa@a@klaUKUV@UkUV¯šKVƒV@kUmƒU@@a¯ImJUU@VV@UL@Uƒ@@WXUWa@Ukwm™@ƒX@@w@al@@aVIUmVUUUVWUknK@I@™l¥kU±a™™UUVyUwƒ@@I@UUWm@@Uk@@nUJU@WU¯@kbWlULnšÇ„k¼@llLšl@xUnóŽƒLƒlkXUxƒV@lWb„I„`°nnn™llŽV²¯x@JkbƒLU„VxmJX²@ÒWVÛL@lln@‚Xn˜šnV„L'],
['@@@kX@Valaa@KWI@UXW@WanaUIW@UaUKķŽk_W@UVUKUš@bƒ@UamxVXnJUbWVXLVbn@W°kb@U@Wó¼mIU¼k`V„@bVbl@„lX@lUôVlUœIV`lX„Vn@lUlVn@„l@UVaƒIUWl£Um™VWU@@UUKlUUUnƒVL@KšUnLVWUa›@™U']
],
'encodeOffsets': [
[[
119037,
40467
]],
[[
119970,
40776
]]
]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/he_nan_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '4113',
'properties': {
'name': '南阳市',
'cp': [
112.4011,
33.0359
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lKl@nVV@„bn„@VVnm‚nL‚LXx@š„‚VLlKVU„IXWÜ@șlbl@XUĊUlwnW„LÞw‚m@ÞUVmnVl@nX‚JXLm@VnnJla„I@VkxVb„@VŽln„J@knKVn„@°aVanal@XK°b„‚@š¯VJXIš„VK@al@nV„k‚@nK„a‚b„@XL@blVVKVLXK„@VaVI°mVaX@V_@a@yUkVw„VšIVašJ°™@anIlaV@nKnXÆm@wUUV±UUWUKnaWwXUWmŁ¯Vƒam@kakImƒUKƒ»lan@VXXa˜W@@UlUUa@a@UlwUƒV@Xal@@anIVaUK@V™XmwVmUmV„LXl‚@nalLnal@„šnKlkV@@UnJ‚UXnl@nVl¦V@@VnJ@nUVVVVIn@Va„JƗn@@K@m„kƒa@kmWVaUI@a@™k@@aUL@mmaVIUKUVƒ@@IU@mƒUmmL@K@UUUU@mW@@nU@ğ»mVmbk@klW@UXnV@LƒJm„™lUnUJ™UUUWƒƒ@UnkKƒxmLa@ƒ@@lUU™bmUVWk@@nkUmam@UakJU_ƒVm@ÅlÇLUVmVUwULƒKU@ƒk@UƒVUlU@@Uƒ@UaUUWaŎƒzJƒaWLkl™b@bmL@„kKƒabWŽUVƒ_@mV@b¯JmXUbUK™¤ÇLUU@b@JkLWmkUWIkJ@VmX@JUbVXU`¯VV¯blK@LXKl„UV@Um@@Uk@kxWŽkbƒL@KkbmL@‚UXmaU@@l@x@blX@xUJ@bULUlULÇ@@VšnU`W@@nÛ¼U@@VmKUkm@VVX@@xǚ@bUbVb@VX@@x‚LUb@lƒ¼XLlbUlVVU„Ub@n'],
'encodeOffsets': [[
113671,
34364
]]
}
},
{
'type': 'Feature',
'id': '4115',
'properties': {
'name': '信阳市',
'cp': [
114.8291,
32.0197
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VllInJlknJVkVU@mXlUÞ`VnV™VU@U@y„@nXlKV„nJVkXKWaXI‚b@yVk„VUkVwn@‚K@nW@k„KlUXVVUlbnUV`n@V_V@llX@@V„b@bV@@nlVUb¯‚WLnbmb@ŽnLnK˜b„U„bVWnLlaX@VVUX@Vln@`kL@ll@VXVJÈIVl@XÞJ°Una„LlylU@UXKlnn@lanLWWnbVI@KXKVL@LVWVL@UVKUIVWX@@XÆJ@In`@lJVI@a„WšÛnK@UlK@UU@VK„nlm„nXal„UllLUbVVšknJ@nV@Vm@a„l@@xnV„„lJVUU@™w@aƒk„@XW@_mWnUlŁUmVKV@VXwW»XƒWaUwnkWUkVUƒU@@@WlaUkkaƒIWVkm¯xmIUmƒLUVƒaUIó»m@mmwXk@a›mk¯¯l™@wƒmkLmmU@UbkUWJ@XUbƒJ@b@l@znÆmK@Xk@Ub@lm@ƒI@akmVKUUVUkU@U±JUbkƒ@IWmkxƒa@UUV™UWVkIUaW@UlLWn@VkJƒI@VkK@L@bmKƒkJmUUaUKWXk¼VxnJ@„V@@VULV¼ƒ@@UkaUlWL@U@W@IkKmL@KULUWULWKUXUJmIƒb—KƒŽƒ²UW™nWKUUkLUƒmUUam@UU™@ƒmUL@xkV@„VV@bmV@Vk@mwkUƒVUx@mbX‚ÇnVb„‚UL¯šWŽnUVLVb@xnlWnU@UVUVVUbVVlVkn@llVUXUWUXVbUJ@bmLUJnb@nVK@bl@@š@bVJUbnX@l„b'],
'encodeOffsets': [[
116551,
33385
]]
}
},
{
'type': 'Feature',
'id': '4103',
'properties': {
'name': '洛阳市',
'cp': [
112.0605,
34.3158
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VVUllLXl@LWn@J„@bƒKUVmnL@`VblLnbV@„b@JmL@LnV@VV@¯„VJVnXL˜@nm@aÞ@‚a„k@m„IšmVbXL‚ynLšk°@°aVJnUV@UVVXk@WJ@VXLlUnJVnnƒ°U@»°U„wl@šb„WmUXƒÆ@VLXU@m@U„a@I›mkb™a@naWW@_@WXUV@@U‚ƒ²@„K@I±U@¥kKWLóLlƒa@£Um@kWKXU@mlLXUVKUU±J¯_@`UL¯Wmk@Wa„kkƒlUnƒVUVaU@KUU@mmK@_ƒa@KX@VaUIm±™k„aVKVUkw™@kaƒƒW@kbkL±UUaƒK@UUKVak£ƒ@UmmL@lƒIkmUƒ@Ualw@UƒJkbmIUmn@WKImWk@mUUnÝV@ŽnÝxƒKmXkxĉVWVk@kaċšÛ@WXƒJUV@zŽm„VWnbUbVbšLlUnŽ‚lUÒnWV—VWnk@@Vm@kxm@Un™l@Ll@@V@šXnƒškJV„šV@nlVXx˜U@l„n@aš@VLnWĊ¦nxš@lbVKXLl@ރVLƒ„XJl@XXl`lIXVl@Xl‚XUVšK„wV@lanx„zUbVJ@VVX@b'],
'encodeOffsets': [[
114683,
35551
]]
}
},
{
'type': 'Feature',
'id': '4117',
'properties': {
'name': '驻马店市',
'cp': [
114.1589,
32.9041
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n@„b°UƂXnVlnLÜ@VLœm@n˜@na@J„„m@k„@lVšVxXX@„V`lLV„XVV@VVÞLVV°„²@lašbnxV@@b„Lšmlm„_VWnIWUna@lšLšbnV°ƒVL@KšV„LVUVaVLXK@mÆXna@wVm„a‚@Xw@KlL@a„@Va@wUkaWnIVƒla@Kn@Vn@VUl@nKVn„J@LnK@aVkVUUWƒ@VakUVanI‚²X‚W@UUU°KnUVLl@XaVK@ašU@KUI@W@_lm@KkLUKV_Uƒ@»@UVJ@XV@@mVL@K@U@Kk@VwUUm@kmWL@VkVkzƒKmb¯VÝI@WUkÇJUIUWk@@klK@_km@UVWUUW@kbmKUXƒaƒV—amLmK@namaXK°VakU@mU@@aƒa@UW@kkU@U`m@U_mVkaUVWUkVƒL@lmX@ŽLm@UxVlƒUUl@zaWJXbWLUlmIUƒkLmWƒ@@z@VUVUšUmÝ_kVWŽ@nUVUlmIklmIkJUkƒl@n@Lm@؃IUbm@UJUUVU@mmI@UU@k¥mUk@WmVmI@VU@klmLƒ™k@mbkKmb@WkƒKUŽVnUnnxšW@UVLUbmJ@bk@WbU@V„kx@V@bVbkV@V‚@‚—XWbUWm@kb„¼VLn„lJlb'],
'encodeOffsets': [[
115920,
33863
]]
}
},
{
'type': 'Feature',
'id': '4116',
'properties': {
'name': '周口市',
'cp': [
114.873,
33.6951
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lšnb@xlJ@UnLlKXUlJl_„KnV@xVL@bkbVVUè@šWb@„Ubmš„ŽkšVšmbX„VJnUl@„a°@@b„LVbƒlXx˜InmnLVw‚anJÆw²IlmnXVl°VVbÈaVb„@lkn@VWnLlUVmÞUUklƒkƒVkUaVaVaUw™K@kkaVWmw„_„‚l@nU„VVb@b„aV@VV@zXJl@@kl@šlœk°WVnÆbnbUšVJ„Iš@VKVm@k™K@_kK@a@aU@@wW@@k@aUW@IUWVUnLlUlVXKVwmk@W@—VWa„¥@k@lnƒUIÇKUaU@ƒUUVmIUV™Uk¥ƒVma@¯k@Wanwmƒ„@@n@@m@UIVƒkUVamUXWƒaV™U_™@ƒmUVUImW@aUIĉK@VmI™b@lU@@n™JƒkU™@KƒIUmmLk@UVm@UŽm@@LkbU„mJXlbV‚@xUbƒ@@bkK@LWx@ƒbUn@xmbÅW@nWLUKUbUVƒK™U@LUK¯„mU@šVV@xULUŽVL@bU`WšUz¯aUamKUaƒ@@xkX@x'],
'encodeOffsets': [[
116832,
34527
]]
}
},
{
'type': 'Feature',
'id': '4114',
'properties': {
'name': '商丘市',
'cp': [
115.741,
34.2828
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XVl@lLȃ„@VkV@V»UanƒWX@VaÆÇô@ÈaVX@xVJXUÞU‚aVLĸbXKl„V@šm°Vn_ny˜XX»mUk¥lK@a„_@yšInaVKVa°_@WXI@ƒ@K‚VnIlbnaV@„l„@‚a@_w@ƒlwUKm™Xa@UV@š»Vƒšw@kUKVUUm@w±VUXUKUwmJUUƒ@km@@±mXkmUI™@mm™KUwkbWakLWaUIkJmŽƒX@l@@VUX@JWbX@VbULWbƒlUVULknlV@bVJk„mb¯KknWmk@@nmVkx™@ƒVmU¯KUnUL™@ƒJUIV™maÅaUm¯X›l™kk@@lk@WI@yUUU@ƒb@aUaƒUmVk@ƒƒ`nxUXlb@lšLVxUbUbVbUll„k„VlÝVUnkVmKUXm@klƒ@ƒnUx@xnxƒn@`VX@V²x@V@b@„Wl@zU`VUVVb„L@Vƒb™W@bkXllkLWV@V„@VVÈwlVœ@@X˜K²Llb„WnnÆL@VnJWn'],
'encodeOffsets': [[
118024,
35680
]]
}
},
{
'type': 'Feature',
'id': '4112',
'properties': {
'name': '三门峡市',
'cp': [
110.8301,
34.3158
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@WKUmUI°ƒU@@UmU@KnK@IƒaU@makKUa@_‚KnmVU„L@a‚ƒ@IXm@KWkkKVkUU@aUW@UUIVaƒymwkbU@ƒx™LVUWWkk@WUkJk_WWk@WI„ƒUK݄k@WKULka™@mwĉ¥mXUK™@@bƒm@k—VWwkU@m™UUƒlI„™Wm@™@Uk@@KškVmn@lwn@@Ul@Xm˜UXUmVсkmkV™KUaVamaUXnƒ‚@ykLUKƒ@™WwKmKnUm@UmƒƒaU@mUk@kL@lƒxċxUnkVmnXxWb@`kzWJ@V—LmVUn™lmUL@lW@Ub@VšXUbš`VLUbUJ@nmnUlUUm@@bUJlnU„š‚U@lxkbƒ@@XƒJUnƒ@kb¯VVVmlXXlJlzn@VlkVW@bkK™bmškŽUbVb„lƒXVxšKÈnšwÞlĊKlšVnKlwX@lL@xlUnVn„@šl@lmX@ƄÈb°¼ÈwVJlx„_°xšašlšUÈxlUnbVxnL@lllšbm„n@nb‚@@V„L@V„@@„VLšJnIVVlKnV„_'],
'encodeOffsets': [[
114661,
35911
]]
}
},
{
'type': 'Feature',
'id': '4107',
'properties': {
'name': '新乡市',
'cp': [
114.2029,
35.3595
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XVlL„K°bUblbUbšl@nX@W„XVVKVkš@@Žmb@„Ubn„W`kL„LƒV@VVLnKlVXIlVš@@a„@l£nWlƒkVa„@°bnUlLVlna‚bnUVUXKlU@ƒ@lk@a„I°y„@ôkUU@wšmôšnkWakml™UkVmkUlmUUm@nkUKWanamU„LXW@U‚VnUln„`l„œblL°KXV@ĠJ@L°„šJšUVw„anK@UUImmƒkK@¯±Um@IVmUmmÅnWaUK¯aUk„w@W±kVƒx™U™VƒwƒnÅJUIWaÝJóI—bm`ÝbÅImJUI¯¥¯@mU¯UƒJmnUVóUkl±V@zXl„bWVXL@bm„mº@@XmJUXU°llk„@nWJk@U„@¦U`m¯ŽWx'],
'encodeOffsets': [[
116100,
36349
]]
}
},
{
'type': 'Feature',
'id': '4104',
'properties': {
'name': '平顶山市',
'cp': [
112.9724,
33.739
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l¤UbVL@V„LVb²VlKlaX@„„lbš@lxUVULƒbšln²VJUbW@@L„b@`nL@nVV@LVŽUbUVm„kVl„ƒlXbl@Xn°ŽVK@_°`²IVVV@VUVJnInaWK@Uš@„K„LÆ@nmlXXWVUUw@klKVa@knyVkVanI‚JXUl@XbVUl@@aša@mXk‚bnK@UlK@UUUVaXaWmkUm¥n—WmXaWaœkl@VmÞb„KVL@aVI@mUwVm„@KōméUL™KVaUk@kUK@U˜WXI@VlKXU‚@VVnInVV@VLlK@UUƒkKU_@ƒWWUwU™@klƒn@ƒƒ@Imb—@@m›nUKÛ@mKUkWVXxmbVLXŽVVU²VV@xÅnmWmLU@kbmJ@b¯š™IUb™JƒUUxVl@z@bU`W@Ub¯nUJUbƒ@WLUKULkU@aWKƒ@aƒbmL@ƒlmUk@@bUL™ƒWJUI™°@ƒŽ¯aWLk@mbUb¯b'],
'encodeOffsets': [[
114942,
34527
]]
}
},
{
'type': 'Feature',
'id': '4101',
'properties': {
'name': '郑州市',
'cp': [
113.4668,
34.6234
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@nWVUKÅ@W„nVnI‚ŽV@œkƂšwV@šnn@lxÞlnôJ˜zXJl@nalUČVlƒl@²UlkôVVUnm„I°VnV°@°¦VJnIÆJÞan_VmU@ama™@kU˜¥kaUklw@UIV¥kVUI@ƒmmUÅmUlƒwVU@amU—JWbUakVƒ—Vé¯Im`ƒk—@ƒwVWmLkU¯ŽƒXkWmLmx@UUƒbm@@x™J@LbW@UUVWUkVKƒ@ka™IUamKUkkmmLƒUkJUVWXkWmnÅ@ƒKƒL™@@VXLmbmJUIUVU@ULWVkK@nWVXL@lVn@¤„b‚kôKXKlL@¦²V@JƒL±@„@VU@WV@X@`XXmb@Žšblaœn@Jƒb@V'],
'encodeOffsets': [[
115617,
35584
]]
}
},
{
'type': 'Feature',
'id': '4105',
'properties': {
'name': '安阳市',
'cp': [
114.5325,
36.0022
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°kVaV¥kVmUkWkWVkVKUwkkmKUU@a„wWWXWakKWkXmlašIVmX¥ƒU@a„@WnK@kƒƒ™V™I¯ƒ@KğI@WU¯LkK›akƒƒ_kmmVU@VWXƒKnVmbXbVLmln@VVknlVUnVlkšlnXbmlmlXblnÈlWbn@@nšK@V„L„bVV°VVzšlnš@V™xƒI™b™ŽU@WLUa¯V™UkWõ@¯kkmxk¼l‚„XUlVbVLnlULmU@lƒLkVUlƒX@xW@¯mUƒ@UmIUW™L@aXa˜kU™¯anƒWk°@k™kKmmUIWaambUkkKmV¯aƒ@UblŽk„mXk¤ƒ@@b™@UbULWVnb@lUVVnmšnVVU„J@bWXX@WJkL@blVU°UV@XlWnXUbW@UVkVšVWbnLUJWLUK@Lnn@blVU‚„nUblxVUVJXU„a˜@Ub„LnUVV@mVIVVn@UbV@‚XbmbUV„_lVXUWanJVI@WkI@WVIVU°WXXl@la@mX@lLXl‚kVbœm‚X„ylIXJV@@kšKla²UVa„IVyÞb°LlVna@UÆKnLVbšK@anwU™'],
'encodeOffsets': [[
117676,
36917
]]
}
},
{
'type': 'Feature',
'id': '4102',
'properties': {
'name': '开封市',
'cp': [
114.5764,
34.6124
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lUVbXa˜InV@bUV„x‚knVVÆnn@„VJlUU¦VJ@kxVllb—¦lVš@nb@bVŽUn˜aôJÞIXbVJÆI„m„xšUšV„w‚U²l@XƒxVl°bVLXb‚`XklUnmVblLœ@lmšx°LVK@UXIVašWlL@Ukƒ°KkVaVUXmmI@UÅKmmƒXka±K—L@W›@kUÇxUUƒ@@UXUlKkklW@ašX„a@UƒKUaVUUV_@yXk@ƒ@a@U±w@UUW@_„mmw@wVw„mUaÇbUa¯UUkmWkn±JÅxmIbUxmKmn—JWw„kUaƒK@a¯@ƒbk@mVUIWƒ—Lmwm@Ua@WJUb@LUl™@UUmLUbWJ@VL@VmXWWzUJUꄘ'],
'encodeOffsets': [[
116641,
35280
]]
}
},
{
'type': 'Feature',
'id': '4108',
'properties': {
'name': '焦作市',
'cp': [
112.8406,
35.1508
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@V@VL@x@bXŽWV@XkššlUŽWX@J„@nI@KlL„KšUVaV@œJlL@KUk@KÞL‚l²_‚@nWlL„UVVš@nLWVUJVn@anV@a„wÞUVLVx„b„@lW„@lbXn‚Vn@@¼šL°mšKVn@bnl@nVK@blb„L„W„U@VWLXV@nlKn@lVVbXw°nV_@¥Vƒl@XI@mlƒkkV¯VWnI@W‚@n¹nƒ@aWKXUƒaWk@yk@k„ċUkVmbk@WI—yóImÝkkwm@™mU@™xŁ›lU@mJƒX™ak@ƒx¯V@¼¯Vm„UmmIkVWK@UXIl@UWVUU@mVUI¯b¯@™lmKzWKUa™nƒJ@nƒlbÝ@@b'],
'encodeOffsets': [[
114728,
35888
]]
}
},
{
'type': 'Feature',
'id': '4110',
'properties': {
'name': '许昌市',
'cp': [
113.6975,
34.0466
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lI„VnKlnVlnLVbšJlb„@ULVlUXVVX@‚a@KšI@wn@„aVV‚@nwnKlX„W°lVnKUX„x˜@„ln_°JVIXy‚XnW@U‚K@UXIVanKVVš@Vk@KVaXI‚@Vbn@nx˜KnaU™l™ƒn™Va@ƒXa@™VçUUla@aUK@wmUƒLk`kIWVkLmK@V@XUlƒn@JXV@nm„™bU‚óIƒmUa±@@ÑóVUUk@UlKVU@akWVUUlUUaUK@UUKWbUkÅJ@XWaƒ@XbmJ@nUJ@bUKƒLÝaUnk@›lXbWbXnm˜n¦lVXnWbUbVV@VkL@VmLaWl@n™b@bk@UVWak@WVImJUbUlmz@lUbkL@lVx'],
'encodeOffsets': [[
115797,
35089
]]
}
},
{
'type': 'Feature',
'id': '4109',
'properties': {
'name': '濮阳市',
'cp': [
115.1917,
35.799
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lLXbW‚XXƒx@bVVnLllVxULUl‚XXlVlUnlŽU¦Ub¯l˜nœK@V‚bVb@šXbVL„KVxVVnIlašb„a„¥lU@wnalLnVVlVLXnlWVXn@@lVI@WnU@mƒÅW¥—aW_k@WwXy@kmƒ@wU„mš„š¦šlUxVLV@UwšJ°xš@VX„@Vb„@š`VX@VX@llšIVbnJlI„bšV„l„˜J@ƒmѯLóa@ƒƒKUa„k™ƒ™Xƒ@UK@wU@ƒlWUUݯImW¯aƒLUKU@ƒkƒ»k@mƒwƒa@UnKWI@ƒUU@akVWK—k@a±ƒbóUWKXUmk™KUmLƒbUx„„@lmLXŽƒ@@b„VW¦Un™JkbWnXl'],
'encodeOffsets': [[
117642,
36501
]]
}
},
{
'type': 'Feature',
'id': '4111',
'properties': {
'name': '漯河市',
'cp': [
113.8733,
33.6951
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@Lƒ‚UnVxnIWa„@Xb@WÆIVlXaVL@VVLVbkVVŽUVlX@bUVkLV‚l@VVôU@Ò²@Vb„nôJVšanƒ@mWU@I„mVk@WkI@wmak™@wlW@w„@VbnLVb°bVyX™V_@aUKVVK@wUU@™™a™K@kmbXVmJUXƒ`kn™nƒK@aU@mw™akb±@¯ƒUUÝKUUU@WU@VkLUKU@mUmJUU@WVkL@UWJ—X@VVL@lVlUbšLVKnêƎ'],
'encodeOffsets': [[
116348,
34431
]]
}
},
{
'type': 'Feature',
'id': '4106',
'properties': {
'name': '鹤壁市',
'cp': [
114.3787,
35.744
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ó™™n@xVVólƒ@¯zƒJ@bkl@@„kVWLUVmVXbVJnnlLlš¯@Xlm„°bVš—lWb@bšKVXnJ@VV„°nX@@w„WVklU„K@knVVKmkUKUaVkƒWkl»nwlŽ°lö@lXšV°UVbXKV@šša„Jšw@Um™™kUy¯UUUƒaƒK@U™L@mm@XaÇkkmWank'],
'encodeOffsets': [[
117158,
36338
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/hu_bei_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '4228',
'properties': {
'name': '恩施土家族苗族自治州',
'cp': [
109.5007,
30.2563
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VK‚bX@lbUVnL°„@VlVnUl@VUX@„aVƒmaXƒlašUUU@wmaVUn@Vƒnmmk@m™U@kna™aU¥Vam™X_@WƒU™mW@_kƒVaVKnL‚lœ@VVal@k¥@kUW@kUKVUlUVсW@kÇaU»ValmkUVUVak™@aƒV¯_@W‚UkmVUlU@aœƒƒalI@akkVWUaWXUWwœWVbÆ@„„l„alIVK@U™m@UU„W@al²a‚¯UağÇm@ƒbkk@wƒ@@W™aULmxƒIU‚™ƒb¯@U`UX™JmL¯aƒKX›WUL@aknmK™@aWUXaWm@I@UÅmVU@™™aUV@b™VƒI@WkU›bXkm@VakwUKULWKXmJ@XUK@ƒmL@KUwVaUI@KU@mmn™mXka@»V@@UUaƒw¯yVk@ƒUUVmmkÛÈU@mWUnmx„šmlUbV¦UlbWVUL@UUƒ™IUmÇKV„VbUVVxkn™LUxV`VX@š„„kJVVUXWaUVVlUnmKUbkI@WULmK@L@LVlƒLnmUIWV@aknƒ`VXUJIVlUVVbUX@¤mbnLm‚m@UXk@mm@Ukaƒ¥@kV@@KkU@aUKWbkLWVkIVŽk@UbVlmX@bU@@mmL@bn`@Ln@llVLVk„@XVVU@`VXUš‚¼k`VULka@VllVIn¤VU@@bl܃bkx@bkL›škKƒn@bn@@b@JUnV`UnVbVKlVXUlbn@°ƒVx„@@b„nVbUllVn@V—VK@UnW@UVUšlnk‚VÈޚxVb„VVI„xVaÆ@@aka@UVaU@@a„k@Wl@nbVIƎ@Jk@„L@VlXnlla@VJnw@UmwXU@aVK°ÒnllnLlb„xnKVaV@l¦²nVl@llL„x@XVVœ‚Ķš@našx@U@al™XUVa‚LÈþV°XxWXkK@šmLnlUb@b‚xnLVlVVkb@UJ@xWXXš'],
'encodeOffsets': [[
112816,
32052
]]
}
},
{
'type': 'Feature',
'id': '4203',
'properties': {
'name': '十堰市',
'cp': [
110.5115,
32.3877
],
'childNum': 9
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@@a@w@kV@nbVK@ƒnUla„@la„Ål@nlVakwWX@WkLšaVmšwV@anK@UlIXmWkk@@mmLkWlwk@U_mKXwWK@U¯K@UU@ƒVUa™kmƒkI™yUUVUmanU@mlwkƒ@_mWXaƒUWU@ǃ@U@aUaVwUKUIƒVkK@UWIXƒmaV@k@Vm@UnwlƒUamk@V@„ULUamxUJkU@Iƒ`WkkK¯XWak@@W@IUV™LWJkXkaÇVUKƒ@kUmbmUUƒUKƒbkKWUkI@ƒkKÝ@@aƒUm»nI@mƒU@UnWV_@aUmWbkLUl¯b@a›kkk@WkkJm_k@UV±@J@b›nU@@WÝIUJVbXL@nlJkx@„Wn@VkJmb—LmUƒ`VbUL@xVn„@XVƒŽ@„mVVnnJVbU„ƒx@„V„nVUbVVƒx@šn„™bUK@bƒ„@bƒJ„šm²„VU‚lbXzVJV„„JVbn@@Xmb@V@bVJÈ@‚Vnkn@°aVVV@šX„KnalLVmšUnnVKVlnLWlXX„Klk°š™šXŽWškLUVVV@nU@ml¯nmbk@W`Å@mb—LWm¯UƒxnêVèk@mbƒVƒnUK™@kKmXk@@JUI›lÛLllnbVnlJ@LULnlÆaVLnŽV@nkVJ„@lkô@²bÆm°w„L„WV@VXšKšVXI@W°ÆVšK„b°U„JVIVV„¦XKVL@l‚InaVÝnUl@@bX@‚™nmVL@lVL„lVLVUnbVW@xXn˜bœU°¤V@š™„a@kWKUUn@VlnL@UV@Ü»@mX@V_ƒakaÞ@VK‚¯@kkW'],
['@@mUkUUm@nllVKXXVK']
],
'encodeOffsets': [
[[
113918,
33739
]],
[[
113817,
32811
]]
]
}
},
{
'type': 'Feature',
'id': '4205',
'properties': {
'name': '宜昌市',
'cp': [
111.1707,
30.7617
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°`„U@blšUbUVlVkn‚ŽUbV¼Èb@l‚XUÒkVUVVL@lVX@ll¦k@UbU‚›@kmKULUbl„@`nXšŽ„V@XW`nšUbV¦šbmb@lšV@nnlmnU„m@UVnb@xVV™VkbW„nb‚VnVa@an@UaVU‚JXnWlXX@l„¦@ŽlKÆX„bX‚V@VV„@°¯°xXx‚XV@nV°UVWU_VWXkmaVnWVkn@lln@lb@UVLXWlnX@˜aXUmaVK@UXU„U@WVI‚W„XXV‚U@¥VKœ@‚Uގ„„‚a²LlV@kV@UanKma@UVUnK@UVLXyVL‚knJ@UV@@UXKWUXaV@Vb@mVLnKW„m@aUUm@@UkK@Ula„LXKWaXI@alKlmUk@wVKXL@m@WWn@UVa@K@wna@aW_XWWkXbVW@k@U¯WWwka@UUaVIVƒkU@m±@U@@wVKkaš_@VV@XUVwU¥‚šyUkm@V±ÈUKk»ÇL„m˜mLk@ó£kmWwƒm@U„IkWKXwWU@ƒkLƒwkbmaƒbkK@VƒLkmWIUKkUUƒÇIǫJ™XÅJULVŽÇLUVƒ@UK™@kI@WVI@UaƒWmXVVUL`±kÅLmKkƒƒkƒÅ@Ua›XXxWVXŽVbUXll@bkJ„b›„@bkVUVlnV@X'],
'encodeOffsets': [[
112906,
30961
]]
}
},
{
'type': 'Feature',
'id': '4206',
'properties': {
'name': '襄樊市',
'cp': [
111.9397,
31.9263
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@@Xl@Xb°WlLXl„_@JlVVInwVbVK@ƒ@UnlVbk„mx@VUnl@U@nbW„XJ@VlL„UVJVLUxVb@b@VȄ‚@XV„VWbnX@`l„kx@nmVnbUVVVšzlJn„šlVb„UV@@V°L@VXLWxnLV`l@kxlXnK@nl@XlWn„`Xnl@@UVa@VÈKš£VLVanW°U@UVU„@„`VIn‚mV@„nV@Xa@aVW@UšalkXKšblI„yƍXnlJXbl@@VV@nklU@`„nVK„LVKVb@V„U@UÈK„UVKšIlUX@V`lIVbn@nblVVmV@@XXJšUVV@knKVn@`@X‚VnK„wlLVmUUU@ƒU@aXL@WlU@UUW@UmU@KkLWaXkWmXUWm@U@ƒnk@UmK@U@UaUVUUKV_@al@namWUI@KUƒK@aV@WUIƒbƒ¥ULUJkIm™ƒK@U@K™V@U@a@UkU@K@wVaUwlU@mUƒULmKUkV@@anIWmUK@I¯„mKkl@LUb±lUakLmk@WwUKÝVUIm`¯n@Uk@makJU_@ƒƒJma¯ImwUVkKƒb™aUÅ@wWaU@VU@mXIVmmUkJkwm@mIlUKWzUK@VmLUV@VnbmLVbU@@lkU±KbƒƒÝV›@UL@¦VWUƒWXUJ@XƒVWV@VULnbWV—bW@kmWXUK@Vkam@kkm@UlmXUŽnbWlUXV`UX¯VmUU@Ul@Lll@nnJ@LƒnWmbmš@b™`ƒš',
'@@kUUm@nllVKXXVKmU'
],
'encodeOffsets': [
[
113423,
32597
],
[
113794,
32800
]
]
}
},
{
'type': 'Feature',
'id': '4211',
'properties': {
'name': '黄冈市',
'cp': [
115.2686,
30.6628
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VVUnWVXnVJ@„‚U@V@VXŽV@@IVJUnŽ@V@L@KlIVlVanLVbnVlI„ƒn@@a@Kl@@I„JlI@aXU@KlK„kVblJXU„VlU@V„bVkVKXn@VlxVa²I@VlVUxln@bšJXklaVWnLmÅ@y@k@ašI@W@aXIlVVaV@nnlKnLVW@IUa@a@K„UVVlI@wXKVV@IUƒla„@lUXwWƒnƒnalLlxXLll°@XwVKVaXIl™nb˜@nln@Va@U@k°ƒUmÆUVaXI„JV¯ÇUmmkU@WaKmakVm@U@aVKkkmKkVmIkÇ°£@aUUVaVVnKlkX‚mkƒ@ƒlUVaX@@Um@‚™UmlUXV„UVU@w‚K²¥Ua@I@UV™l@U™V±UIUÇ°»VkUmVI@a@U™m™ĉ™¯V±bŹĖğaÇL¯lmŽkX@‚óĀ@ŽmšÝêb±WkLƒn@xXx@Ž@b@V@LW@UbƒlţXƒ`kxWnXô¯¦ÆV@L@JVLƒxkK@V@bkz°l‚lXz@J„UlVla@XUV„bVKXnW`XXV@laVV@V„X@V¯xƒx@xULVbUJ@n@LU@VmmakbUK@b™IWWUUVkUmkLm@VJkb@nUJƒ@`V@kX™aUaVmmLkUmJ@Uk@U„±lkzmJUb@b„VUxVXU¤ƒL@JƒX@VlL@JkLUVU@mnUl„¦@V'],
'encodeOffsets': [[
117181,
32063
]]
}
},
{
'type': 'Feature',
'id': '4210',
'properties': {
'name': '荆州市',
'cp': [
113.291,
30.0092
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÈJV„lVVLXJln„K@UlL„anbla„xlK@„XVWxXLlƒJ@V„nXxlnô¤l@nKn—‚ƒÈKl¼VL²Ç‚Un@Vl™zŽV¦UxWVU@@U™`lbUL@xV@²@@nlVU„UJVb@VlbXx°XVWX_VKUwVKVa@UVKUUVk@KnblaUU@wnWl@UX@lÆ@@a„IVmUk„™šxVJ„U„bܙ@Uk@WWnk@Vƒ„™Vm@I@m@Un@m™XUlVlUnJ@knJVU°@@aÆLX@ƒllL@¦nJV@XblLVa²U@UlWš@VX@`@LV@@bXJlIXml_lJœU°b„KÆLnVVl‚@ö—Vƒ‚mXaVIĢllUlVnLVlX@@b‚ašnnxšV„L‚bn@°ÆXmmkĉƒ¯w±™™™Uċ@KÝÅƧŃÝ癙Uw¯ƒm™¯k@W‚kV@¯UIUJW¼kb™Uƒwk@W`@¦Uônb@VƚlÈ@VU@ƒƒ£UWWnUÆUnmJkUÇ£VWUI@aUU@WkI@Uƒa@JW@k£kaWVUKmnkKƒb™kkVWb—VmUUmwU@kk›@UakUUa@V@nlx@lUb±lUbnnWLUyk@UamœUK™@mlk@Wb@VXL@x@xWI@a¯Ž¯V@bVn@LkKmL@`XmKmVU@@bkL@V±bk@Uaƒa™L™KUVƒIƒ„™W™XamVVbUK@b@Lm@UWkxULWVUnm@UlUX'],
'encodeOffsets': [[
113918,
30764
]]
}
},
{
'type': 'Feature',
'id': '4208',
'properties': {
'name': '荆门市',
'cp': [
112.6758,
30.9979
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n@lxlInVUnWJ@nUVV@Xb@xVƚb„alLVUnx°Jnb„I@„V`lInbl@@V°mn_VJÞUVLXx‚@nllKVb²kVa@KlknL°ƒ@JVLXnmJ@bU@VlnLVKV„@nX@lUšKVaXal@VKn@¥°L@Unw˜bnašV@KV@VUX@lVXI@KW@@IXWV@laVL„„KlaXUVVnkVWV@lwXblIXWVkVmšaU£VaUmVIkU@y@WakKUamU@UUK@kmK@w@@mK@LƒV¯™U@WwkmULƒamVVUU@ƒƒIƒbUKUa™kmƒm@UakLmxU@UÒWlULţÿmwkIUm@a‚kÈblW@UVƒUUk@JW@XkWWUkUKUIlw@aUWknWUUmnIWƒ™aUwVaۚƒaƒVUI™wƒšVlUnƒJ@bÅ@@kVWk@mX@xVVkbma@LUlVVUL@VUbULVxULW`UX@V@lUXWaXlWXX`@bmb@x@LUb@VmŽXX@‚@nWKUL@xVlknkL@bWJXbWLƒKkb@VlL@Vn@VV@bƒnX‚mLUK@nUaU@WbXVWL@VU@@V'],
'encodeOffsets': [[
114548,
31984
]]
}
},
{
'type': 'Feature',
'id': '4212',
'properties': {
'name': '咸宁市',
'cp': [
114.2578,
29.6631
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÞƂLČ@šV‚š²š°xĊ„nlWnŎ¯m@aƒK@„„°‚n„Jšwn™VIUaÆJšÅ@wšwV™XW@aV_l@²V°lĊwlaXLšwlUkalVVaX@lVXI@a˜UXJ@U°UU¥VIVKVklanLVa@VÈIVV@nk@aVa@mV_@a„K@klKUa@UnKWk@@lU@@UW@@nUWUwmaVIXƒ„lV@mLXblJ@kV@kk@KU@WƒkUWVÅwkLmW@UmL@lUL™KULƒak@maUUÝwUJƒIb›KUUƒ@š™aWK@kUWVkUwVw@™mÝ@™I@wkW@a›ww@LU¥™kƒJ@nVJƒIkVVnkV›UkyUIUl@xWUkaW@@°kz„ŽWxkLUWmzk@@bVVVš„b@‚@XlVœ@Vl@bVbUn™`Wn—@Wb„VVI@`„LVbXLV`mnU@@lƒL@LUŽƒak@ƒLk@WbUJn¦@lVb@xVb@n'],
'encodeOffsets': [[
116303,
30567
]]
}
},
{
'type': 'Feature',
'id': '4213',
'properties': {
'name': '随州市',
'cp': [
113.4338,
31.8768
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„@nš`lw„k„ƒ„UmUVWX@lk„@VanUĠ¼V@@mX@@nVV‚VXLmJVLnK@b„V@@J„@VUn@VaVUUUVWVLV@@Kk_@almaVkUU@WVƒVUVLXmmk@wUaUKUV@°™@kmaUaÈmW„mUƒVklaX@lVnxl@@UnaUk@ƒVUVwVK„nš@VVn@VbVJUknUmmVmk_Vw„KUUm™Vak¥@UVKVIkW@UmIVWkIVƒkmmLkwmVUƒ@LƒUU@VVXL@JmLUbmK@UUKmkKUUmVUaUnÇlk¯™mJUnmLUaUJUaWL@UkJ™ƒUƒ@ƒaklkU@¯@KWLUmUUWVkbƒLƒŽUKkbU@WX@JX@@LWJkUW@UVU@@L™Umb—amx@V¯K@¦mŽULk@WbUb™LkVW@kVVxUb@x@LlV@V@b@VšU@L@V„LnšlJVIVK„¦„aVJ@XUŽ@b„LV‚@LVJnXmbk@@bU`VLUVV‚b@V@VnL@Vml@„@VXnWVXnWlXblK@LnV@VVX@VkV@XWK@b„VV@VV'],
'encodeOffsets': [[
115830,
33154
]]
}
},
{
'type': 'Feature',
'id': '4209',
'properties': {
'name': '孝感市',
'cp': [
113.9502,
31.1188
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VnXK@L@°lVlk„b„@„VšlI@VXKVbVIVbnKVmnI°šlŽÈkVmVbnUVVlLnVL@VnLVanK@IWKUUV@„V@KV„nUlxnKlnU„lJUXnJ@VlXUJUL@Vl¦UbnšVVƒLUxl`UnnnmVVlnVK„bšmVX@a°Ý°LšaXJV@VUnKVXVK@LnKlLUbVVX@VwVJVn„@@UU¥V@@UUK@ƒmaUVUkkJ@L@K@UmVUI@JU@W@U@UV@ƒUIWmXUVmUUÇ@UVmIlmnmakK@akaW@UwVUkKVnUlKVwk™ƒVU_WKUkVW@UXaWkUa@w@VU@XaW±@IkbƒKƒb¯L@WƒXkWƒ@UakL@UV@UmVUmL@UXWVL@ašUƒVUUUVU@yUUƒIUa@wUKWVU@kƒ™™Wk¯UkwVKƒLUx™K@nVxUlUUWVUmw@wƒUUyXWlX¦WbUV@„U‚@blbUVVbXXƒl@lVL@bk@lxkVVnVx™¦ƒ`UnkL@V@L@Ž‚@@xnL@lVL@VnVVblLXb@‚@zlVUJVnUbV¤™bUnUlWXkJWakxU@UXml'],
'encodeOffsets': [[
116033,
32091
]]
}
},
{
'type': 'Feature',
'id': '4201',
'properties': {
'name': '武汉市',
'cp': [
114.3896,
30.6628
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nbnm‚knJVUÈ@@Uƒ¥VknmV@VUlK@IkK@U„W@I„KV£UWVwƒU@aVanIly²kVƒl@@VnIlVnKUnVbšblWU@@_„‚VI@mlaUIn@lKVnUlVVXXšJ@aVLlanbUnV@@K@mVIUaVK@w„w°w@UƒW@UUUkbU@WWX_WmULƒaVU@WkbkUƒV@IWyk¯kly@a@UlL„wUK@I@KÅUW@ѱUm@wl¥kaƒ@@_Vw@ķƒa@akw@ƒkKW£XVUVwVwUaU@VUU™™xWKkbĉx¯k±Uk@U`@bWXUš™x@x™ÆÅIVbUJmš™xƒImƒ¯@ƒ™Umx™nUVVbnJV„@Lƒ@@ŽkV@bVnƒ@UVULlx°VXlššl„V@XUVL@xVb„JVV@zUVVVUV„™V@bUKWX@VnKUVVnU@@VlKVb„@lX„W@X°K„a„Lla@JX²Wb@ŽUV@@xVbXlWb@VUXVlXLV`Uš„lŽUxkLmVUŽlLUVVxX@lb@blL'],
'encodeOffsets': [[
117000,
32097
]]
}
},
{
'type': 'Feature',
'id': '4202',
'properties': {
'name': '黄石市',
'cp': [
115.0159,
29.9213
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VšUVV@VbUx„aWUœblUVmnKlX@bXJVIlVUxVVVIU‚zlx¯š@‚VbnL@x‚x@UVaXK„b˜@Xk‚WU_Vm²klW„XVK„Žl@nXV@@w„mlK²X‚aÞén™@ôÿ@lWn°kUKmmUљUmm@ƒwkImWU@UakL@bVLUVċ@™bUK@alIXKWK@™nXnKmkUVwƒ@¯b@L„lUL±W™n@KULUaW@kL@lƒL@bU`@nUb@bmlU@UÇJ@UUbmKkblŽUULUJV¦¯V@VWI—V@bWJkUW@UbkUlbkV'],
'encodeOffsets': [[
117282,
30685
]]
}
},
{
'type': 'Feature',
'id': '429021',
'properties': {
'name': '神农架林区',
'cp': [
110.4565,
31.5802
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n`lIXll@lœl@b°aVklKXaVn@bU`mX@V„V@nmJn¼„V@bÞ@lL@„lJXVlL„aVLV„nVnalV„@VLÈUlblWXIšKVU@J„™š_‚@an™na‚X„m@KmI@mkk@KVkWWw¯w¯°ƒ@UUU@WƒaÅWkL@ƒ¥@kWWXkWmIUVVbm@@bUbmUU„ƒbW@UVk@mVkU@U¯ƒmKVUkaW@aULƒÆVbƒb@VÅ@Un@VƒLWl¯Lš„'],
'encodeOffsets': [[
112624,
32266
]]
}
},
{
'type': 'Feature',
'id': '429006',
'properties': {
'name': '天门市',
'cp': [
113.0273,
30.6409
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@K@UlKVm„_š¥UwUmlUkwl@@aUK@k„kWWUaVUka@aV@ƒVUXaW¥Xk@WWIklm@ÅxmI™VÝUkxkaƒ„@bWJaUL@„W@™l¯UULU‚ƒbƒkV™Ua¯bm¤UnÇUkmUšUx˜b@VkXÇal@bVnlJnxŤĀVKXkVÑV@nwlKVbn@n„šlVbVL„a„J@„VV‚UnU„bVKlnXxV@°š„U@KnL'],
'encodeOffsets': [[
116056,
31636
]]
}
},
{
'type': 'Feature',
'id': '429004',
'properties': {
'name': '仙桃市',
'cp': [
113.3789,
30.3003
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VK°VškX@@ƒVK‚bXI@a„ƒlblwÞVšUnJÆwn@lkXJ@X‚WVz„V@xnx‚VXUVVVkUw@mšLVw„KVU„@Um@alU@„@@KUƒmIUaVUšmnwmw™mb@aW@UkmKkUkVġkUJWbnU„õ˜@UkmUÅKƒL¯a›VkIk`WnkJƒ@xVLUVVbUbk@WlXbm„VxnxUblbUV™@@VUV@nVL'],
'encodeOffsets': [[
115662,
31259
]]
}
},
{
'type': 'Feature',
'id': '429005',
'properties': {
'name': '潜江市',
'cp': [
112.7637,
30.3607
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@UbVxšbX„mJVnXVlmVX@bkxVJVLVlXXWlX@@IVl„V‚U—aVwV™lnÈVVmn£°aVbUš„l„aVUK@mVU@Uš@VUkaVamwUwnƒWaXkl@VaUaVUUK@w„WI@aU@@K@_UW™@kX@V±VUbkKWaU@mI@¥kK„kW@ÅK@b¯@UVmI@lmIkVkUWVnšm@@V@n@JUnƒšU„@ŽmlXXl@@V'],
'encodeOffsets': [[
115234,
31118
]]
}
},
{
'type': 'Feature',
'id': '4207',
'properties': {
'name': '鄂州市',
'cp': [
114.7302,
30.4102
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°¥WóXmlw„_ŤW„kVaX@@K@U@a@WwU@mWk@ƒULƒWkX±lUnV`XWl—@ƒaWLUb@Vw@wmKUa@°™kw‚yVUJUUVwkUUJWI@akWmLUnkV›aXVƒbUxUVWX¤lL@„lx@b„b@ĸUx@`„@lbk¦@x‚n²VƄX@'],
'encodeOffsets': [[
117541,
31349
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/hu_nan_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '4312',
'properties': {
'name': '怀化市',
'cp': [
109.9512,
27.4438
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@@n„‚@b@XnJ@k°x@aVUnl‚UXnV@@VnJWUJV„nIVV°ŽUbVVVL@Ž²LUVa°V@aV@nm‚UXblLXWVXVmVLVK@an_„`@X@l°„VlXXW`nX@Jmn@b„@nV@Lm`„bUb‚n@VUVl@nIVbUlƒV@LkJUnVV@xVblVUbU@ƒzUKU@mx@xUnn@@WV@lbUb@šnVWXX‚V@VIV@VUnJ@VUz@JWbXllI@VXVVL@ŽVn@„„Wlb@„Žl„XVlL„aV@VJ@XX`„kVwVl@bk„‚bUŽlVXIlƒnLVa„mVwV@@nV@XaVJVbX@lwV@n„@nV@VWnIVVUŽÆ@Xx‚a@I„UUKmk@mVƒ„IXmWUš™VJnUVU@anaVwk™›U@UXa@W™@m_@a¯@@K@UVƒ„bnK@blIlbXa@WW_n@VƒU@¯bmyƒUkUJÇÅ@WU@kWKÅwƒnm°KVkmankVWnXVWV@UƒƒwXkV@mƒ„UlLnaƒVaX@VUn@VnVK@xlnXWšU@a™@@klak™Vw™mUaV@™wmIÛ`m—@mVUXmlIXƒV‚I@K@aU@UaV_UK@wkUmmUKWXŽmVkUƒL@mƒƒU_nK‚™@aVU@Ukak»@U™™@ymUƒ„¯™ƒUUƒVKkam@™nka@ƒmwkLWb¯mkaƒ_VaVKUƒ™IUw@kKmU@WK@UnƒmaULkU@wUalWV¹U@@WUI@WU@‚_@W@U@mƒU@WbbUK@Um@@UmbUwWWkk@WU„a@anUUwlWUwUU@wlJVUnnV@@mnI@m‚K@U@w„a@wUm@_mƒVUUaVUkƒƒƒ_kċUk™VWLƒ@mlU@kn¥W@UwUWV@VÝU@lXLWVUbVLXlVIl‚knmU@VUJk@@„ƒ@™kVmwmVkxU@@XmVUb@xnKVLl@VxUxkIU`@bWVXX@JWL@bkb„¤@bmUUU¯Kƒkmb@V™VU„VVn@@„Vb@`lnœxmb„lUn‚bk„@xU„mV@bmWbUV@VJ„Il@nVUb‚K@nn@VbnJVIlJVkXJ@X@lmx@bnnWVXJWXU@UlU@mk@@llb°x„IUbnJ@VWbXVmI@JVX@bk‚@bWL@JUXUK@U@Uƒ`n@@Xm@XVW@@nX@@`ƒImxU@@JUI@KƒLmK@UÅUUV@VW@™¯kUU@UamVUUmJ@n„xmLKƒkmJkwkKm_mKXU@aƒU@b@Wk@ma@zUJVUmbUlU@™xnXlWlXXblK„¤V@@nUVVLkVš„l@Xb@VVK‚nXKVx@znW@X‚@@lVK@X@JXbWbnn@JUamLVVXIVxnK@aWUX@˜x@VnI@WlI@anV„IVxk‚l@lbXXšxVVVJVInbV@@ln¦ml@XXVWbkJWb',
'@@XLVKVXVKUa@UUUmV@l'
],
'encodeOffsets': [
[
112050,
28384
],
[
112174,
27394
]
]
}
},
{
'type': 'Feature',
'id': '4311',
'properties': {
'name': '永州市',
'cp': [
111.709,
25.752
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lxUXV‚lXUVnlVĢ„JVbUXVJV@XUW¯„VIUK@klW@Un@„nl@V`XUVL@l@šVx@„XXW`UnUbšxUlVnUšV„lb@VnJšUVVVInJlUšVnwVklKnw„LVJVšV@nIV@nbVa@KVVVUUa„KV_nVVJ@_VW„nV@n¥lI@anƒl¥X_VKlwVlULUVVVš@šU@VXL˜ƒ@IUmn@VU@wmKXUWU@m²šl@VIXWWkWUkWlkIVamUXamUnmWUU@@Un™lK@XJl@kVUk@mWKXkl@@aVU@UVWUUVa„In`VUVLnw@U@K@Uƒƒ@w@UVmUUƒ™°K@UnV@bV@Xk@KVm@amk„aU£VWUUmUUwm`UbULka›KXU@kVmU™@aV_UWVIn@˜y„XXK@klmV„V_kWVUn@WUU@UƒmaU@™wnwWanUmmXkƒam@UakLmK@b™xUUUU@Km¥Vaƒ¯@ƒkUaVUlm„UU@mUUÇmUk™Uyƒb™bUa™XUWWbÅLmL@V™aL@WWXUKmmk@a@UUK™XW¥kU@VƒUkxmVkUWbUJnVJ@nVJXzWxkŽ@lVbUX@VVL@`mbUnšŽUn™VV¼k@Ulm@mwLƒb@lmLUK@UamƒWkƒK@£Ua@ƒ›UkJkUmbVlkX@bWbUŽVŽnnUVl„@bšbVK@VX@lb„V@nU¤šx‚²„Knblb@x„V„ô@šlŽ@b@l@XWxnVl@„VV@XLVl‚LUŽUXV`šbXXmJU@@bm@UUkLW@UlUKWUUb™wUm™L@nklVVmVXXm@@bUKlÆn„‚XkllVUVVL@nUbV‚@V@nnV@xUn¯U@JW@UX@xĉ@™`m@@LV@b'],
'encodeOffsets': [[
113671,
26989
]]
}
},
{
'type': 'Feature',
'id': '4305',
'properties': {
'name': '邵阳市',
'cp': [
110.9619,
26.8121
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XIlJšI„VVK@n@VVVKnLVwVmnLVK@U„@šw„J@wVIƚ°X@ÜȄUÈxll@kn@VwVaXJWXn@@WVL@UUKVKV_U@@aVK„x@U„aV@lk„@XylbUaV_šVnal@W„U@a„I@aV@@aVUl@Xm‚UXWaXml@@kk@ma@V_UnUV™UUWJUa@kkaWLUmk@@LUVWUkJWkK@¼UnWJƒIkV@b@JUIm@Ul™V™m@Uw@a@kWƒXWKUknW@ƒWUU@k™mx™UkVmIUJUU™VmI@UkaUƒV™UmVk™wVaVmX_WW@ƒUw@™@kUKWVU_k@ƒmm@@VkX@lVLUJƒX°WVU@UIVWUaƒIUġmkVUkWUVWkwWXk`mI@¥kUVƒUƒUn±@m›XkWknV„UVmmU@@XƒVƒUk`@Xƒƒƒk@¥¯»mbĉó@mkU@kU™ƒƒ™KmX@˜UnmL@lULkKUƒWUU@ƒbUaUnƒ@Vb@l„¦Ub@l™@UKmnƒKUnl„UVVbUVn„@`Vn@xƒb@x@VL@nmJ@nU@mmUVkI@xVVVxkXVxmV@bƒbXVl@Xl‚XVxna@Vn@@VVL‚aXaV@n„‚@@V@X`V@@XVJ@XV@UºkXVb@xlVVKnbm„@VXLV@n‚lL@VxšJV„ULUb„`lb°nXalKnx@„lbšmn@lbULV„„V°š„ƒnV@zšš@Vl¼lb@VUV@bšmLV`„„@n„KlVnU‚XWVLnnlV@xVLU`VbV@'],
'encodeOffsets': [[
113535,
28322
]]
}
},
{
'type': 'Feature',
'id': '4310',
'properties': {
'name': '郴州市',
'cp': [
113.2361,
25.8673
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²zVaVlnVl@nšVk„Jl_XJlIVmnL@mV@VXn@lV@‚XzV@lyV¯²U@UlJ@XVKnVVIXl@UVLV`@n@J„I@mlI„KVLnUlVUVVLXašKVLl@nb@ŽW„XV°KUnVV„L@xVJ„L@b@LUVVVU„˜VXbmbVbn@@lUbm@x@XVVVŽ@@˜@bkImx@Vm@Xbƒb@l°XU¤„a‚L„mnL@bl@@™VUX@VxnV˜anLnƒWƒ¥XKVwnUWXmVIUWÆLVx„L„w@wVmlU@¥XƒWUkwlÇn_Uw„WV@VU°wnU—ƒy@aVškVlnL@lVn„w@VlJ@b„X„x@bVKnb@U@WVUl@@Vnbl@XLlK@aVLVKnxÞn@a„LlmUaVU™ƒm@ÅknUmaUKmVk@m™kk@UlWUkVm@w@kUU@W™U¯™¥@w„Ç@aVIlUV@kUWU@UUm»@k@mKVkUKUwƒaUaUa›@k„kUWJkImaU@UK™@maUzk`@zƒy@XmJkL@UUJmUkV@z›@kŽkVmK@¦UbWL@a@UbmKmwUK™Xk›VUUkmVkw@UUKmL@WUIWa—JW_k@@WmI@mk@WkWULUUVKUUVm@šU„bš@‚nUǃ@U@w„™V@Ua@aƒL@ak„›l@k™UƒJƒwó@@L@V@„™`@œƒJ@xnn™šmV@bkJmUó@ƒn—JW„UUmƒU@UV@Lk„WlnnmVXbmxšxV@nbV„V@XVm@UVlXU`ƒUŽkn@lWLƒW—zm@UJVXU`@bVšUn@lWVœLlbVKVan_VxnVVVUXV¤ƒbnl@bUn@LWlU@@amU@V¯L„šVVUn@V@x„„@V@L@VmxUKUVm_ƒJUbVV'],
'encodeOffsets': [[
114930,
26747
]]
}
},
{
'type': 'Feature',
'id': '4307',
'properties': {
'name': '常德市',
'cp': [
111.4014,
29.2676
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l™U™mkUwUyV™@VW@¯Va—VmUU@KVUVUVLnaWƒnkUÓV_@mVU@݄w@ƒka@kVmƒUmK@IkaUamKkXWaUW@WUk„™@@KVU@aU@™L@J@XÇVUKVak_mWkLWakVUbmLUUmlUVKUU@kUWW@UImJ@xkLkKm@@Xƒ@ó݃@UUk@UKƒV™ƒULƒKƒXkWWbkaƒIUƒWU@mUk@WLaUJġ™ƒ@@XÈÆVIl‚„Vnz°aV@U„m@X`@XWbkakJ@amLƒaU„@V@L°@@bn`š@@XWb@VœVlšUxmb@bUVmVUI™šXVWnƒJU„@nnlVLƒV@JbWzk`m@UVK²V‚x„k„LVl„@Vn@V„„°xVKVkœVVlUblx@bU„‚Æœ@@nVnUll„kx@VW@@VkLWxUL@bÝ@kKkVõV@bkXVVUVƒ@ƒVkUkV›LkV™a™@@™ƒ¯xUxmX@JVb°WXkK@Vm@k„Vb™bn¤‚xUXkJƒblxnXÆK²l‚_@Wnašn@ŽUL@b‚JnIlV„@lUœ@@¯ô@lWȂIVKVm„U@aXaV@lwVXn@@K@UVKUUnU‚bn@lWšX„ƒlJnUšLšKV@„„l@²a@UlK@aV@naVX„WV_nKlL@KUm@a°U°@VXL@a@wWmXal@„k„@VLn›V@@bl@VnX@mwVa²aVU@mk@'],
'encodeOffsets': [[
114976,
30201
]]
}
},
{
'type': 'Feature',
'id': '4331',
'properties': {
'name': '湘西土家族苗族自治州',
'cp': [
109.7864,
28.6743
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@KšL@wnK±nƒnm‚—@WUk„ƒÜÈn@n»@mVamk„mšU„„l@V™nmmU@wUan¯VKšLn„VWlInyWUœI@WWk@KXU˜n@mnUmU@WœƒmkV@ƒkXašaVaUm‚Ikƒƒ@kaƒX@ƒUm@UKWU@UkJWkXa@IVy@UmIUVU@UJU@WXWmU@™VakaU@@Xm@Vm@wnwV@VL„yV@VakUUa@wUUVmlI@K„UVkUamJk@VU@UmVaƒan_@KmUƒ@@anm@ImWX_WWUk¯ƒ@k@Wƒ_m`@bULUKUnUWWXkKWaVmnU@@b¯UUbVŽ±K@UKUUVa¯UUmJUƒVIXmI@UU@WmVmkUV@b¯w@lmI@W@aƒ@m¯LXbmJVLklWL@V@XXŽmbVVU@@VU²Ul@VlX@bš`Xx›zUmkUVÒlŽ@bXLWxXVlš@V„bkLma@nmVmULVbmVUb@lnzmbUÒVl@°nLV„lJkn@bmJk_ƒVmmkblxÈx@LUb„xVb@V™n@JmLVŽUš@„nV@¦VbnJ@lVVbkx™bm@UxVLV@n`UnVVV„kl°z„xVb@VU@@ÆlXnWm¦nbVK@XVVUVVl@X„KUV@nVL@WnIWŽXLVKVLlxUbVKXVWbn@@UnKVLVb„JšU@aVU°b'],
'encodeOffsets': [[
112354,
30325
]]
}
},
{
'type': 'Feature',
'id': '4304',
'properties': {
'name': '衡阳市',
'cp': [
112.4121,
26.7902
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lšV@XV@„mXVlXL„W‚X@l@bVxn@šŽšUVkn@VJ@I@alU„JXIVm@»‚LXllIXVVU@Kl@VnXKlb@lVbXIVVUšmVVU`@nbl@@lXLVVVKVbnXWJ@VXbWxXb„Ul™VK„¦nLVVUVVbšb„K@U˜LnK@Un@VxlUV`UnnL@VVL@JV@VUnxnKVbV@@VšIVUnJUVUl@nW„XllIUa„KVbÞLV¼²`V@VIUwlaVmXa@IWanK@U@m„kVƒVUVaX@lšnaVLÈ@‚¥@kkJUWJUaƒXkaUm‚wVXJ@_lWUU@¥n_‚KkamUK„™@amKƒnKƒbV£¯W@k„aWan@@UnwlJ@a@—@UUU@W‚wn@Va@km@UanaWa—UVƒUUVU@K@aƒKUI@wƒKUUVm¯LWUXƒ@mak@UK™LWbUKVUkUmVUKƒLkJ@nƒJ@I@mU_UK@VWkUJmUUL@WkI@V±VU°kzU@Wy@kUm@UWU@@nmKUnkJWIk`ƒIUlm™k@mUUkUb±yUX@VUV@bk@WlXL@nVlUl‚k@WI@ŽkLmš@VV@XVmnnVWbnVUblJXkVl‚XXlWXUJk@±™@nXVWVnL@xUVm@Vn@J—„WK@U™V™@UUVUVKUkkxULW`k¦m„@bkJm¦U@ƒmUX@`UImUU`ƒLVbUVUU@LUbmaU@mJU@U™UIƒKmxkLUl'],
'encodeOffsets': [[
114222,
27484
]]
}
},
{
'type': 'Feature',
'id': '4306',
'properties': {
'name': '岳阳市',
'cp': [
113.2361,
29.1357
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@wUklmUUmU@@UVm@wUaV_mmUKmwkIkJmUUnm@™™@UUƒbUKUƒmÛamm¯xVLkbÇƃUƒVUzkVUlƒUUKWLX¦W@ƒVUUUaƒKUbmLKm„@akU@aƒmVaUUVIVWkk@wkƒƒ@@xmLlmÅwmbVlXlÝIWVkK@kkVƒL@VWKU@Ublnaƒƒm@b@bšnW`@XUJk@UUWKƒk@UKƒnn‚@xmLUVm@kbVbV„nV@V„b‚@KnV„LWšXŽÆVĢ¦VblŽš„n„UJWz@ƙVóUVbkV™aÅx@¦lVUbVVknWKƒ„k@ƒwƒK™VU„Å„ƒl@zkb@`m_mJ@xX„mbVbœ@llV@n„@llbXL˜UXalUšl„alVnwnLVKlšVbX@@I„V@blJ@bVL@VVVUXȤ‚VnkVÑXmlbnš‚„VKkÑř@UmaVç@±XUlI„xlV„@VaX¯lUVVUšVJn—V@°°nŽ°„Vxĸł°¦šb²¦lJ@U@aUK@kUm@_m±VIXal@„Kl@„bV@K„K@k„m@UmUUaƒK@_UJƒaXU˜@Xmš_VmUk@WUk›@kU@a@m@UƒaUUU@al@ny‚XXWWwkly@¯n@@bnV@k@mVI‚„œVlUUmlU„JUw„I‚bXƒVaUal@K„b@ƒVKVkXVl@VkUU@ylUœVVaVL'],
'encodeOffsets': [[
116888,
29526
]]
}
},
{
'type': 'Feature',
'id': '4309',
'properties': {
'name': '益阳市',
'cp': [
111.731,
28.3832
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„ŽÆxXL@l‚V„@ĢšVI‚bXKl@nVV@„XVŽ„JlbXalX„W„LVKš„„UVLl@VV„@ôބ@@Wn@lLlK@wnIVJX@VX@lVVUL‚VnkVVnKValUXblKnXl`UbVLÈU@W@IšKV@@bUV@Lš@lƒXV‚@VXXblWnLVblb@JnL„VUn@llb@„ƒx@ÞUV@nU`VÔmlX„mbUKUVUV@LVVUn˜ŽUb@°UXš@U‚VzVxnlVškšVnlVnaWƒ@wnIn`@_la@y„kƃVƒšU„L„xl@„ƒXLlmUUVakU@¥ÆwšblUUaôVšU@ÅXyVImƒ™ƒkUaġ¥ÅUWX™ƒKmU@Lƒa@UmUUƒUalan@VUnK@wm„m‚L@V„lXLVVl@VI@WX_™m@a™¯mKUkwW¥UK@_UWWLUVkUWL@WUIkVƒU@JƒwkLUUmJVI@WkXm@VmkKUIU@mmm_@VUV™@™„kJċwUU@KUWkkW@IWW@km@klwkWVkkU™V¯m@kWLU`mIkmkXm@@`@L@xUKWkU@VL@JUU@mbUKVa¯WVnL@`lXUVkU@xW@UbUWVU@UJ@„lnU@m‚nÈmVƒa@bUL™wUb™@@VkxmUUƒ™UV›K@IƒUƒmk@akm@wmIƒŽkK@b™VWXkm@wULUmm@UVW@Ub„mbkKƒVn„U@Wl„xV„U@UXmWUXmlnbUl¯Lmn'],
'encodeOffsets': [[
113378,
28981
]]
}
},
{
'type': 'Feature',
'id': '4301',
'properties': {
'name': '长沙市',
'cp': [
113.0823,
28.2568
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lVUllXkx@lln@‚XX@JlXXl‚V@LVVČxlIšƒš@VU@Un`nnV@VJlLUnn@lW@XUJnIVVlK„x@I„VlUVJ@XXKlVVUXKVX@`VLX¦lxVŽnLš°‚an@„„‚bkmVaV@XL@U„KlU@llLXUÞJWkUknaÆxnŽ‚knK@w„@l„@xllUXUJVVUb„n@blV@bnƒ‚LnKVa„LVbVV„UX@W¥XKVL„VVklUVy„U„VÈÅlaUK°wnnÜbn‚V„VL„aVVš@šn@VmnVlIlJna„@Valkn@na@amwm@„UXw˜K@aUUVUUaVa—wWK@kU@UaW@kKUUƒƒ@k™W¯XWan@k„™mmÅ@@I@U@KmLkaVUƒKkLWVUƒk@UVmU@am@kkk¥ƒUƒVUK™„maUb@ŽUb™I@aƒKkkWm@W¯K¯b@VmaULVxUXlVk@UxVJVbUb@xULƒ@ULWW—LƒĕmxVVL@šVb™KUwƒaŲWwX@@WƒUWLU@VbkV@aU@@VUnmJ@VUn@VƒLUK@U‚mUIk@UÇmU@@UW@J@LƒbUmVI@aUmW@@bkXUx@lmLUbm@UbkJ@V@XmlUbkKm@ma@kUaVU@aUK@mImJUIkVƒUƒVUakbWwka@UWKkLUamKUXm`Å_U˜ƒULmaU@@lUV@X'],
'encodeOffsets': [[
114582,
28694
]]
}
},
{
'type': 'Feature',
'id': '4302',
'properties': {
'name': '株洲市',
'cp': [
113.5327,
27.0319
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@X‚‚Unw„Ė˜KXXVK„@VK@wVaUaUIVwl@kUVWUwVKnb@U°a°LXŽ‚@Xnll„L@bšJVa@VanbšƒVL„U„V@al@@UV¯ÅÇ@Ummk™w@¯ƒyVwnUVVVUkmWV—nKVUƒa@WXkVKn@lUVU„VVVXIlV°VnI@VlKnV@mwVm@LXKWkU¥wWwƒƒ@k@m„X@KX¯V@VUVa@VnKWkœƒV@VUkm@aWa@wkUWwkmV£VÿXUVL@mVIXaò@nW@ašUš@@am™@aUU„UmXmWUk@ƒƒnUW@_maVm™wUkamaUL@aƒwƒW@akI@UƒxUm@kmKUk™lUŽ@b„zV˜m¯xUVU@ƒXVxm`kÈlxXVW„@¦kVUn@xƒxƒKUwÅKVXUJWnXŽmVUxWL„¦XŽm„mK—bmUUwW@UV@šk@ƒšVLnŽlbLm`@¦VVkX@`WIUŽxVnlb„WVbXIV‚lI@l¦Ç@UKmbk™W@UbUVU„ƒl@n@VmLXb@JWbUnkbVxUJUxWXXlWL@V@V@XXJWx„zUVVVVKnXW`@bkIUl‚„nLVJUbUIWVXlWV@XklVbnn@xlš'],
'encodeOffsets': [[
115774,
28587
]]
}
},
{
'type': 'Feature',
'id': '4308',
'properties': {
'name': '张家界市',
'cp': [
110.5115,
29.328
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@InWVw°wš„@š@šblUœKlUlV„U„@VUUUlW@aöUlUlLÞ@@aVKXwlK@UX@@UlwkƒVkUm@m›@ÅVƒ@akwVaUk›UUlUL¯wƒƒ@UUmƒ@UkƒKƒlw±UULVn@l_XyWwÅ@VUUmJUXU@@mmƒU@kxW@UaUIWbU@@mU@UxƒnUbmKk„WJkUValƒ@aUkUxƒlW_@WUIU@ƒbkKWUJVnUb™bWb„lU@nl›„@XnVmV@n—mWV@LXl@X›JXVmzkJUXmƒ™KULm°Vb@xnVmnUšk@ƒƒ™VƒnnlUb@nm¼m@Ûǃ„Vl@X˜mnm„²ŽmL@x™K@LUl@nULÆx@V@VXVWbXX˜l„@nLlm@bVKœX‚W„L°bnUš@VaVUš@šmšVw„JnwVK°zn@V‚Vb„a„@Ċ¼'],
'encodeOffsets': [[
113288,
30471
]]
}
},
{
'type': 'Feature',
'id': '4313',
'properties': {
'name': '娄底市',
'cp': [
111.6431,
27.7185
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lL„nJ@xln@bnlV„‚„@JœLVUšŽV„nVlw@Uš@VašxVK@a„bnUmÇnV@km@ƒ‚I@VUVVXVaX@@wlVVUkW@_mKXU°‚UbVLnaV@‚V@IUKV@XlVL@w@K@_n@lWlnnJV_XK@l°nšU@WVU@kV@nbVK„V—lƒ@nLlƒ„LXU@ƒlmkw@nW@UKVa¯IVn@@aVUUKl@nXVKVn²a˜ŽXblKnLlmVI@KUU@akLUaVa‚UXm@aƒ@wVUVKnLnWlXl‚n@@U@anUVm@U‚Inm@IUK@UmKVmU_kVUwm@@VmL—K@VƒL™aUaVUUUmKƒ¥ULkšƒVWaXwWa@UXImWUaULUUWKk@WnXbWŽVWnk@UV@bU@@bƒJ@bƒV@XkŽmb™UU`VbkaWzƒ@klU@ƒb@VƒwUL@bV@U`ULVL@VUK@Xm@XWWIUbUxm@@lkkÇwƒVÛÇW@¯Å™UJ@xƒI™xƒ@@VULmKUnUxmKULUUm@@‚ULƒU™JkIWJ@b@LJUW„kJWnUV@nn˜Ü_nJšxU@VbšnUxlškb@lš@'],
'encodeOffsets': [[
113682,
28699
]]
}
},
{
'type': 'Feature',
'id': '4303',
'properties': {
'name': '湘潭市',
'cp': [
112.5439,
27.7075
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Æ`n_VWnLVblKXL@VlbXxlaVb„U„VlUVJnInJ‚@VL@bUVVb@lnbn@lLVank@W@UlIVan@VanK@kVwlW@aX@Vn@bUJVn„a@K‚IX@@VV@nŽVÈl@VJn@VVL„K@UVm@UnIVm@UV@@blUUaV@XK„V@XW@XxƱ„bVxšLUa@™UKWk™@wmmUalk@WXUWkXUVJVaUImKƒVklJ@aX_mWULUUVUƒyXwWI@W@U@UXKWkXWVwU@±_U»ÝKUaƒLVbkJkƒWmXk@UVVŽmIUV™J@UU@UamLmwUVU@mnJ@VUnmV@b@Vm@kkWmXmKULUV@x„Ž@bWnVUbVblK@bVV@LUJknmKkLWa—±bUmULmWk@VLUV@bm@U°JUbVLX@@mlxkn@„WVƒKk„mK@k„'],
'encodeOffsets': [[
114683,
28576
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/jiang_su_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '3209',
'properties': {
'name': '盐城市',
'cp': [
120.2234,
33.5577
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„n@‚°ĀÞ°@¦ULWKkx@bkLWb@lUlVXXJVbƒnUKmxXV@bm@@Xš‚„LޚܦXlVnš‚mzVJ@n@‚²ÞôkƃÞaȰĉ‚wnljÜó„éVÛnĊīČlj‚ĉ@ō@KÞUlU@ƒkklÇÈњÑlġXɛ@UġƒƒaU@U_ƒW@n™@kaUL@VW@kKmkUV@bkbWW@bkzma@ƒJWI@KUKULƒ@U¦™`@XUJ™U@KmXƒw¯KXkmy@aUIWJXXmV@K¯UU@@bVL@¤VLXbV@@JVXVK@„„JVn@bkKmakVVXUVVVlI@`U@nzVVƒb@¤n@@UlKXLVVšI@V@nV@V‚@ÈUx@šóVōšƒkÅWó@mU@bk@Ýwk@WbXxm@@J@zV@kVƒbV‚nLWVUX™WUXUŽWLUŽ@Wl°z@VkxU@UVWIxWJkbƒĬ„nW@@bUl'],
'encodeOffsets': [[
122344,
34504
]]
}
},
{
'type': 'Feature',
'id': '3203',
'properties': {
'name': '徐州市',
'cp': [
117.5208,
34.3268
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XKVX@WnIVx@K°Lnll@@I°K„nVašU°x²mlxš@VanU@aƒk@akmV@@w™@Ua@aUwVwUw@w›@UK@£kaĉlóIÇVkŽ±@@kUKmVkIkxW@Ua¯UUm@UVI@WVI„JV@ƒ@Um@Uana„U@m‚I@J@XV@XaVlkXƒVaUUWLUyVIXmWak@ƒXkJókƒJUL@KWkk@ULU@Wa™lUIkJmI™mk„VbVš@lV°kXUKWKULU„mb@VUlVnƒb@VV@IVKUUmU@ak@@bmV@xklƒUƒU@UKmV@nƒJVbkXƒKUamLUJ¯UUVmI™bVV—Ll`@LƒLU`m@kXUVU@V„lxUK@xkIWbUKƒx@V‚kVVn™b¯@@U™@ƒxk‚mbkLÇK™b™@@XnJ@LmVklƒ@@XƒlUƒVkxƒakVVb@bVnUbU@@x˜VUšVb@š„ŽnIĊ`šXVVôJš_„K@xlU²Klk„U„@VaVVÈm@kVUVmnamUUaVƒXIVJ„@‚ç@¥nkVLn›„@@XVK@VUX@JVUV@UnVJVLUJVLUVlšnI„b‚KnU@m°™VanI@anV‚KVL„an„lK„blš„KÞk@¦@¤@„VKnLVK„L„KVzlWšLX@VmV@VbnU°@Ualk™˜WXLVU„KWkUUWšƒ@£Wa'],
'encodeOffsets': [[
121005,
35213
]]
}
},
{
'type': 'Feature',
'id': '3206',
'properties': {
'name': '南通市',
'cp': [
121.1023,
32.1625
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VJ@bnzWl°L„xnW@LšVVI@Wš_V¥„@VKVL@LXJ„I‚@nbly@aXXla@aVUnllLX@@UVKlbš@@m„XV`V@„bĢ„lkČÇƃȘ¯šwnĕVĉVÿšUƒUĠƒŦğlXÑVǵ@±ōLʵĖ¯lÇbÝÞ¯xk@Çkķé™n¯@ğŽġƴǫ@kVVlUbƒL@xULǂóLUl¤@nkVV°VLkxVb@l™aUXUKWĖklVX@¤UšƒUkb'],
'encodeOffsets': [[
123087,
33385
]]
}
},
{
'type': 'Feature',
'id': '3208',
'properties': {
'name': '淮安市',
'cp': [
118.927,
33.4039
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šnźUôÒɴ胚l¦nĖV‚kbmš„X@xVlVL@xUb@bUJVnUx‚šœ„lKVLÈx‚m„zXV@lW@XV‚b@bȚVxnb‚ƒVIXa°L„aÆVVaXUlK@aXIƄVlXKVUlIXalK@alwXLVK@¥Ý¯¯ÿ@ƒmVk@aX@ƒm„īlaXI‚wXJVUV@lw@U¯yb›UaƒUġUÅaUKVknaġm@kUm@wÆIV±nLÆw„ÇnUUkƒ@ƅÝU¯JÝI¯¦Ul@bƒ@@VVL@l@LƒLÅmƒL@b™@UaVaUWmLUKV¹KƒLWKX¥WI@mXk@UmaUVUU@VmL@W™bkIUWƒUmVóIkbmm™@UbVLUxmJkU@bkJWbnXU`Wz™KUÞÈlVb™Lmx@„kè@Æ'],
'encodeOffsets': [[
121062,
33975
]]
}
},
{
'type': 'Feature',
'id': '3205',
'properties': {
'name': '苏州市',
'cp': [
120.6519,
31.3989
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôèĊVnX°¤²„lxƒÈÜ@²x@J@b@X‚`nIUƙUUV@bl@VVnL@L@xƒJ@X@blJXnW@@`XbW„kVƒ@UbVxƒXUxkV@LóxVbUVWš²šVJĸklUǬ@ĢƳĠ°@šmƒī°»ÈÇ¥ULUU±a@bU@¯ƒU@KnImUVWUk™mXUVU@lIVaUUVWKUbUkWKU¥n£WakJUkUL›K¯L™KkƒVIn@VaUƒVUUƒ›UkVk@ƒU@amUkJƒ@UUlwX¥W@@UkVmk@JUakL›@kk¯ÝmJUn@nmVXlmbVVkn@„UJ@±WUxV¯a¯KōbżÇxUxƒšUUlWL'],
'encodeOffsets': [[
122794,
31917
]]
}
},
{
'type': 'Feature',
'id': '3213',
'properties': {
'name': '宿迁市',
'cp': [
118.5535,
33.7775
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XbWnUJVzXKVVUbW„klUWbU@@W@IJ@nƒVmbVbn@@V@„UŽƒIUJ@XUJ@VVn°VVbX@lwlJnUVL@l²@lÈUôJĊklb@¤VLœ@@xVxUxVx@bVbš@@xU@ln„mnX˜mXLVmV@X@lxVnVJôL„LXa‚x@b„@@KVL@bn@@m@™@alLUUVaU¥nIV±‚I@mXI@aWWXU@LlUXWW_XWmaUwǙ@aaWUX@@kWUƒynÇwUKkL›ƒ™VwUmVI@aVa@wUKUk@wƒWn™laUmĕk¥„™ɳçóÑŹV™mmzkVmm@a@Ióƒk@@LWU@`—„WbXLWlkImJVn@`nXVbXŽmL@Vn@‚l@nUVl°Xx°U@LVĠ@z°˜@¦UV@Xn@VJmV'],
'encodeOffsets': [[
121005,
34560
]]
}
},
{
'type': 'Feature',
'id': '3207',
'properties': {
'name': '连云港市',
'cp': [
119.1248,
34.552
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@‚lzXxmÆV„„@@¦„@l`XnlKšXXm‚KnLla„b„@„xmbm@kL@V@Vl@@VUXšJX„mbš@@„°Æ@èÈzlW°XĢJlÈ`lInbšWV_@mš™@UUķnƒôw°ÆmnaVƒVÛVmĸ»Ģw±Ý@@mUIny™UmWkۥݙƒK™@Wn@@aWUnwVL„mUaWIUWVk@kkJUVWLUkŃWJ@bkLWVUbÅUƒb¯KWbUJ„WXX`WXkV@KWVXX@bWJ@nJU²mJV¦UbVVkK@b@š@nm@@aUK@Lƒ@@awWbƒKóKUIUmkwW@U@UnWK—nmWƒn@b„l@bmVUb™@kw±n¯w™VUb'],
'encodeOffsets': [[
121253,
35264
]]
}
},
{
'type': 'Feature',
'id': '3210',
'properties': {
'name': '扬州市',
'cp': [
119.4653,
32.8162
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VUXblVVV„b@xV@kz„V@l‚wVLUbVV@VU@VbUbl‚b@nkĶ°IÞV@Ɔ„VlmVƒÈÅxmKU²ÅJ@xVn@lĢnmbUlVLÆbĢV„V‚bœV‚aXk‚@VXKVVWšXVWXUmKU„aWaU@™¥@£XW‚UUV@@ynam_VWkUVUna@ÆV@mnkWmXkWU„W@k„@@akklƒlWUI@UnKl¥™I@VVma@a@I@U@a@anK@UmK@ÅVUnJl™kI@aVwka@mVIUW@UWL@WÅbmIƒƒULka™UWƒUxkLUKWlXL@VƒImƒÅVƒU™mĉL™Uól¯I±l@ÒUbVbUVVXUJUnVV@lnbl@'],
'encodeOffsets': [[
121928,
33244
]]
}
},
{
'type': 'Feature',
'id': '3201',
'properties': {
'name': '南京市',
'cp': [
118.8062,
31.9208
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@k@ma@kUUVmVIUWVUUaVa@Ѳk°Jôk@Wmk¯KmX¯aUakKƒƒWU„@XU‚LXaV@@mUaVUUl@VmkaUXm@ƒWUUna°IlmV™m™IUW‚@Uk@@aV@VVX@„V‚I°»nm„U@VKVan@m»UaU@U_@WlIUa™aVaUala@¯n@‚ƒkaUkUUWKU@mwkUUmmL@K@ƒLmUUVƒKƒVÅImU—JƒƒVkVVLšèVLVU@W„L„V„š@nVÜULVŽUL@bW@XbWbkJƒUUVUxVXmVk@WUUkVmIƒV@„nbnVWbƒJU„kUULƒa@Jma@XkK@VVL@L@JƒLUVU@V¼ƒnXlƒbm@kbUKmn@lVb@VXXV‚UV@b@LVbÆxXbl@@lV@U„VV@XVK²VlIš`„UbVbUlVVn@WXn@@VUV@„@KmbVLXқLkKƒV@nX@VVUV@b™nVllbšmnb„IWVXU@`lLlknVnmlLlbUmVInK°nUƒU@l@VU@Vn@„ƒ@alI„`VIXaVaVa'],
'encodeOffsets': [[
121928,
33244
]]
}
},
{
'type': 'Feature',
'id': '3212',
'properties': {
'name': '泰州市',
'cp': [
120.0586,
32.5525
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lUU@@y@In@WwXal@Þxl@@anVô@ÆX„lŎ™ôU@™Vw@ÇUU@@m@U™JUUWKkL@Vm@@£„aUUmyV@@_kJUUVUUWlUnblL@aUmƒI@ƒULUW@IU@WaUK@£UK@aV@°V@LnUWWXIla„VV™@£UWlkXĕVLVWšb@kUalwUKU¯lU@mk£VôKȁVK@w„KVaUkķlUI±™ğ¥ÝUŹš™Ž¯ôm¦ƒĸ™‚@XXK@VVXUJ@nlbUx@blJkšmIUV@ÆnL@VmL@b@b@V@J@bnb‚U@UšJk¦mL@VVJkXk„ll@bƒ@@lƒXXVWlXnml@nÅU@ŽmbUVlVUXn`mb@zU@V‚VWX@¤š¦V@Xb'],
'encodeOffsets': [[
122592,
34015
]]
}
},
{
'type': 'Feature',
'id': '3202',
'properties': {
'name': '无锡市',
'cp': [
120.3442,
31.5527
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nLƒÒlxUVkL™am@™ƒkVWUULUxVVVbUV@bVLU‚nnź™ÞVĠ¦X™VUUaôw@KlUVw„WUwVa„@lUXƒWa@_X@WmkI@a@W„I@w@KmKUUk@@aVUšVVÅmJ_@W@a@I±wÛ@ƑÇkw±ƒ¯£mWĉUóçƒK¯VkUWK@XkV¯UWabƒmUa™UUb™lln@b@xƒbXŽWX`@„VxUblL@bn@Vb@`m@XbWnn@l¤„n@xnVlU„™VLÆWœkV@VbÞJ‚_nƒl@nKVU@aU™U@mVk°WVLUV¯bVXŽ˜bXlVn@VmL@x—V@bl„š‚@œnW@X@VVJ@²VJVU'],
'encodeOffsets': [[
123064,
32513
]]
}
},
{
'type': 'Feature',
'id': '3204',
'properties': {
'name': '常州市',
'cp': [
119.4543,
31.5582
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„L˜ŽnxUbVVƒL@xnnW‚nn@VVXn@‚yœImx„„°ƒšL„a‚¥n@VkšKVw„W@nX„VJ@b‚@UVn„ƒ@UnUV@L‚b@`VLklVÞn„Æ@VaXLl™ÈJšmmVUK@aVUUaUUVwVKXVlUš„n@šblKVUkw„ÑmKUVUI@±UI@U@WmX@›™kƒ@a˜U@wnK@UUmWk—aWU°aVUUK¯XUl@nVŽVš@bUVmLk@m„`ÝIUaU@›lÅXUKƒškVmU@wƒmk£m@XmWan@@_Uam@@akKVaUw@ƒW_XW„a@w@akmm@mL@UJmnUKƒ@@XnJWLkKUb@„Vxk„WƒL—aWVUImVULUK@L@lkLVVVllb„m@@°kbVbUbšbVbkJ@XV`V@Vbn¼'],
'encodeOffsets': [[
122097,
32389
]]
}
},
{
'type': 'Feature',
'id': '3211',
'properties': {
'name': '镇江市',
'cp': [
119.4763,
31.9702
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šVĊKšn„VÆUn„„J@UWKXkVLlKVwX„šVlbVK„„nJÆaš„ķn¥°óÇIkšWKUbÅ@mƒUÝlkUK@_a@KVUVm„@mƒVU@@aUIWƒ@mƒXUx™LUlm@¦ƒb™K¯„ƒƒnw›Jzm@UW@UmmXmm@w„KUUVamw—ƒKm@UbUL@ŽƒVmn¯¼JƒUW@UUU@@bl@@VŽVXšJšnnU‚‚k¯JmbVV„Xn@VWlbUnk@VVUŽVb@nU@WbKWVƒ@XV„„lLVb°bnW°Lnl@X'],
'encodeOffsets': [[
122097,
32997
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/jiang_xi_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '3607',
'properties': {
'name': '赣州市',
'cp': [
115.2795,
25.8124
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„`l@Èbln„@„KVLl@„V@bȎlnšKXkVlVL@„lJnb„¦VKVVnX„W@w°@VU„mln„UV`šU„bVUV@„xnKVI°KXKVkVL@al@Xa„LVlULWV™VVL@b„x@VXVmb@x@V™VV@nn¤„šlb°b°KXXWbX`lbXx‚z@x„`VIVUnK„L‚x„WXLVKVbVLVU@wnW°b„@nalX„‚mXVJn@U²mKkVl„U@@xlnœaVmlKnœ@JVLlŽnVššl@XXÆèVlUX@xVLXVšb°W@wnUWmXk@K‚LVwUmUkUKUw@wVaVK@kƒ@WnkUKWkwlmXL@KVUlLVKXmWU„L@ašL@malaVk@aa‚ašƒnXš@VVUblb„Jn˜ƒXa„V‚wn£„K@UWmUk@ƒUaWIV@b™JW@KmmU@aUUUkmKkVKlUU™nKVU„lVaV£Å¥WUUK@UkUUw@m@mIkƒƒUUWƒLƒK¯Uw°¯@wUKUbƒKmƒ@kkKUL@UUKV¥U@manw@k@U@Wm@@U@Wwkm„wWaUU@UUmV¯kwƒ@@kmƒkKkUW@UK@ÅV@XWWkXa@Ul@Va@KVaUUU@ƒaXwla@UkVWaXk@K@lmkUmV@Vmbk@ƒ»XIƒ¥VUkƒVUVU@anKVUƒKUalU@wX@˜™@a@K—@ÝwƒL@ŽUnÇlUIkJmn@ŽƒbVVb@VmnkLƒV¯U@ƒ±l—IWmƒ@kaUI@aÇU@K@KUIkbWbƒJUIUyƒX¯ƒUbU@méUUmUk„WK—xWIkJm@V¥U_UJUwmVkšƒUU@ƒƒƒ@knƒwm@UmkWJkL@n@VW@@‚U@knm@kUml@xÅxƒ@@XUJlb„@VX„JVxn@lbV„@lULnV@VlnV@bWV@bXL@lVLVb„V@blLn@Vl„K@xln@bX@lašLVbnKUVVb„KlXVVkxƒV@nnVUb‚lV@@z—°WWkbƒIk‚WL@LUJ@bUI@b™`@UmI@mkK¯XW™™mUV¯@UUVUUam@@VULWUJƒIm`IUJ›KUkW@Uxn‚WbnnmlXbmIUVmV@Vnb@V™LUKWLnÒVVV@V„UL@„kJUV@bƒÈ@ŽšV°šŽ@XVV@l@xUz'],
'encodeOffsets': [[
116753,
26596
]]
}
},
{
'type': 'Feature',
'id': '3608',
'properties': {
'name': '吉安市',
'cp': [
114.884,
26.9659
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lxnb@V@bV@ln@‚n„‚lInš@blVXK‚nk¼@VUKWL@b™L@`UXU`ƒ@V¦XLĠ@lJ„¦@„nV@l°nn@‚mVXnaš@nb‚K„n@l„IVƒš@VanJ@_lKVVnš„L@L‚K@Vn@VbšUVanKlLnbnJVbšnWVnVVanI@‚Vb@L„bVKVanXVbVJVU@aXLll„bôlƼXxVLVK@Xn@ƒxnVVVmb@LnVVKVXV@@mnaVXUVnV˜K@_UaUmšwnKV_‚anKVLš»„K@¯ÝU@›™U@kWlUn™lknK‚VnaUkma@ƒUIUwl»Åw@ƒVwV@n™‚n@ÈXlKVmna@kVw@anm‚@n_WWk@™™mUkUK@Im›kLUn›bkm@wV@kƒlUnLV±m@UInWƒkWmbƒ@¯amX@xUVUKUaULWKƒXwƒKmLUVUJƒ_@wyWwkaW_XaWW¯L¯akaƒ™m£@mUUš@U@wnaWU@Uƒw@aUKšUXUVKUkƒKWbk@@bUKUlWL¯LUJmLƒwU@UVƒa™VU_ƒVkmƒnUV¯@@xƒXmWUUULƒ¥makI@ƒUKUkWl™LkmǍ@aƒUk@UKƒLƒ@kmÇak@ƒ_VlkL@`lbnšlLVanLnbmVÆln@škJlbknmKUbÝmmwULUK@bkLWKULUUma@Kk@UV@L@llbVzšxUxnl@bVLmŽšŽ@IVJXœVlƒLV`@bn²@J™@™V@Xmbñ@WbUJ@bm@@LUĬU‚„¦lV@xXb@blnUV'],
'encodeOffsets': [[
116652,
27608
]]
}
},
{
'type': 'Feature',
'id': '3611',
'properties': {
'name': '上饶市',
'cp': [
117.8613,
28.7292
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„„@„V‚š„„I°`nm¤²@bVJUVVXUl@Vmb@xV@XbmVVœ@lkLmbn`VbnU‚@Va„UnbVllUXV„a@w°VW@_VWšLššnVlbšLVbnl„KšnVK@IUW@_@am@™‚ÑUólK@U@WU@VwU@UI@aUU‚aXƒƒ@kwmJV@yX@k‚anƒƒ@mkwVmmI@aUU@aUUW@kVkV@@anKš»„XVWnIVUl`@_„W@wlUœV@UWKnU‚bnŽ°InJl„UV@VnI‚b„Wn@VklL@l@Vn²m@U`kI@bWJƒnV@°VXnJm„XVmx@VVL@bkLmWULUmU@ƒbWXb@llnX@‚xkxVV„nVV@¤nL‚nVxnJVXX@˜ššbn`VI„b„@„blmlLnaV@„blWXnlUnbl@„ƒšKVanUVmm_XK@kWWnašU@UnaWUXa›ƒXamUkKmXUWƒLX¯WakKm™nUWwXa@KW_„aXWW_@WnIVl@XU‚LnWVknK@ImyUUÆbXK„Û@W@IÆUnƒVÝlkVK@mUIVwkUVaUm@aVIVyXIƒaÈwmmk@UnanVUmÅaó»lwšW@kkUVmUK@WKLƒUmWULkamK™Lk@Wa@wk@UU@U@mbUIWVKUXWmkUmVm›U@LkakKƒw@w@U™¯ƒ‚ƒUUn¯l@bmn@xkJWxkL@VkI@mƒkmJUI@V@b@VVxnbWlkÈkVƒLƒbkKmVƒL@V@²nxW‚kLUL@xlKVx„bXmVnšWJ@ޙ°@n™xUKUw±`UImVmnU@kalm@akwƒU@UUJmxU@@Uƒ@kU@Um@@Kn™ƒVm@k™KmkU@@WUnkLWxkVUwmKmLkU™bmKUbVŽ@xUnkJ@n±ŽšUxVXUšWJ@LUb™lUnm@ƒW@nknUJUVm@kXllknVbÆK„VVbš¼V„@šUl'],
'encodeOffsets': [[
119194,
29751
]]
}
},
{
'type': 'Feature',
'id': '3604',
'properties': {
'name': '九江市',
'cp': [
115.4224,
29.3774
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@WUkVUkmaƒVUb@mVUam_nalK@kU›nUWaU@@wna@UVkUWVUUI@a‚±n£m¯_ƒJ™ƒU@ƒƒƒĉ¦Ul@UV™Km™mLlm@ğ¹m`Uk¯@@UVK¯™@UUK@amkmKkVVUa@UkUƒKƒŽUa™L@VVXUJ™@ƒnƒ@™š™WUbƒnVb¯V@LÅlÝIƒJÅkݙm@Ua™WUU@UmUXmmwVUUKWUX±mUam@kWƒzUaVmÇw@aÅLmKXƒ‚UWKkL@W¯IƒwVw™lkUƒJ@Um@ÛÈWŽKUxWkƒaUU@KkLVl@„UKUX±KUb@nVVUbUVmaUlUL@„ƒaUL@‚@nUlWzX`@„V@lx²„@Vlb@bšVÞ@°nl@UxVL@lUbVV@n²xVUVmnUÞb‚a„J@IšV°xnbl@nbÆ@VwnK@VnXlK°xnUlVX„V@Vl@L@lk@W_XK@KƒkWxUL@J„nVx@aX@VVUa˜IXlmL@bVVX@VbnK‚a²XVWƒk°a„@UnV¤nbmLmW@XbmJUbVL„aÞK„L@K@U@aVKlbV@nXlJœxV@VnšŽVȚ„ÞKôbźĕČmV@ĊšŽ²xÆIšV@Þ¦ĸ¼ÞVlŽVÞnxln°Jœk‚LXWVUVUVwnJVI@yn@lXlaXmWI@w—»ma@UmK@akKkXmW@_kaWakKWk@@K@IšWƒkUa„ƒ'],
'encodeOffsets': [[
119487,
30319
]]
}
},
{
'type': 'Feature',
'id': '3610',
'properties': {
'name': '抚州市',
'cp': [
116.4441,
27.4933
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°V°UnÜ@n@lnLlV@bšV°L„lnLllVzVVXlV„V@@L@xX@WlX„m@UVƒL@V@n„°škVmVUnKlaXxVbšnlU@lVVnaVI@aX@V„šJš@V„@b„b@šVbš‚@X@lUL@Ž@VlIVm@wUVanLšalVnKnLVxlUXwlKVm@k@Una@mWIXKWUÛVƒk@a@UVWn@@kl@@W„XlW@_Um@UVK@a„LnalInWV@@xnI@¥‚K„—šm@kKmƒnk@mlI„¤laXbVblknV@U‚KXVlUXa‚@@Unw@±mU@ak_±a@ƒUJUIƒVKW_Xa@aWU™šK@mmUVa@IXa@UWmšannlmX¯WKXwVUVwƒ@XUlK@klJXa@kƒkmm@Uwƒw@¯ƒW¯kw@WmbULƒaUUU@mVUU™WmkUb™KmkkK@aƒkUƒ¯¥Uƒl—ƒm@akU@mš@KVIVV@KUkUVUkaƒUWb—„mƒIkaVaUU™@mW™„b‚b@bUlkb‚b@n™K@bƒKXVWnULkKUV@LWKknlxXŽVLml@X„Ž@lULUb@xVxVLVlVnUxK@LWlXnmV@x¯X™aWUUK@wVWUkÅçm`@mn@bUx@lmbUnkLÇWm@mšU@Ux@„Æxk¼VxVJ@„nbVlmbUmLklmškVlX@‚VœšV@°Þ'],
'encodeOffsets': [[
118508,
28396
]]
}
},
{
'type': 'Feature',
'id': '3609',
'properties': {
'name': '宜春市',
'cp': [
115.0159,
28.3228
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@VlbnK@b@JšLlUnx±ĀXxÆW„X@lš@V„@@blJ@nX@˜xUbVVUbVV@b—VmnmJœ„@bmbm@klUbƒLmbœš@lVb@xUX@bVVVbV¤@LVV„bXlVw‚LXÜÇn@@V„IlVškUx„x°J@XlKXLV„‚WnLÆK@bÈxUnVb„ylXn@Vbn‚W²XV‚LVVUŽnxWnnV@VVVšXVbn@ޚÆl„IÞJÆk@K°UUa„mVa@UUUš»@wV@VƒkkUKUVW£U@UmW@@aXkVUnVlKVV„UUkVmU™@kWaUanU„VVamIX¥W@@aUaUVW@_mW@UnIVVn@VbVm@bVL@anKVUkƒWK„UXV‚Ikx‚@na„bVK„b@nVJ„_V›@Vw„‚VUVVXUlUUaV@X@VblašbnKlkVaXaƒ¯@m@U„KVUn@WƒXkW@@w@KU@UƒWkUUUykkmKƒk¯K™U@akUmK@k@mmÛ¯V¯U@‚ƒL™¼UKmLbU`mL™xVnVb@`—LmUVUUWmb@nU@UWULmU@KnaUUmU„wmJ¯IUJWIkVkaWVUIUlWaUIUVkKmbUIƒÒlVUnnŽ@VlLUJ@bUX¯@ƒaWVUKUXƒKUbm@UwKWa@a@VkUWn™@Uak@mbX„WJXbm@mL—aWVk@™wƒL@WmanU@knwWmkaWL—KWUXaƒU@¥l„UVVVbnwƒ¥nKV™»@aUk@a@UƒJ@kƒmLma™@mbUWnm@ULǺ@LXnmxUŽm@UbkbW@@akLmWk@UXmJmUkV@VUXVlULmKUxkL@lmXnJ@X‚l°Vnb@bU@WbKUX@VmKUX'],
'encodeOffsets': [[
116652,
28666
]]
}
},
{
'type': 'Feature',
'id': '3601',
'properties': {
'name': '南昌市',
'cp': [
116.0046,
28.6633
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šXš™„@„mš@VIUW@UšKVb„„LlV@VVbUŽlUnLnl@bVL@V°šUL@V°@Vln_Ġºn@‚knKnššLVU@VkĊ¥Vk@™Uƒ™»UaƒUÅLUalmkklWn@VUVIlm@m„Xn@VmškVa@KXIV™UWVw‚™²@m@U@VK@k@W™Ua@™ƒa@aUƒ™@™IUƒW@@bUJmbUU@kkV™mUaWwkbmLUVUn™lWbUbklmL™akbUaW@U@VbkVWVUUUVƒUx@‚Uœƒ`UI@mƒaULƒamb@lwJWUƒVXLl„UVmL@bUK@aUnUam@UUmJ@VnX@`UXVŽVb@bX@W¦nJUbƒUmVVbXb@lVšUnVlƒVUUkLmUUVWl@bX@VnV@X¤VUVLllU„U@@x™¼VV@V'],
'encodeOffsets': [[
118249,
29700
]]
}
},
{
'type': 'Feature',
'id': '3602',
'properties': {
'name': '景德镇市',
'cp': [
117.334,
29.3225
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VVX@Vbmz„xUlU@mbmL@V²xVbUVVblbX@šVškVykValKVI@bn@n`lVWnX@l„L@™WKnƒVIVa@¯nK@alIXJVIVWUw‚ƒn@nU˜„nK@alI@a@anKm_™a—™W@UWmIUwmmK@£UUƒmUUlwwW@km@kWaX„aV@VnVKnXlK@aUK@UnwWUnƒmIUW@¯mU„XI@alJV_n@m±@U@kkKUlm@ƒXamJ@UVUkƒmI¯JmamVXL@V›UkV@xƒX@`k_UVmJUXƒW™¼mL@bU@UllX@VV@bVV@bnJUnlx@n„Žm„b@lWŽ@zU‚nIlx„@W„bVV@bVJV@UxV@@X@VkLVôÒ‚šn@@b@`VX@J'],
'encodeOffsets': [[
119903,
30409
]]
}
},
{
'type': 'Feature',
'id': '3603',
'properties': {
'name': '萍乡市',
'cp': [
113.9282,
27.4823
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VWnL@UVW‚LXaV@@ama¯Uk@WmInW@klKVwnLVKUkVW@UlUnVnIVWl@nXlK@bX@laVan@VnwWm@KȹVK¯m@kmU@ƒƒ¥kIğ@WKU¥„@V_VW@_šK@aXKVL@Ul»mWLkU@am™kJƒm@kmU@@a@UmakwU@›„Xlƒ@VXk`UIW¼kWWX@‚œ@l‚xV¦XlW@Ubn„@ŽmUkL@UmJ¯UkUWVUaƒUlm@UXWl„nUJ@LmLU˜nXll@bUVUUmVUn„Ž@¦šxlŽnn@VÆÈU°kbV„VxllnL@VnVVUl@V„„anL'],
'encodeOffsets': [[
116652,
28666
]]
}
},
{
'type': 'Feature',
'id': '3606',
'properties': {
'name': '鹰潭市',
'cp': [
117.0813,
28.2349
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@XV@nlšL@lUnš„mŽ@Ln@@VlV„@@VV@nwVI@V„Vlx@bknlbV@nmnUVJ‚_²‚VxVLšw@mš¯@ÝXIm™nUWƒaUwkL@wVKlKXmw@±@U„KnUlL„a„KlUlÇXkmaUw@U@a@Uƒ™UkwUJ@zWJ™w@WbkVWUL@VmUklUaWakbƒ£kJ@nmln„lL@Ž™nƒ˜L@¦mJ@wU@mXkJmbƒK@bUL@VVn@`kXƒW@Xk@@lm@UX@V@b„lÜUXVWLXJ@nmb@V@l'],
'encodeOffsets': [[
119599,
29025
]]
}
},
{
'type': 'Feature',
'id': '3605',
'properties': {
'name': '新余市',
'cp': [
114.95,
27.8174
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@m@@WULUKWwÅ»ókƒakkWK@bUVUIUamWUbULƒa@KUa@mJUbmUXU™mUamImakKmLUb™VUam@@UL@KƒKm™UUkL@`mIUb™@U„@V@bVl@bš¼UŽmL„¦mxUaUUƒVkŽ@¦„VWbXV˜LXKlbXnmx@lmVnb@X„Kšxl@XU˜bnKn@WaXIWƒnal@Vbš@XmlV@U@bXb‚LVxn@Va„LVWVLXU„b°@VW@aVIkK@UmVmkU„ÑVJnalLVUVJXbVkVJXUlblUXJVI°JnI'],
'encodeOffsets': [[
118182,
28542
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/ji_lin_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '2224',
'properties': {
'name': '延边朝鲜族自治州',
'cp': [
129.397,
43.2587
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Wxĵ„mš@„ó¤VX@@xܼƨš²xWxƒV„V@„XVƒ„„„ƒbWšXllaÞU°Ċ„@ô¼„LôÝWanV¥ƒÑnĉ°¥šÅX¥°¯@w°w@»°k£°mÈŹ‚mÈbƃŎ¦„K°z@Žkxl¦UbU¤šššklV„KŤÞȰ@@bšV@nVVUlÞ¦lUllœVlU°ÑU¯Vƒ°w„bXxl@VŽ²„˜@n„ô¼ƒó°™kmVk²ĕ‚w@wV™ÞÞ@@Ġƒö»˜¯œ@‚„šbnb°mÞ¯°V°„ÈJmX¥mam™UřƒUƒlaU¯™ƒ@w™Kk—l±n@@wƒkÝVUUl±¯I¯b™a™lƒ@™kLmakbƒ@ġƒŹé°™Þb°šékƒƒLm™„wX™‚aÅb@bVlƒbVb—ÒVbUb›UUanwƒakbVŽUV›ak„¯„UŽƒLmxV°UxnôŻX@J„Xkl‚bkbĉaƒbƒWU„ƒ@ƒk„WUU¯@@klmƒ@@™Å@aƒwWXlKkI@WbUaVIUanUƒƒ@ĕƒ¯K™„mUnWUwm@£ċèkUmbUmm@@nkJUalwk@@nmWUan_óaWmnw±KœIƒwl@UmƒI@an@@mlUÅmV_™KUkƒ@U`@_ƒKUmU™@U¯™mmb¯@kb™ImV¯ƒƒLkbƒKƒƒÛ@ÇnɱJóaÝĢkb@„›x—ÒÇllœ@‚Ž²V‚„ÆUVV„UÇ°X„óxlV¯„lV@bƒV@n—x›@—¤@„șŎnxV¼knšJ‚nšKX°˜¦UlnVbUbÆVnÞWVX¦llšb@l°œVJôÒnLVbšbXŽ'],
'encodeOffsets': [[
131086,
44798
]]
}
},
{
'type': 'Feature',
'id': '2202',
'properties': {
'name': '吉林市',
'cp': [
126.8372,
43.6047
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôl‚zšaÈV°„šK@„mŽ—LWl™nšVxUV‚È@ŽÝĬUÈn‚ôLša‚„²VmĀkV@„ĠĊnU@b„V@b˜@nl°UVnÞaôJ@bš™V„¦mlkššbmVXx¯@Vxm„nbƒ„šbÈK‚V@bÈL„wĠyônšmnbÜ@nn„V˜x@n²K‚„„J@k„al@nxÞU„Lź±Vwkw¯LWWUš™kŎīVwƒw„°y„Vĕ°wÈVlkÛ»@wW@Uô£@ƒn™ĶƒXwW™aUamKóÑUI¯›@k™akkW¥XUmÝÅUVaUa‚mVk—¥W¯™Lm™IlmU»mwȚō@ƒ˜£kJUÇk@am¯y¯UVwƒa@wġx¦ƒKƒƒ¯X°Ċ¯¦U°ċWULÅa±b¯@UkÅWmVƒ™ƒkIUlóŽċ¹™`óIƒlX„WŽXxmbUƒLݏƒbƧ@ƒx¯bƒÈ—l@xƒš¯zƒaݤ@nšm„VWb²bmn¯J¯Ò@n„š'],
'encodeOffsets': [[
128701,
44303
]]
}
},
{
'type': 'Feature',
'id': '2208',
'properties': {
'name': '白城市',
'cp': [
123.0029,
45.2637
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ó™ǩŁ@WlwUaƑwÛÅÇéĉamKƒōÇ@Iƒ™ôġVƒȁÑŹçƒ™ÝUƧċĉwóóÝ@Ƒ»ğL¯ll²@ƆÅV@¦m‚Åb@nmlU²VxšlUn™@VbnW„bÇbk҃š„n@èlnlšU҄Ž°Lšx@¼ĉb@҄šUŽċxՃènLVxƒÒƒbÅJ±a@_ÅJÅnƒŽVb„Kl„nUÜĊ@„Uš™xXVÆn„mšVššJÞ¯V™ĠwšƒXw°xWL„x„KV¦ôU„wVÝǬóÞޙ¼‚‚„ÞkŽVôȘxބU„lVn¦ÞšĊa°w„b°@šbÆw„lŤL²`„z°@V@@™nJVnl@@¥nUmmn„@mwnmmUnk@mlwUaƒLnƒ›wn¯°anƒWakI„ƒÇmXwÆamUXUlJXa‚UUklKUknmÞV@‚K@VWÞ@VkUwVƒ'],
'encodeOffsets': [[
127350,
46553
]]
}
},
{
'type': 'Feature',
'id': '2207',
'properties': {
'name': '松原市',
'cp': [
124.0906,
44.7198
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„šźèȂÒU„óĢ„š@JŎȄ‚‚LnŽĊbÈêÜƃxVbkx@XǪłôš„kÞ`„šW„b@n°ašbšKšnVw°`š_X`W„š¦„ĊIkmVšakw‚K„x°UÞb„U@lšƒl@°¦œVW„šaÞbšxÞI@mVI@ƒVkŚUWK„¥nL‚a@ƒ„@ȍ„@°ƒÆ@nU@KÞalkUwVékUWw„™kU›VkkƒJk¯@»ókƒV¯ÆÇI@bĉô¯@™ķw¯nmmÅL¯wƒVƒUÞy@UówÇLkmm@@UóxkkĉmL¯wVwkWWX™mLõm@kűV_ƒƒô»ÛƒÆ¯@™Va™VšaĠVlmğwķUóÝƽ£ÇJkbǫaƽLW@nxݤkzƒy¯XɅm@VšôÇX¯Ė¯ºÝnUŽnLVlUÔmV'],
'encodeOffsets': [[
126068,
45580
]]
}
},
{
'type': 'Feature',
'id': '2201',
'properties': {
'name': '长春市',
'cp': [
125.8154,
44.2584
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„U°xÆKnn°mĸxš°@Ċó@aÈJ°Å„Uôl@¼l°„IllœUlVƒšXxlVUêVxkllnÈUVll@Vx²IÞ¤VUlVnIôlރlwô_„›„bVaĶLXÅÞÇ@K˜¯@wÛaƒçn¥š¯WXyW¯XwƒUmmÛ@ma™nómğzƒxÇK@aUÇL™a„ƒmanƒUw°@WwnU™al™nkƒ¥šU™@aóIÝbUm¯Vmk—@@aƒU@amVğĉ@ƒlUnÿ±Uƒ™bóKmVÇÞī@ÇVUUw‚™šmXk˜Kn@ƒ™L¯ƒÇU™byókōè@b‚n@lÝX@x¯ô@ƙUV_maXm@aóƒJWxnX@ŽVVnĖVnUJ@nōÆǼV¼kxƒLklÝw@xƒx@zV`ÅbmxU±xU„nnm‚kn‚ŽğU™bUŽ‚šUb@šÅ°Ü„󼄄U`Ʋ@lön‚KšnXWlXUx°xnKĊllôw@Vn@lnÈKôx@VÝz„V'],
'encodeOffsets': [[
128262,
45940
]]
}
},
{
'type': 'Feature',
'id': '2206',
'properties': {
'name': '白山市',
'cp': [
127.2217,
42.0941
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ušl¦kÒÆ°„IlÒU¤ôz„¼lJš„U„n‚ÆXVl°@²aÆbVKČXV¯°¥¯ĉ°W„„„L‚¥Ģw@x„bUx°V°zn‚‚b@ÈlVŽlIœ@˜w@m„U@akU°ƒkUôwWƒÈ¯VUƒVUƒÅ±U›@kÈk˜Ñœw@ƒlaÞġƒUÞ£@ƅ‚KnÑĢ¯@W‚aUaVUVkkw@a¯@¯™Ý™ƒVXnW@@WkXmK@xkKUb@bW@Uw¯„mmb@WKUbmUbUaWbƒJĉIVW@I—l±LkšmU™bUm™@ƒnkKWa¯n™@„`Ubma™„ĉL@bƚ—@W`ƒL@n¯‚Xb‚@kb@x™Lƒ„™@V‚kL±™™mlUIU¥mL@lÅx@_laƒƒ@U—aƒV@kmmƒK„£ƒƒLƒƒmKUnÅKVbmXVlèĉUUbml„ĢŤƒIlŽ¯bǦœl‚@ô¼Ģ„@x°„l¤„n„a„l@x™b'],
'encodeOffsets': [[
129567,
43262
]]
}
},
{
'type': 'Feature',
'id': '2205',
'properties': {
'name': '通化市',
'cp': [
125.9583,
41.8579
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÆlXnĠxĢ°lÈ°š„K„°kXm‚@¦Vbk„ŤJšnݤk„VÞVVkȄb°y„™@w˜k„Ç°a„wƨ@„aސ„K‚VnaWwXWƒ„kôJš_ČºôVkƒ»óyV£kуJůlÑk¥V™ša@wƒkƒbƒmk£¯ƒ@wġƒó»@›kÈ¥°ak„JÆ£ƒġnkVaĊVkçWUnUaÆLVmnL„„‚KU™±@—„m@a¯U„bmV¯m@_ƒK™™U™ƒaƒÅ™Wó¹ƒ@UanmWak@@wmI@y™@mk„JVa™@UaƒIkJ@n™@Um±kkxƒm™Ik„ƒbÇm@Ž°bXn„V@Ž°ÈmlÞ¼¯XVº¯Lm„kWWXLmVVlknƒ@@lnWƙ„Vxbmšnšm„¯lÝaVȁè@¼V„„b™„ÆŽ°ÞUVšJ„„kx›I—xƒƒƒIV¤™ÒXxmn'],
'encodeOffsets': [[
128273,
43330
]]
}
},
{
'type': 'Feature',
'id': '2203',
'properties': {
'name': '四平市',
'cp': [
124.541,
43.4894
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ɇn°W„zlyÞ£mwX@ƾKǬblaÈIƾ¤ôÞĸVĠxnmmVƒ²w‚VnwÆaU_@y„w@wÞxlk„KlwU»È»ŎÅ@mVIUmmĕUU@mWXw„Iô‚@bWnnbU`‚šV@Å°ó@wÞW@km@aŎ烙@m°Ñ°Inm±aXaƒU™n@mƑšU¦@šÇŽ¯aU£šaU™ġ¦ÅҙJōUŻókUÇ@™¥¯ak¯mUVak@@aċçÅaUƒm¦Ý`XbƄ@n`ƒI™xĊÞōÞml@šUb@Wl™_¯JkšÇUÝÆÅb@n™„llUb¯„±a@ƒ—ƒWĉJġĀ¯™Unóšm¤œxôaVnƒxôI@x„V@bmƙ„@lnLmޯޙxVb¯þ'],
'encodeOffsets': [[
126293,
45124
]]
}
},
{
'type': 'Feature',
'id': '2204',
'properties': {
'name': '辽源市',
'cp': [
125.343,
42.7643
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@żôŎVšIÆÑĢ¥Vš™bV¤°bȍ@™V¥ƒ™Þ£lÇUUUÝlƒÞ£™mţIlƒUa@¥nlWƒ¯ƒL¯™kÇġ¯ğwWmÅk¯UƒVU„„bWlXlmnƒbUx¯xVVknlŽUbV„ÇKUb@„™VnbmlnzUº±bmJUbWÈnèm҄š@X`WL'],
'encodeOffsets': [[
127879,
44168
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/liao_ning_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '2102',
'properties': {
'name': '大连市',
'cp': [
122.2229,
39.4409
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚IÞmVk@wXWÜbnwlLnU„@‚nLlbXW@a‚wnbl@XL‚aš@Ċ¥@LULnJ@xVnmV@VXXV@VJkn@VÜKXXôJlb„xl@„IVbnJVLUbn‚lnVw„JVU@ƒXU‚aUUlwn@°ƒn„VKnV°_VJšwl@nwlV„IXWlIVVnK@IWmkIVaVU@WÈUlmU@U„WUalkXġŻ@kIƒ»mm™akUm›ĉUŁV»²ġVĕ@aUU؍IɃ`ȃ@kƒw@ƒUƒmwĉ™@ƒWķсIĉÇbÝLkymbIƒwÇmÛbmbU„¯ÜõÈkÆVbŎxnXVÆnšǪ¦„bš¤Uš™xÝnĉÒmĊVȄ¤Èš„bƼ„Ā„„ÆÆބźb„VVbX„‚°²¤'],
'encodeOffsets': [[
124786,
41102
]]
}
},
{
'type': 'Feature',
'id': '2113',
'properties': {
'name': '朝阳市',
'cp': [
120.0696,
41.4899
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@na@UVI@m„ÑW™kaV¥UI@wl@„aÈbšm@wVašk„@@K@kƒ™@a@UUmƒUUalmU@KÇUű¯@±kUKVkUaƒaU@¥m@@¯k@WLUmkn@mmIkm@amU@wVmkU@Klk@U—m˜aXIWWUL™aULVbƒmk@UUmUk±™_Uym@mbkImaX¯WW™xWKzU@WƒkJWwkV™@Um@UbVVVVXb@VWX—@WŽ@Vkb@V™nUK±aUUlwX™ÇWKknU@mmUkƒLUVƒVUUVƒUaƒw™bkKmwnIƒ™kJ@nmbƒ`kmVkLWwUm@UUU™K@UmaUa@UUaWK@mUƒ¯Wkk¯VmUUŽ„xVXUVmL¯ymXkWUbmXUKƒVknWx¯JVnkLƒl@VVxnxlĀVL²WlX„l@bÝVUn@bnlÜaXblIVl@šš@Ȧ@VmbXV‚@@x„VVnUn@`°@VnXU@K@„VV@VmbnVn@ln@b„xƒ°Ub@bšLV`Ånƒ„W@@lUšnnWVU@Vbkl@Xl`XxV„UblŽkX@Ž°¦V„UVVbUlkV›@UbVbkLUxmJkXšš@b‚bœxVKÆlXX˜bnŽnala@ƒUk@U„VVklKVUXKVU°KVan@VUnLšKVL„WVaU_@mmUXa@m˜wXwVkVWXk‚k@›„k@klm@wXKl@U@KVUUUVaUƒV@„alL„xUx@b°°VnnVšxlIXJmx„LUVlV@bnX@Všb„aVx‚@XJ@b‚n@VŽVXȄl@llX@lU„Vô°°@ބVbn@‚V„k„@VW'],
'encodeOffsets': [[
123919,
43262
]]
}
},
{
'type': 'Feature',
'id': '2106',
'properties': {
'name': '丹东市',
'cp': [
124.541,
40.4242
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lzXJ‚U@š²x‚@@Vš„@bUVmKUn„°n@lnVK„„nV@n@VlV„°WbXn@‚VzƒJ@¦@bkb‚bUl@bkbƒJ¯zƒWULWbklV„nb™¦VJ@„„K°U„kl@@W„bVn°@„Všm²U˜nX`„UÜLXmVXlKVbUVVnUbn˜ƒX@VUL@lUbWxš@²kl`n@Vlb„@nUVWVLVU@aV@²bl@ÈmšxWX„VÈU„JV„l@„„la„WnX‚KÈkÈ@Va°bÆm„@XV°IVV°UnalƒVUn@UwVU„@@VVJ„I@bl@XK@wWmXU‚UVbkJVXnJVI@mƒknwlKXL@`l@VI@UUaVKÞn„aVm@aÇ£XW„U@aÇUU@mbkKm£™@WW™ƒL@@Kk@kl›U—bWKUkUU¯UõÛƒmUUaVU„U@WU_W@kVkJƒ_WKkV@bUL™¯¯ƒ±mk¯ġƒğÑ@UmwƒKUakƒ™ƒa@a„m¥ÝƒIUWmk@w™mţ—L›KʝbȗKWĢklVbƒX@VV‚knÇV@XUVUblJXn@J'],
'encodeOffsets': [[
126372,
40967
]]
}
},
{
'type': 'Feature',
'id': '2112',
'properties': {
'name': '铁岭市',
'cp': [
124.2773,
42.7423
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XJm@¯šmXUlnVbUJƒU@bV@UJWL@VXLmJVbkXlJXxVL@b@V@n@b@`Vbk@lxknV@VV™V@bUL@bV@@bVK@VXLWLXJ@LV@nbWJ@IUV„x@LVJUXVxVx@VV@@LXJWL@VU@@L@VnL@bVVmVX@@VVInJmbnLWVnVULVVU@VVmX@@JVz‚l@„nVVKVXރ@mk_lm„UUWV_nJlUÞÑÞVVUVƒVL„UVJ@I„Vna‚@@KV@XwWknwnKlalU„w„aĉݚwšJl_@aUaƒKUUU@WU@WXUÆ@@UVK@n@UnVVšblK@bœllb@b„bW@Xbl@UlnLl°°bš¦nKlVnI„V@UWU@WXkƒw@am@nm@aVw@I@KUaVIm±XÑlknJVnVJšaX_VaUaVKmwnkmmn@lU@U@mnašXlKUmUIVmklaUK@UlUVUW@U™kVm™a@UUU@JmUU@@bmb—KWV¯XUKm@ka@UVKVk@aUKmLkKUUÝUmbXbÇJ@k@WU_@m™™@klm@UXKVaUI@KWUXaƒÇWk™aWUkWUL±U@lUU@ƒUJƒI@V¯JmIm@@aU@Uwƒa™@UV@VkI›V¯aUkƒWkb@bVL„@@VVVUXW@Uaƒ@@b—‚ÝbUV݄@ŽƒLmUkVUbVllLUV@LššXŽWbUXm@U`@„kxlnnJlbnIllšLX„lVlUXmVK„n‚V@L'],
'encodeOffsets': [[
126720,
43572
]]
}
},
{
'type': 'Feature',
'id': '2101',
'properties': {
'name': '沈阳市',
'cp': [
123.1238,
42.1216
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ȚĊÜ°„b„L‚lÞxUbUn±‚@ÈnVÆL@xnLšlUVƒbƒxkImJkn@V±LUxkV@bšbšKVKnzVl@L°@Va„xÞUlbôxVVœ@@V±bnŽ@llXL˜ŽöXĶŽnal@nkVJVI@aU@@aVK@ašUUUU@lmkwl@Ua@_@a@m@U@aUKWwkIlWUanIWK@UXKVIU@@a„VVIUa‚mVknW°™n@WI@KUƒmULWnkVkUWƒ™KkkmJkamIkmlw@ƒV_n@VWXaW™™@KVUkKUkValUnV„K@ÞƒVUÞa˜@a„@VbX@VWUU@Uƒ@UK@ala@IkKmUUa@U@ƒVƒkk™WVwU_@KÜUXbl@V¥XUVmƒƒƒXa‚kŃlUUkIm`UIUJW@UIKmkm@UUJƒImmU@ƒVUXU`mIUbUK@LƒJUU™l@Xƒ@UbƒJ™kU@ƒŽn„m@Uam@@ƒ™aUmLKƒwƒ™mWXUK@kUaÇa@JUIUa@aƒKVUƒUXmƒUy™_@lmbkLUKWLX`‚n@bVL@JXL„‚WX@Vnb@Vm@UbnVmL@V@x@LUbVV@V@LƒUVl@mb¯U@xU@UVVV@X@VVblJ@bn„VKUn„x@llnL±¤™b@k`VXÆK@„kV@¼kl@bWIUl@VmLnbm@@JXXmb'],
'encodeOffsets': [[
125359,
43139
]]
}
},
{
'type': 'Feature',
'id': '2104',
'properties': {
'name': '抚顺市',
'cp': [
124.585,
41.8579
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„XVl°bœUlJ@UVUš@„bVxV@@bn@nJ°I@U„J‚I„VV@V@k²VVKlXXVšb‚lÈX„ŽWbXV@LVJUbWL@Vkn@lšš@nV`@X@lÈIWanaÞVVVlLnKVL@bUlUL@Vlbn@VL°WXU˜Lna@aV@nV@IVV@VšbUnšl@V‚XnKVa@U„UnyWkXaƒaVk@ašašbnm@_WKXmWanU@alaU—l@XJVLVxX@˜wnKnVlwƒƒ™@V_@a¯¥@UkKWUaUU‚anK@IƒaU@WUaVw@klUVyUUVUUÇ@Iôbša@mnUma@kXa@UWak@Wa—l@a›@WUƒLmU@U`mIUU™`mUk@@UUK±nkJƒbUam@kwm@@a@UU@Ua@@K@ƒVK@kmKU_UKƒUUaĉWmkkL@`™LƒnmlkLkbmK@k™@Ulmb@b™„@Ž„xUVƒIUlmVXXƒxm@™JUUk@WUk@ƒakx±@¯x¯Umb™KUUVmUU¯UmVVn™WkÆ„lWb„„„ŽUnWVU¦k@WaÛV@LV`UxšXllU„@„@VVbnVlL@J'],
'encodeOffsets': [[
126754,
42992
]]
}
},
{
'type': 'Feature',
'id': '2114',
'properties': {
'name': '葫芦岛市',
'cp': [
120.1575,
40.578
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ll°X„ŽnV‚@XLVb@VVbnb@VšLVV@VVnXxlKnU‚l„_na@mlI„šmJnxlLša„xVbU„VV„UVU„KVlnnV@lmXLšÈWŽkxVV²bVLšm@Ula@UX˜@XW@UWaUUUUVan@V‚š@lUXxlIX„V@‚yXLšw‚ŽXXW°nblJnan@Vzš`l²nVVVl@„nUaVKšbVKnXVaUaVUšyšnXK@kVK‚@X@m@m‚LXa„LWƒU¯„w@™ƒa@UVw„¥°™ó¯¯y¯ƒUǯ»›w¯Iƒm—¯Ç™UUl™¯»ţKċÑţķm¯w@mU_ómk¼VnU`±IkbVlƒnnŽU¼±Lk`@X™Wl¦UbmVUxkXVlkbllU„Vb@bkVmx@XVV@Jb±aULkKWXkWmX¯aUJmIkVm@ƒxU@n„'],
'encodeOffsets': [[
122097,
41575
]]
}
},
{
'type': 'Feature',
'id': '2109',
'properties': {
'name': '阜新市',
'cp': [
122.0032,
42.2699
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šXnb°lš„VlnXVJ„LlVnl@zÆxnK@b„blKVLn@@V„aVLVK@L@Vl@XVVInVVKVwlUXwlKšL„ššVVb@aV@X„lUXbVW@n„lWnXKV@@V@XUVVLUVV@@bVVV@@ln@VbVUXV‚I„xVanJ@UšIVWšL@UV@@¤V@nInw˜W„k„lnIVx‚lnzUVÇJ¦VVÜLĸUnW@aV_šWĊXXa‚Knkl@nm™L™a@alUVw²K@UlmnIlJ„w„aVU™kmK@wÅKmU@DzVmVaÝwkƒKƒaÛ¯șĉķ¥ğ¥ƒ@kUWkƏī݃ƒ@@akU„K@KWIUm¯nƒU¯JmwUVmIkJÇLm@™UImJUU@aW@U@@nUb™JƒaƒbXVWn@UVmX@V@b„š@l@Lƒ@™lUb@x™nÇaƒbk@@xVJU¦lbXšƒÒ@nUJ@Vmb'],
'encodeOffsets': [[
123919,
43262
]]
}
},
{
'type': 'Feature',
'id': '2107',
'properties': {
'name': '锦州市',
'cp': [
121.6626,
41.4294
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nJ@nlmVnXKl@@°n@@¦‚V„bVbUlVL²l°@ƲÈV@LV‚knVb„VVnnWVU‚@XmWU„a„bšIVa@mV@X@@bVVnIVJ@š‚nÈKlInJVUnx°I„V°mVnXJ@LƒLlV@b„@ބƐĬXllV„@Ġ¦ĸ¦naWW@In@manK@UVkXJ@alk@»lU@ƒÅLUWl_@ša²£‚Kkm@kƒwVmULmƒ@akIUa@U@WUUVU™aÝ@ğ›wkƒƒmĉ£UWƒ@@bÇL@m—a@_mKƒlƒXUwKƒLţÓ@UWw@K@U„I@m™U@UV¥„@°UnJ°@@_™KUwƒW@UnaWUmmI@m™ķwUaÇLóVĵwݙUUW™¯šƒ¦Ux@V„b@šƒxV°X„ƒKWbK@n@nW‚@UL@lWL™m™zUVVbUbmWXXWJ—b˜n@Vkl@LlVUn@xnV@bln'],
'encodeOffsets': [[
123694,
42391
]]
}
},
{
'type': 'Feature',
'id': '2103',
'properties': {
'name': '鞍山市',
'cp': [
123.0798,
40.6055
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l„œxĠŽÞ@šbV@@w°Vna‚@Uk„V@K@UUUVa@K@w@UnKmUVan@@Uma@UXWƒWK@IUK@amW_XKVLlKna@kmKVak@VU„@VmšU@anIÆan@‚a„šUVnb@blLV`ÞLlU„bna‚Kn@naVU@¥°IVK@anUUKVaƒUVak™@mJƒkXƒ™UVwkƒVUUa°U@Wƒ@WlkXWlIXUlJlaœx‚IVVXLšll@nLV@lLXl„KĊzš¥maUƒlkXaVK„X°y„Ila@aVkala@a@¥„IUy@WmXaƒ¯kU@U@mmUƒƒULkmm@ƒ¯VmnLVU@a™ƒ@U@±w@™VWIkymLUUkJWXƒJkUmxk@™xUI¯`mUULmƒ¯„m@kxVVbWV@„UVƒIUx@bkšVšVVšxUbVV@V@zšJVXU‚lnk@@lkLƒlƒLUU±Jkšm@UIUVƒLUVU@™K@UƒnnV@l@Ll„ƒaUJ@zn`@nWlƒIUVUUUV±Ln‚@nmL@VUVkLVlUxVLVlÅXma™@@akLmWUX@JUnVJVkXJ@X@`WX„VUVUIlb„W@bVUVL@`Un@¦U`@bUV@z@Jm@@XV`„LUL¯J@IVKmKÅI@J™nWVnLnšVxV¤™z@bmV@VUV@bUL'],
'encodeOffsets': [[
125123,
42447
]]
}
},
{
'type': 'Feature',
'id': '2105',
'properties': {
'name': '本溪市',
'cp': [
124.1455,
41.1987
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lb@Vn„lnVVUb@šVJ@nnJ@bmXUx@xVbkbkŽWLUxnl@Ul@„xWx@nUV@¼Ull„knkK@bmbnl‚LVJX@VIVJn_lJVVšXUmnU°VVVUnVVšLna°V°w²@lw„bl@XVl@VVšIn@„wWWnUVk„JVUƒw@šƒ@anaVkš@@lnLlalKnk„mšK@_lKnlĊXVb„VVLV`nL@lUL@„@L@‚VbV@@V@bn@lxn@Vb„alI²mVL@Vl@nVš_VVnJV_‚@nV„K‚V@Xœ‚@b˜kXbl@XblylUUkš™@Xa@UVIlK@UUWVU„Llm@UUUnKWU@K@UXm„XVa@U°KVUUWUk@ašUVKkaWkƒKUknaWa@U—@m@mk@ƒaUJk@@_WKkLmx„l@nUJmIUWlIUaVWVXn@xWLk@@aƒJUI@Uƒ@UVVxm@UVk„mb¯VUU¯JWUƒ@Ån¯aUbÇ@ÇlLmWƒXkbƒƒk@UƒƒIÇVƒUXW™wÇnk@±aU@@bUVUKUXmVƒ@kaUm@k_±l™@XwVa@kVK@U„Wm—VaUmVUUakLUWWnÛKƒVW_—m±V™nƒU¯@Umƒa@Xk@ƒl¯V'],
'encodeOffsets': [[
126552,
41839
]]
}
},
{
'type': 'Feature',
'id': '2108',
'properties': {
'name': '营口市',
'cp': [
122.4316,
40.4297
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĊĖƐn¤„„°Ċ¯ŎWšô„@xXb‚wnKl@nX@VUVƒKmL@VU@Ux݄@Vlb„x„U@VUb@b‚kœ`‚IUlVUn„V@@UV@@JnXlK@bš@nbÆWUkUKVwUklKVU@UnK@mm²KVUVVVU„JXk@mm_@yVI„bkƒ@K@kmU„m@VšLV@VU„KVUVJn@l™²IVV„K„klK@kl@kmVUW™I@y@UUUVa™wUUU™l™@akmmVaUKmIUaƒJk@ƒwkaóIWWÛL@UlmUIU@WW@UnUUm@wmIVK@Kĉ¦™@bWKk@max@bWXkamKƒ@mVkKmxÛaWX@xUlÝnJ'],
'encodeOffsets': [[
124786,
41102
]]
}
},
{
'type': 'Feature',
'id': '2110',
'properties': {
'name': '辽阳市',
'cp': [
123.4094,
41.1383
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@š`Vz„‚Wn„VUV„L@bVbVJ@IÈbVb@lVLXW‚n„š„x‚LnKVŽšb@„n@Vbn@mƒ„V@šl„IVa„@@WškVV„I@KVLVanJV_VW„UV@nn„JVI‚Vn@na@alLlmkƒVk@»VU@mXwƒwk@@VmkVwXKllaUa@wVwnW@amI@mUI@™VaUUkmmƒ@UkaƒL@ƒUIĉyƒLWkkKU@mKk@™kWKUUJ›wkbkIWVkJWXkl@X„‚@X¯VVbUVl„UxšVW„„lnIš@l‚Ub„VUbVLmV@bUL¯J@¦UVmbm@LmbƒakVÝKU_kK@amaVUƒ™bm@ÅbmJ@b™VUnƒ@UVl@UbnL'],
'encodeOffsets': [[
125562,
42194
]]
}
},
{
'type': 'Feature',
'id': '2111',
'properties': {
'name': '盘锦市',
'cp': [
121.9482,
41.0449
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Vbĸx‚š@nnJVnXŽmb@V„XVxšL@`¯@mI¯Vƒ@U¦@VšV@nƒJ@V@LXx@VŤÔ„K‚LVx„W„knL@`˜b@nÈK@a„@VXĊ¤„nVK@aVU@UnU@ašyU£Uwm™mKXUšm@IÆJnLUL@J°IVKƒKU_@Wn@@I@yVU@aV_@¥Vm@_UKUV@aƒXkaVJVUƒUXW@_@WWIUlUIVm@IVW@IU@@VU@mƒUVVkJ›_l@aVa@UƒVƒwka@UރVwV@@UnK„LVU@UmWk@mLxWa@wóƒUVUIÇÆĉ¦¯¦¯xʟJ'],
'encodeOffsets': [[
124392,
41822
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/nei_meng_gu_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '1507',
'properties': {
'name': '呼伦贝尔市',
'cp': [
120.8057,
50.2185
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„m@Łkƒ™Žƒklƒôƒ@£kJ°ý™ɅķÑó¤ğLĉÅlÇğŁW¯¯›™ƥóÿlwkţÈéÝƛó™°ÞÅxV¤ĉĖWƒ¯lȭţυ̃ɱÿķƅˋğɱřÝţϙȍƧĊţ@¯kWKUKm¹Å@ķJU@ƧÑƧ„ō¥˹Ɔ@L@„Þ‚VLnš@VōČWJX¦@JŻbU@ţÞmVU@ȁýóbkWWLƒƒÅ™¯UWġkmóƒ±UŹôV¼ƽ¼ƒł̥ĖƽǬʉxĉŽŻȗKΕ̛ʵƨʟÞ˹»Ƨţ»Ǖō˷Ȍ±ȚʊĠUɾɜɨmÜ֞߼˸ƅȂ¯ǖKˢğÈÒǔnƾŎՂ@šĊbôô̐¼ƒ@ĊôĊŽÞĀ™xšĖƧL±ŽœŽ‚Uš°U„°ĬƒČ°ÜƒêɴȂVł°@ƒ„nxŎèƒbȄÞȌ΀ǸlŽ²IlxĊl²ÒmšôĖ™Èl„ĵºm„ÈêVþ„xɛČʉÇĵVmš„ÒƒÈɆôƐŰǀĊ°ÆǬĮƾb„yĊ@ĠšƒXǀċm»ôw°Ûk¥Çm¯ç™kkÇǫţǕéX_ĶWǖīŎaÆĵĸĊ@ȚȘ‚™ĊLĢĉ„VÆĉʊÇĕóaU¥šĉ°mkÅ°ġUĠřk°mƒÑČÿ˜ÛƒWĸ£ʠšÆxÈÞŎÞ»ʈ²ĊÇČalÒ°Ť±ĸz„ŽĊKȲm¤Ŏ@Ò°¼nyȂUźīǖƳÈē°@šÝĶƒ@ƒÈkl¥Ççkxk™›JXÇƒUÅ@˜£k»„óƿīÛ@lÅJl¥óý@¯ƽġƍÅan™ċ™°é¯¹'],
'encodeOffsets': [[
128194,
51014
]]
}
},
{
'type': 'Feature',
'id': '1529',
'properties': {
'name': '阿拉善盟',
'cp': [
102.019,
40.1001
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@™ƏnǟƨʫšŹɆÿ°¯ÆV²ˢ™żÿ@ÝÆŁȰ¯ȀƳĉó™™@ğkyš¹@īš›ƒwl£Źƒƒ¯Ŧé@™ÇÇxŋĉƩUUŃōL™Ç™ĵóÝnƒóç@™™ó@ġƒƱ„¥ƒç™WUçÆōƒ@é—çťK™çȭVһƽ̻aW¥ȁ£ʵNJǓƲɳޗǔlżÞmĠóĬȂɲȮ@ÈĢŮźÔnĶŻǠšŎȭœгŃċóȭţΗÆƑÞƧÅΫóȘǫɱȁġlÛkÇ°ȁÈnšõl¯ô„ÞɛÝkĢóWĊ„zÇɼʝ@ÇÈķlUČÅÜķnέƒǓKȮŎŎb°ĢǀŌ@ȼôĬmĠğŰōĖƧbЇƧōx@ķó£Ål±ĀƧīXÝġƃêĉK°Ýʇƅ@ΌʉżÅÒϱʈ@˺ƾ֛।࡬ţશóЈèʞUš¤Ґ_޸Ƒʠɽ̦ÝɜL׈ɛϜóȂJϚÈ@ǟͪaÞ»Ȯź'],
'encodeOffsets': [[
107764,
42750
]]
}
},
{
'type': 'Feature',
'id': '1525',
'properties': {
'name': '锡林郭勒盟',
'cp': [
115.6421,
44.176
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ʶĬĊIȘƨƨŽ@ĬÛĢșŤĉĬƒĀóšU‚ÈŚÜènŦƐȤȄłϰUƨťƾÑ܆ğɲƜǔÈèʈƲĊƞƒšɆ¯̼V˺Ò˺ȂŤVĢêU܃x„Āˌ˘ƨ„Æ°ѢmÞżU¼ÆlŎ@ĊçŎnÈÒͪŎźƒĸU°lżwUb°°°Vš£ÞlĠĉĊLޏɆnźÞ„n¦ĊaȂīġŃ¯Iĉůl»kƒ„™Çý„¥Ŏ¯ƒén£ġљÝȭxƒÇ™@Åçķ»óƱŎ¥™çWÿmlóa£Çb™yVÅČÇV»ÝU¯™KĉýǕċţnġ¯»ÇōUm»ğƒÑ™wƏbċÇŎċwˋÈÛÿʉÑ°Łkw@óÇ»ĉw™¥VÑŹU™mW»ğğljVÿŤÅźī@ř¯ğnõƐ@ÞÅnŁVljóJƒwĊÑkĕÝw¯nk¥ŏaó¦ĉƒV¦Å`ğуÑÝ@mwn¯m±@óƒÛKˍƏǓ±UšÝ™a¯lƒōšșk„èƒĬގn@ŤġŰk°ċx@œĉ`Ƨĕ°@ţÒĉwmĉ@ƒƒnƒƒa„™¥ķnƒÞĉVóÆókĉŽķ@ÝkƧƧÛaƒ°Ç@ÝÈU˜óbݼ@„ÛÒV°™@V¼ˋL™ÞɅŤŹǠVÞȗŤÇĖŚōbȁƜ'],
'encodeOffsets': [[
113817,
44421
]]
}
},
{
'type': 'Feature',
'id': '1506',
'properties': {
'name': '鄂尔多斯市',
'cp': [
108.9734,
39.2487
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĶL²ĬVłƑkkl@Ȏ™ŘWńÈĬȗ¯™ºlz@ĠššĊôŦô„ÒĠ°kÞܚ™n@¤„UĸèĸbŌÈXŽĸLlÒĢxɲÆ¤ÈÛƾJÈÝ°UšÅĶ»²VW¯ĸJôšbk‚V@ôlbnĊyÈzVôašb@ĸ‚ÞUl°yǬ²Ǭm°ššk„±lbn°@È»˜JX„VŎÑÆJ@k„LšƒÆl²™Ġ²ʊůĊġ‚řóƛÞÅ@m„ƒmLUÿóĉƧ@™»L@„›`ČĸmšȗÑţů±ĉğl¯Ā™wǎƒçƧŤÛI@±ÜĉǓçō°Uwô™ǫůķƳř±bÅ£™ÓÇwnÑó@ȁƽ@™ƒÇƧĢón»ŏĕóĊ¯b„Å™™VȯÅImƒōKU„™LǓ±Ýxċ—ŋ˜V±Āȗ°™„Źl±šÛ@WÒȁŚŹНŚÅèŌô„¼°ȰɞȂVĊ'],
'encodeOffsets': [[
109542,
39983
]]
}
},
{
'type': 'Feature',
'id': '1504',
'properties': {
'name': '赤峰市',
'cp': [
118.6743,
43.2642
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɲŁĢljĊwƾōÞĭ°_ŎŃźȹƒUČÿl»¯ôķVÿǬƽ™ɅġÅÑǫ»̐ʟȣU™¯wVWݍÈġW»Þ¹m݃ɛŎÿŎōͩůV¹›ō™éċ™óŹÅVVĢǩʈ@Ėċ@ķšÛšV°¯xÇÅţ¥™»°Ûô™ĉʟ„¥WýČ¥™w‚灻±mnÅķ¥ˋVƒbUÒġ»ÅxğLƧ™ƒbWĖÅxš¦U°ÝVóŰlô²@š¥ÜÞÛô„V@²±`š¦™„™¯Ý@„ŽÅ„VÒō¼ôš™¤V²ŹĬÇĊƑƒţxƒç¯Lk»ʟlƽýmłÝÆƏ@mö°Ġ@ŚŹĬţÆUĀĠNJĠŽX¼šnźVUҚ¦Ċxȼ@ôlx¯łʊÒÜĀˌÇČxƍČÈƐašx„ÒĠŽn¼ŎVȐ‚¼Ģ°ŤmǖČĊþšLV°ÞŽU¼ċÈUƚzÈa‚¤ôbkŽ‚nXĀšè'],
'encodeOffsets': [[
122232,
46328
]]
}
},
{
'type': 'Feature',
'id': '1508',
'properties': {
'name': '巴彦淖尔市',
'cp': [
107.5562,
41.3196
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²@Ζǀݴʶհĸ„˜ƒ¦Ķ™̒Uˌ¼ӾÇƾ¼̨UÞĉ˜Ƨ—éÝ»ƒĕĉ—ƐȍœōǪakó‚ó¯a@™ôţ™aV¯Þ¯°@²él¥ĵğťwōxó¯k±š—Vó@™aóbUÇyĉzmŽkaóŽU@l™aó‚ķIX°±Uĵ¼™Æ¯VÇÞƽIÇÜÅ£ɱŽġwkÑķKWŋÇķaķçƒV@£šmۙlÝğ¯ƒÑťóǿƴȯ°Åł@ÞŻĀˡš±ŽÅU¯°ɅĀ™źƧʬmǠšƐ'],
'encodeOffsets': [[
107764,
42750
]]
}
},
{
'type': 'Feature',
'id': '1505',
'properties': {
'name': '通辽市',
'cp': [
121.4758,
43.9673
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôƲĸ¼Æèš@„ÈȮwƾ»ʠĢ¥VÆ@²¥@»Ŏњ¯ĊJŤ£k»ÆÇX¯̼ōšī°aX£ôƒƾȁź¥„ƒ™aôŤ™ĢL°ƒĸ@Ȯ¼ÈÒʈŚôVXůÆaĠƛÈKƒķšĉôÿ@ğÈĉ™»ÇVn™ĉV›wXĠÝ°šČÿĸwVƒ™¯¯ǵ±™ĉ‚ǫ™ÅÅm»²Ż±ƽIm¥ţÈķ@¯šƧJV»ÞUÝç¯UġºU£ţŽóaÅÅlƒƒ™Ƨī¯K¯Þ݃ğL̑ȍƽ@ōŎōĀƑɜnÞݺX¼ÇĢގUX°xVšʠȤ̏Ǭ¼ÆÒɆĢšŽǫƾUĀóĸ°‚k¼ċĀƑVŹȺōń¯`ÝĮƽŎĉxġNJɱłō¦'],
'encodeOffsets': [[
122097,
46379
]]
}
},
{
'type': 'Feature',
'id': '1509',
'properties': {
'name': '乌兰察布市',
'cp': [
112.5769,
41.77
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ʠǠÞĸɲȺƒÒȂƛŎaƙÈĕȘţUÝźǟɆţšÝˌKU»š@U¯ÜÑ@ƒÞ»ôaV—ÞÇÈ@„¯ÜbƨƨÞlĸ@ĊôlôÅĊU„Ýĸmš¦ƒŽ„bm„„„Ċ@n‚ĊxŤÑ@¯‚ƨĖĊ_@›Čwl¯™ƒȭL›Ý„»ƽ¯ķů„Ǔ@ÇǓbċ™ÅÅÆwÿĠÇU£óaƒ¥¯aŎğĠţkw°»¯ůlÝĵkǻݰɱƧǫaóôɱ»Çk¯ŃóƒʇŐŻ›ĉNJŻĢ„Ž¯ÒÈUl°ƒx°n„Ò™Ĭón™Ċğ°ÇŚĉ¦ʵVƒ°°ĬÛżÇJȁńʇʹó˂ƽŎ›Æţ¦'],
'encodeOffsets': [[
112984,
43763
]]
}
},
{
'type': 'Feature',
'id': '1522',
'properties': {
'name': '兴安盟',
'cp': [
121.3879,
46.1426
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÆXnlŎ°@LVLĠþœxĊUȮĊnU„ĠV@żaW¯XIŎġƒ¥Ý@K@w@K@I˺ŻŎ¦ƨƒƨÒŎIÆ@X@VºnX°lŎ@ƾĉˤƒȘǷȘÑÝݚÞbVţĸÿŤxÈĖƐŽêÇKnĸ¥ô@›ķÞUnÒl@UŚaƒīˋƒ¯ÑƧx@±kXřƐƏÛéV™ˋ»lō¯ĉ„ÅÇÓǫޗĖġV@ğ»›°ĵ„ÇÞǓ¼¯m˜ÛÅŃĉĠÇƾb²çƒ™šéż¯VƒƒğÞml»ōÑV痻V¯™¯šĕÆU¯y°k¯¯V»ôDŽѰa@Źk™ġKţšóŽšbƒ„Ź¦ƽȂó„W¤¯b™Ĭ̻ŎW°ÅÈl¼ţ¤ĉI™°ōÒ@¼±¦Å@UŽġ¦ʟŽƽ¼šÞĢÒm¤„êō°ƒ¦Èþƒšl„k¼ĊŰ°JĢńȁĬ„°ƒżn‚ÇbV„ݼ@¼óĸţ¤@°Ånšl'],
'encodeOffsets': [[
122412,
48482
]]
}
},
{
'type': 'Feature',
'id': '1502',
'properties': {
'name': '包头市',
'cp': [
110.3467,
41.4899
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@źxżĀǔÆǬVȘĀŤ¥œÅƾōôˁʈͳȂŃÈIÜŻ¯ī„¯ōm™¯ɱĖ¯ƒķÒÝIÝ»ÅV™ƒlÅôфġ™ğVmÞnnƒWçkW܁XƝÆwU»Șĕš£ĉÑ𱱚Åk™„ƒK@lÅIō҃UW‚—IǼ¯@m‚kaƒ²™l¯™ǫnǫ±¯zkŽÝVķUô™˜l²ô°ŎwŦxĶĠk¦±ê¯@Ý°U°šbóŤ@š°bôlôǩb›ŎƏȎĊ˜„ĖÞ¼˜ê—ƨÝĊ'],
'encodeOffsets': [[
112017,
43465
]]
}
},
{
'type': 'Feature',
'id': '1501',
'properties': {
'name': '呼和浩特市',
'cp': [
111.4124,
40.4901
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ʶUĊ¥ÈřĠ¯šĉômšīƒÑ¯m„wk¯ÇV°ÑƒżġĊljǓɱţǓ›ƝóX¯ƒɛÒóa@nÝÆôƜŚĉĢʉŰĊҙ¤ȗĖV¼ÅxWƞۂlXXèm„ÝmUnšĠƒĢóÒkƚ„ÆUÞ¼ÞJĸÑ°„ɲĕš°Ŏn'],
'encodeOffsets': [[
114098,
42312
]]
}
},
{
'type': 'Feature',
'id': '1503',
'properties': {
'name': '乌海市',
'cp': [
106.886,
39.4739
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ș°ÇīXњŗ@ȍlkƒlUŁ±īĵKō¼VŽÇôXĸ¯Ž@šťê„°ź„k¤„x™œ@Ĭ'],
'encodeOffsets': [[
109317,
40799
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/ning_xia_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '6403',
'properties': {
'name': '吴忠市',
'cp': [
106.853,
37.3755
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nLV‚@šVLšaÞbn@@l˜š@bUVlUV„zVx™¤kÞVèšXnš‚@nm°a@UƒÑ„@VŽXnV@Va„UšŽVKUUU@@U‚@@KVa@U²@‚wXkWnk„±lLnU@UmmVKnIVWnI@UK›@UK@@UVKXkmWLWUXmlkVwUyVa@w„w@aVI„K@aVÈw„KlLVV@LnV„VVnU‚ܲ°WÈIUÆ@nÞ¼‚‚@¦™@UÞUVW@UxUxVn„b„K‚b¯ÞU`VbǬ™V@XXÆVVl°InmnUôƒ°¯‚anam£œWVX‚KXmškôaVU@ƒVak@@wmaƒn@K@UÛUWKXUƒÇƒ@UI™b@alW@akLUKV@@Ukw±Iš›nL@kmwkWmk@JUIƒůVmnnU@m@UƒK„VKlkUwkƒƒnVUKmbkI±š—KƒkmVkKƒb@U@aƒVkUmn™`kIlaUK@UUKmbUIݚUa@mUa@aƒ„m@UUULUK@bmKkbWI@WXwlkXƒWa@k@kKƒLVkkK@L@JUVmzUKlwUUnW˜£XVlKUwVU@aXI@aWaUw@W@_nam@¯‚UkWVkUWaU@nwmJkUVkWVUmUkJ@ImbUaƒ@@WÅ_mJknmak@@mƒXƒaUV@„ƒxUšƒ„@‚ƒ„@VUnkVƒ@Vn@`ULUbWLXVW@kbUJ@XW`@ƒnÅĖWJƒ@—m°@xƒxšbnUa‚w²lƒÞ°xŤIVVULۂWbšbkVVXÆ`UbVL„@kx°LlV@Vœ„WbƒJn@bl¤ULV„°@lmL@ƒƒ£U@@aUwmKULVxUVVx@„™@kU™@mK¯LÇa¯@'],
'encodeOffsets': [[
108124,
38605
]]
}
},
{
'type': 'Feature',
'id': '6405',
'properties': {
'name': '中卫市',
'cp': [
105.4028,
36.9525
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°@Èb°KnLš@lVš@@ƒUwVUUwVKnLVx@bV@„¤@„nK@k‚¯UƒVKk£@a‚m„IXa›ƒ@UkU¯Klwƒ@UKVaÅ_UWlU™aXa܁VKUUţJ¯w„ݱkxVbmŽ™a„w@wn¯˜„@XIÆĕ„m‚@X_@WVIlaX@WUXKVaVK@_Um„@lUVm@U„ƒ@„ƒV™„w@ƒVUÛwm@@W@ImKUkU@Ua‚aXƒ@wWaUKkw@UVaUamLU™nk@»±`¯@k—W@Ua™ykbƒI„„@VWJkLWUkJƒwU@ƒn¤mL¯wm@Umƒ²XVWbnV@bmxƒVkxUblLUV@kVWKU¼ƒŽkUƒ@mn@JnV@bUnmJUn@„k‚@XlxšLVVnKlLVV@š@LkKULVbk`WL@lkXW@kVƒ@UÞUlÇX™lkaUbmV¯@@L@šƒV@bkb@xƒlW„—bƒbW@—±@UJ@IU@mVk„VxV@@l„Illœn@Vm@ƒVUbl„@JLmKÛXmVkU›KULU`@LĉwƒKUX„lVUl@Vb„JX¦̼bÞxŎxɜĖĠ„Ŏaô@'],
'encodeOffsets': [[
108124,
38605
]]
}
},
{
'type': 'Feature',
'id': '6404',
'properties': {
'name': '固原市',
'cp': [
106.1389,
35.9363
],
'childNum': 6
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Vnn@°xnK‚£„mV@„xlIXVlKXI@Uƒƒ„JlašzVbX@l˜°@²_@¼mlVšnKVbUb@VlxVLXb@xW„bVbV@VlnL@J@Xn@Üx„b„W@nl@nblmnIÆ`@X„@Vbna@aVUUWVkƒ@kbWakbU@VwšW@_l@nmn@@alVlk@UkmVak@@a‚UXaƒL@¯@KVa@axWI@KnkVaVJn_lJ@„X@‚m@nVanUVb@mXLlJ„VWnLla„VVaVX@KXVVkVKlknKVa@aVU@KXb@klJUknUmƒ@K@_UW@alIUamaU¯kJma@IUK@U„@@UW@@aXLVƒVJVaXIƒKlaUkUV@ambUUJkIWJ@wUI™V@JU@UwV@@Um@™nU`@UkUmVUxWUUV@aÅb@aWXkKUUƒUUaWK@wnm@IVU@aXwm@UmVaUalk@anKUwlƒUwlkK@wmaƒUkmmIk@VmkUUbW@UVUnW@kV@xkVmbVnU‚™@UbUV@a›k@kkW@„kLW¤@„nV@VU@W_UV™UU`VLUV@IUVõVULU@UUUJ@wmkUJ@šWI@l@bkKkbVVƒbVbUL@UUJ@Vm@@L@xbVVVLVlVwX@Vb@bmUkbk@@JWIUVÅw@Km@UkWKXxWLÅ@UVUnWK@xkVW„@KULwWVXVWzXVVKVXkV›V@VUbV@U„VV@š@LXxVL@V„b‚Ž„LnKVLVxXVmb@l'],
['@@@J@aƒU@LWK¯UUxVVn@Ġ„„LUW@UbUUUa@KUX']
],
'encodeOffsets': [
[[
108023,
37052
]],
[[
108541,
36299
]]
]
}
},
{
'type': 'Feature',
'id': '6401',
'properties': {
'name': '银川市',
'cp': [
106.3586,
38.1775
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šUšwVK@UVWÞUšbšw„V@knV˜@@KU_VK@K„ƒn@W_XWlL@Vn@Ċw@Ulaœ@Wanamī@aƒ»ŋó@aÆÅɲÿUaV_°ÝaƒLƒaUmVwVwX@VUVݚ@@¥Ý»@mVÅÇJ¯XÛ±VUmƒUmU@KUUkKƒLÇxUŽ@bƒLUJ@bƒx@xUbVzUxklWnXV‚KnXWlUL@V@ŽVLœ@VL@ŽmJUXmJULnn@VmVkKƒ²mlXWlx±@@VUb@L@@VV@VVUL™ƒVUbU@WmUƒ@„Ò@V¯bmn@VŽƒ„@lVnUšnVWŽXVl@¦VVUn@x‚š@‚XL@¦‚lXxš„Vb'],
'encodeOffsets': [[
108563,
39803
]]
}
},
{
'type': 'Feature',
'id': '6402',
'properties': {
'name': '石嘴山市',
'cp': [
106.4795,
39.0015
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@U¯ķó±ÇÛ¯™ķmbXb›@kb@Vĉxm@@UkKWXX`m@ƒ„@LULV`@L—@mU@lƒU™x™aÝVUX@VUL™x™VkLWVšš@J„nVLXVlŽUV@zl‚VL@V@b„„n@lU²WVLlLVbUŽVxUx@xǀL˜xôҜk‚K²ŽVa‚U@wXa@W™ÈĉUa@‚bÈk„m@¯'],
'encodeOffsets': [[
109542,
39938
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/qing_hai_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '6328',
'properties': {
'name': '海西蒙古族藏族自治州',
'cp': [
94.9768,
37.1118
],
'childNum': 7
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@„V£°š@laœXô±źwš™ô@„Ulƒża܍n™Kƒw@U„aƒ™ša²L‚mÈLƚÈxlaUa„wÞmÜbÞUšnJ°a„kôƒ‚ÑkwÝVğwÇ@ÝkkV¯¥@ò„»„nŤ¥XImw@mVwša@Åw™mLkaW—wƒ¥l»kçƒó„»@ƒWÑĉŽğ@ĉ„™‚Ń„UwóřVómĵ»™™Ý@VǕ¯kšÝĊÅk™°ÓUklkU±šI„ÇÞkƒ±@šƽJƒ™@UġIk@W¦™VÑșÓÅnťKULnŽ¯X›ƒ@¯mUÛ@WřmóKknōbƒxÝ@ƒŽU@kw@ÿÇLţšÝUkšmwƒŽk™lċVŚU¦™ŽƒLkUWlÅÑ@aƒ@ÅѱUóġŹ¼ƒÈĉmŻ@@wkw™Kl¯U™ġ@—„lÇU™Ó¯_ƒ‚Waĉ²Åló¼VbknƒKǎÅ@ƧĢō°Ý@ğ„W™ÅxUUm@™‚ÝXۂW„ULUè¯@mbUaƒLƒbUWġxIUJWz™a¯b™y™@ōÈóLU`ÇXUl™UĉV¯n›mÛbǕLklƒUĉVƒšóaġ„ƏbġKţnkbÝmmnÝWȭȃŽÝXţWókUÇl¯U¯‚ġUɅĀ@°¯„„š¯„VÆnmJ@ĊķnóJUbÝXUlVškL@lVxnnmb@¤Vzš`ÞÞŤ@„VnÆJV„°b„UôJkzlŽkl@²óš@ÆÇ°kĖƒšÇbÛU@lmb™XV˜kzƒV™ŽɅĀXˢlń„ĬŹ@›éÅ@ĉńÆ°ğbUšlŽɜ_°‚@xŦ˜škbVbƒKĢ„ŤVŎŽ°@żÈźlĊ„ôKôb@nôxŦ„Æ@ôŽŎL@þÆb@šnnšWˌbÈx‚InaŎxlU@Ѳ±ƒğVUĢƒƨbɲ@Þ¥ôUUķWVô¯ĊWʶnôaŤˁ@£nmnIôŽǪK°xUXô@Ŧa°m‚kXÆÞVŎkĊ°ÞLȄôyVašIlwX°UVwĢÑÜKôw@nV@œm°nmŽn„Ü‚ɞ£VbmŽXnƒ°ÜÒ@xx@V‚b²UlbkxVnšJUnVVĊ°KȚm°nxÇnn¤±¦@ŽUXVV@„lV„„bmVVȁŽVxšÒ™°šIšbźaȃšbVwš@šƒVL„™ƾÑ@ƒŦô¯ĊkôÑ'],
['@@„@šƒ„@n„òVœa‚w²bVxšxÜaČVô_ĊJšIVmšL„a°@Ŏ¥XlK@ƒšk„l„KVbUb˜@nUĢn‚aÈ@lmǬ»Ġ¯œn‚mnƒƨVy™Ñǖ™Ġ»ɲInŽ‚@@ÅĢƳ@¯°™ôV„KÈbVIÇ¥¯@Ýó„™@ÑnīWKšƒk™‚k@¥š™¯™Åa™Xƒ±VÅw@±Ġ¯@»™š™n™Wmw@ƒ™@¯ƒVƒUUWçƒKĉ„a±VkkƒV¯w™x@šUJ‚x@bknÇb™mÅ@Uw±U¯¦UŽ™Kmš¯I¯Žť¼ğĊ™@ǃŹÈ¯@Ý»ÇnˡJƒbÛèÇnƒ„ÅK¯„ġĠŹW¼Ålm„@¤n²ƒŽÝb@b„š¯lƒ¯@ƒšÅ¤W„™¼nV@x„„°@Vx„@lbUblbX¼W‚œšÇ²lšUŽ@¼ŽV¦@bÇlVxUbVxÞbVšœbm¦ƒVV„']
],
'encodeOffsets': [
[[
100452,
39719
]],
[[
91980,
35742
]]
]
}
},
{
'type': 'Feature',
'id': '6327',
'properties': {
'name': '玉树藏族自治州',
'cp': [
93.5925,
33.9368
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɆÿĢV°°VÈklVôŤXÞW„ȮÇÞXnmÞnlaŤmĢLƐaĢƒôb„™ĊU„VlkǖKÜaœn°mĊUšVVkÈWV_ôKŎǚ@šz°ašbXyVI‚JĢwVX„a„KVbna°@VçVKXƒÜÞWšn@VVÆwXšĠƒÞ@Ŏ¯ƨġÆ@ȍ„LlmUaô»ÆkĊ±Xb„°`šÔV‚kȘƒĢ@Všk°šLlx@xż@Ċn„Çź»ôĢ²VÆ҄@@bÆÒXklV„KšV¥Æ™ČUšk‚l„nxl™çƒ¥ċç@±m¥ƒwÅJƒ@™™™Vƒ„mÈIléÈa°U¥™™@kÞV‚K²ÑWƒ°w²Ñ‚K²ñšyƐ„ÝšVmw„»kkWĉ—JWUƒVÅwƒL™mÅ@@ƒmw„kn¥Vу»°™°@@»„¯„Lla„JônV‚UůƒU@W¯Umѯ¯k@WykU@¯„wV¥ƒkVwţƒk»šwWǜĉĶçšK„ƒÞ™ÇaĉbƒI™lUƒ@kwƒWƒXUƒ°w™±@UšKn£Wĉ—KWxƒkĕVƒšamwXw™@™„Wmnk@aƒVkƒ™bĉLƒl™Imm„wUÇ‚Wx™nÝJn@¥Æ™kwƒaXƒÜĉ™¯ÅV¯¤mkƒx¯kķܙ²VWôŹVUƒƒ@V£™¥@ƒ°wn@™m@¯@UbUôķŽmn@ÆÛ@ÇýVaUÇĊVƒ@Çlğ—¯xÝŤ™lVÈÈVƒx„ƒ¤Vx™„kK@™@ƒx@„kVƒĖġ¥kIWbXŽŎx@nƒxÅUW`ƒ_—@±ŽUa™LUxƒK¯„WbkVlb—bmŽƒLÛÆWIUwƒWkwÝV@kI›ŽéUb›UUk™V¯Km¯k@Umݐ¯m¯›m—L›Þĉ‚ÛUm™ġ£UxkKm°™Lw›šk@kšƒVm„ƒKVUk›@¯a¯Ģ™móKUU™x™ImlÅn™™ÇbXèVVU„°„@ŽšŽ@„‚xXnmš™ššŽ@¼ğ°@²ÆxU‚„²šWÆb°š™š@¦llš™„XLmĬ@҃šÞô°@ȦUJÇaƒLóU¯š@°ġƴ@Ɓ@mɱJğ¼ǕššÒUzƧ‚m„n›mğ°ǫ¼knÇ@bġmmV—@VaUaƒLƒk™l@„kLW‚ō¦¯@ƒb™KUn™JĉIó`ċUÛb™wUw±ax›bñUmƒƒ@™„ƒ@—bƒaƒbǏÅXm˜„ƒÝ„ÅôVbގ™bl„UšÞVޚ„U‚°„VUxƒ@U„V„@l`™¼nL@Ċ„LW„„¤kXķWġXUVVVķ„UbVb@°kVVxÈa‚@ȦĊbšaźJ„U@Ț„„˜Vœƒlš@XkôaWƒĢ™Þ@laĸUÆb²mÞLĠ™ÞÑôbšÒĊa„JVbm¦'],
'encodeOffsets': [[
93285,
37030
]]
}
},
{
'type': 'Feature',
'id': '6326',
'properties': {
'name': '果洛藏族自治州',
'cp': [
99.3823,
34.0466
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÞVŤ™ÈK@ĀlxV@„Þ@„wŎalmôLšnXÆÜ@nV‚°@œ„°WmVKŦLÆmȚԂҚUX¥l@ĢJVš@„ŽƾI@w™W°™™Ån¥›kÅÝVwôƒÈç„@lÑĊĕša„JnaÆLVw°kny°UnkÆVȍĊll¦„Vƾ@@™nUźƒÈǂIn°X„wÞKô¦VWV£„@£°ókċ±I™™am¯Va™»ČĉV¥°™@m„k„¥l@„Ċm@ašU™mwXƒ@wÆxšmĢ_„`VnÆbšKVw„@@ƒnUVğVmVVöIlŽl@@çÛmƒ£UDŽw°@VUƒ¯»m¯ƒJōĖÅLƒa@»ĉĢ±`U_k`ÇçšóƒkX™lK@ƒakÝރš£WċkÝ™kxƒJݯÅw™xķxmIÅx„@k±J@ýŋš›¤UœkŽmV™°ÅÝxkwmġƒnÝVU„š¦ƒŤlmšóXk¤™UKƒç™@mVkK@klīƒ£mš¯VUbƒW¯¼ċb¯ĵam¼mVX„m@k¤ÇX‚ÇbƒUƒ„¯J¯„¯È@˜™bVXVҙ¤V¼kxݚV„@l‚V—„WxÛ¦Wš¯šmKnlŽkŽ‚šU‚@nƑUĉ„Ý@ǺۄċUĉ¥™UƒÞŏ™z±òL±Ò¯xX„±ÒLÝU@lššV¦¯‚ÇbkêÇJƒnU„šš@š„‚ÆI„xn¦‚‚@²Č脦‚è'],
'encodeOffsets': [[
99709,
36130
]]
}
},
{
'type': 'Feature',
'id': '6325',
'properties': {
'name': '海南藏族自治州',
'cp': [
100.3711,
35.9418
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VxƒŽńƒš@ĊĠŽĊXÒ°UƾĕÞm°£nb@‚@LUUW„Ûº@nlÆǬšĠ£ÞV°UXb‚VȂǵ„éƒ@kWanm°@™x„z„K°¯ĠVšƒVƒkw™Lnm°kÞxÆa„¥@‚wnĉƏ@™œ_l›š_VwšmĸèŤÅČU@™˜Wn@ÑmKU™nğƒK@ƒ°¯UÿV£nmšLl™„UƒUÛé±óókkmƒnƒakV@Ç°óÝXƒWəÞťIţxmm™VÛUVȂÓnWyȁĉkƒVš°WnkĊa„¥‚_œK°ÿWna@ƒmU¯wƒlÝIU¤UXó¥ÝLƒx¯WmJÇÈŹ„mV@šƽ@ƒUk¥ĉkċŽÅUml¯Vmz¯lUxÅKmbƒI™bĉĖk҃@Çèó„UxÆޜlm¦šÆ¯ššX@x™Ž@Ž„²ÝlƒÈ™JV²klVl¯ÔlšĉƙްlUǖÞ@ššĶ¼nŽUôôŚ'],
'encodeOffsets': [[
101712,
37632
]]
}
},
{
'type': 'Feature',
'id': '6322',
'properties': {
'name': '海北藏族自治州',
'cp': [
100.3711,
37.9138
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ōmġxƽUm±Lǿþġԙ@kxmWƒb¯I¯‚mIUx@bƒbŹVǎƒkĵbƒlĉI¯¥ƒUšm@ƒÆ¯È@šašóšUlƒČ»@w›œ»›wXaƒƒó°ţç݄kUƒaV¥ÅbÝw¯lmnšKlxU„™„ğU¯°ƒLƒyšw¯@mnXb‚l„@ƒêȁǶUWa¯VÝUğ¤ǫ™kÅ@mܹXƒVV@K@ma¯¤ÝnƽĖ¯V@„ƒ¼„ôlèk¼„¦˜xXŽlbnKšÆx@Ž™bUx@nnxWJţ¦ƒmƒ¼ñ@Ž°¦lUÞlÈ@ĠxÞUlxÒó„ƒl¯bmI™ŽÝVÛaÝnƒxVbkbÇwřÇKn±K™b„šƒb@V„xšLmŽÛŽŻbk„ƒVó@™šŹxó²›Wkb™@¯U¤ƒźĊ@lUX„°lÆôU„ƒlLX‚aœV°wšxUb°xÜôÈKVkÈmlwškÈKšwšK™™VUŤĉŎ»„»„Il¥na°LV»²¯Üy@wĢƒ°ĸwlwĢw°±„_lVkš@°ƒbƒÆ¯zƒ‚„š„@l_„@Ģ±lŚVlUaރ„LVƒnKlnȏ°IllČa˜wÞÑ°x„UU™@wƒVkmĠLô»„KÞýôaÞ¥ôĀÞmƁ„™‚mUƒŎV¥Èl°²°a²¥V„@@w„amm@Ñn@Æ£żƒVƒĠ£@W„¯Þƒšl@š»@Uk@'],
'encodeOffsets': [[
105087,
37992
]]
}
},
{
'type': 'Feature',
'id': '6323',
'properties': {
'name': '黄南藏族自治州',
'cp': [
101.5686,
35.1178
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôl²ôÜê„VƒVkš™KmnU¤VĀ¯°@„„LmĠVšnLÈL@alb@al@n°Vš_XmWUÈamaVIn@n‚aV£œóVWƒ™U£°ašxÈ¥@™‚aĊwȹ@óša™ƒğbm@k„w@mƒaÆw@ƒ„In¯mmƒ@UkkWƒÑÅ@@kċÅçVkÝJÅkVykŹl¥@¯š™ĢU܃X¥òý—mmX™ÝÅlmU@£™Wly™XW»Åbƒl@aI›»k@klm@UxUUƒVƒ¼¯Xƒl™aUnķ‚ƒI@x™@¯„ƒK™„ĉUU`óšlČ¯ô@¤ƒÞJ„k°xVŽ„n@ŽmbXŽ¯Ā›L`ƒ¦ĉbml¯X™ŽUŽl„ȂĊXzm‚ȁÔU‚ÜVšUnnŤwŦJɚ݄XÞW¯ô@ÈlU„b„mln'],
'encodeOffsets': [[
103984,
36344
]]
}
},
{
'type': 'Feature',
'id': '6321',
'properties': {
'name': '海东地区',
'cp': [
102.3706,
36.2988
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@҄bš¤ÆI°ôU¼š°UŽnnWx™š@b¯L@lUUWbXxWl„ƨnxVUllš„XVŽUŽnL@lȀý²KVnƾ‚ĢwV»ƒ@mÞ£nÆƒÞÑmL™ƒKUaVżĕƒWVk²ƒƒÆÝ@ƒXw°@„ô™@a°wóUUmIk™™aVmÞwmknyƒ¹VÿƧnŏm£X»˜™naV±„Ýw@ašb@aƒm¯„ĉVó¦kÝWKUU@WanU™b@ôǺĉxb@šÇ¦™w¯bV¤„šUX›ôU¤bmm@UJnbÇbXVWn™`¯Umk@@bka@bÇK'],
'encodeOffsets': [[
104108,
37030
]]
}
},
{
'type': 'Feature',
'id': '6301',
'properties': {
'name': '西宁市',
'cp': [
101.4038,
36.8207
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@kmKVUƒWk™VkUmwƒƧXkWwXaVV@k°K@aš™XwmmV™¯V»¯óÅJ™£ƒamŽ—X@šċVţÆķç™nUx™`kœ›`@šÅmĊx@Žƒ¦U¦„blVރŤèô¯„„Wbœx›¼œŽ@xċ¼k„™V™ô™bÇ@Å°@„™n„V°¦ĊJ„kĶa„lȍźU„a@aVwnJ°°J„anXlwš@ĢÓ'],
'encodeOffsets': [[
104356,
38042
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/shang_hai_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '310230',
'properties': {
'name': '崇明县',
'cp': [
121.5637,
31.5383
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@uŏu»GPIV±ÐɃŜ{\\qJmC[W\\t„¾ÕjÕp‡nα|ěÔe`²„ †nZzZ~V|B^IpUbU†{bs\\a\\OvQ’Kªs†Mň£RAhQĤ‹lA`GĂA@ĥWĝO“'],
'encodeOffsets': [[
124908,
32105
]]
}
},
{
'type': 'Feature',
'id': '310119',
'properties': {
'name': '南汇区',
'cp': [
121.8755,
30.954
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@`y”ĉNǕDwǏ»ƒÖLxCdJ`HB@LBTD@CPFXANC@@PGBKNECCBB@EBFHEDDDSNKAUNBDMNqf[HcDCCcF…@EFGLEBa@ACoCCDDD@LGHD@DJFBBJED@BGAEGGFKIGDBDLBAD@FHBEF@RFDMLE@SGANFFJBANPH@@E@FJjRIACDMDOEKLFD@DbDAJI@AP@BGHFBCBGDCC@DCA@CECGH@FKCEHFJGBFDIHACEDNJDCVFBDCRKRLDLITB@CjNJI^DBCfNVDHDFKHAFGDIICDWBIF@@CFAjFJNJBBHD@CJ@AEFJ@@DH@BFBCPDBMFEQGDIFCNDHIP@HDABFACBJFHEBSZC@DP@@JDBƤ~'],
'encodeOffsets': [[
124854,
31907
]]
}
},
{
'type': 'Feature',
'id': '310120',
'properties': {
'name': '奉贤区',
'cp': [
121.5747,
30.8475
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@~T~JjZdDbLXDLCB_J@@FHFZJJIAGH@HGR@BENBLID@@LFCDF\\FpDBDb@FAHKFE†@dEDDdC\\GreNMACVMLBTMCCFCEGFAA@DAFDLMHA@OD@BMEWDOC@AS@KGAI_DcKw„ÕísƝ‘åĆctKbMBQ@EGEBEJ@@MBKL@BJB@FIBGKE@ABG@@FMFCPL@AjCD@ZOFCJIDICIlKJHNGJALH@@FPDCTJDGDBNCn'],
'encodeOffsets': [[
124274,
31722
]]
}
},
{
'type': 'Feature',
'id': '310115',
'properties': {
'name': '浦东新区',
'cp': [
121.6928,
31.2561
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@EN@JJLNHjLJNR^GRYVBNZJRBV@PDvbLNDN@LGNER@nCNQNuT_TIVFV\\Z\\XnDrI|[Ʉś²ÏJUHOƣ}CA@IO@@CYDATGFIEDAEBBAGCO@GJMCEDCJRHEFANOCADAEG@@CI@FE@BDIC@AGIAIMiEEB@DE@AJCXJDCJEHGBELGCUCeMAD]CIJiM@DSAKJKCLQDQACUECDMIFCBDJGECHAEIWCK@GLMCCGEACNKCEJG@MMBMC@@CIJUINT@JAJSTEPZZCP'],
'encodeOffsets': [[
124383,
31915
]]
}
},
{
'type': 'Feature',
'id': '310116',
'properties': {
'name': '金山区',
'cp': [
121.2657,
30.8112
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@L@BIHFN@@EE@@EFBDGDAADVDD@@EF@CA@IIsRE@GDAF@BF@CV@|FBCHBLCNHAFCADBMDCFZXHILBVEEQA@MWFARJJ@DCX@@TEFBLHAAERE@AJABRPBNK\\BrJ\\VHGND@CNADKDADQjGAGNC@GJ@FCFFHC@JF@@dLBDSFADHVG\\DTEPDDHJALIJkJDJCDIPE@YDCBiK@DONE@EH@BAF@HLJA@EIA@ALKNA@@FIFAFHR@NALadsæąyQY@ƒA±DʼnXUVI^BF@FFF@HBJEDFFGFEBSRkVEXGHFBMFIVW@GAEEFOIAIPKABGWEKFSCQLQBSEIBC\\FdBLRR@JGACFDDEF@AWB@LJJYNABBA@CUEGPaO_AIE@MYMFIGAEFECHSAAKAO\\[JEDB@E@MMA@@AGBKMGDFFCDDFEDFJF@NPBAFLHFH@EDDHBADDC@DDCDHHCDDFDABDAD@FEFOBCJ[D@HEDDNJBDDHABJIBBvGLBJAH'],
'encodeOffsets': [[
123901,
31695
]]
}
},
{
'type': 'Feature',
'id': '310118',
'properties': {
'name': '青浦区',
'cp': [
121.1751,
31.1909
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@RUNKdOFDJCbRFMLAHPLDN@JGL@@APBWYCKN@TU@SHGCEJIDIJKVIZVNM`iNY@CIE@CA@KBOEGEUFCCSADEIEFCDDDIDDHC@CKIeDCG@IG@DHWFEEGCH@@GO@@O]CNpeEQDBFME[JC]DGF@CKOA@QSB@GB@@GW@@ED@AQIJIAAFE@@DO@CFI@KNG@CDACAFEGKGBEGBDCCAIFCCLIECFI@MBCLDHGNAHSF@DMB@EEKBA@@C]DEICFG@ADBHGFKCDAKKHKD@@FHGAANGEEFCHKCECBCKG@ADKCNE\\[A[I@@mGBDQQEO@BCE@AI[AML@JGACLOAFKEMM@EQKC@CUCBCCBCHEA@FF@@FM@GEAJK@GNF@EXPH@FD@M^@HIADJCFDBER@DK@@DE@CAKFOCCBDHIBCNSB@GFC@GQEEOWFICGDUAEJIDBTAHJHEB@DIF@NE@H|HBDBEH@DKBAHEF@HEEUB@FGFGCCCE@AHOB@NH@PRLVNNFBX@RC€PbAvMtBfH@DJF@ELBFA@EH@HNED@FFB@HLC@CJ@@DJ@PIRf@HE@CFF@GPHD@DKE@FFBEFFD@DEFCA@DD@IjCRFBAHFDKD@HF@@PM@H@BlbDJDBFEF@DLXB@HCD@@IFCBIFEJD@FDC@FBALLF@PAACJERACAJCBD@EL@JD'],
'encodeOffsets': [[
124061,
32028
]]
}
},
{
'type': 'Feature',
'id': '310117',
'properties': {
'name': '松江区',
'cp': [
121.1984,
31.0268
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@DLDFRN@FNELPBDKHB@INK\\BBJF@ADP@RFCRHA@nJ@B\\[\\MFLDBCH@DLDADFGLEDFFMHBBGH@EC@GLLLCBLDHEAGBCH@DEFJ^C@DB@LAFFA@CNE@GTMBGHKCAD@NEJFDKJDDJEDBCDHAAFLHFHBEBDDCH@LMJ@DEP@@CF@BEJBJIBRC@@FX@@HA@@HTA@RPBDLE@CHD^\\INFAERCfFMo^D@PP@@HG@HDFFXECGH@@JDHfCLJ@DGDCCCJCCEDJFCFTBDDVEHFPFLAB@NBFCFKFC@CHIACNOHWHCAAFIDD@CDAGEI@ACFMF@R@R_@GQED@EGFEQEDE_IAHKAEXCQUOQCUDEN@ZI\\DDmAMHCICDSOC@EG@BKHIGMIBCGOCSF[CUHCGEBCTKA@cE@@IGDEEEDI@@HMDBHiHCRCBCLMB@DMCGH[UqI[AMLOAAQIB@BQFBFGBAKFE@SW@CDI@QIEBNXB@FRUFKAGJYWDENCCADBBEMGKDGAAD{EU@@DAEE@CB@HQFJt@JDBE@@FC@'],
'encodeOffsets': [[
123933,
31687
]]
}
},
{
'type': 'Feature',
'id': '310114',
'properties': {
'name': '嘉定区',
'cp': [
121.2437,
31.3625
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@F@LI@IDKJADKIEJICADGACFECCJ@HKCAFOHAJI@aCBEE@ICAEB[GFGCKL@FGEIFADMLCAEJM@ELQECEIG@BE^QKKLQCA@EHBIGQ[GEHOMGGDHKH@JOECFCjCBEFDNCACMBCILGTABDLEEOEIG@GFIMM@CGKFBFCDE@@GEAGEEACIcGaHMFITIHDN[AKF@FS@OA@BK@IHM@KCGOKBENaQIDECcPMLQVFHFB@BFBKLGD@FAJOVGIACQ@A`LPCB@JEF@RU@ANS@@RCL\\HIFpRBFRBBDKLLDADJDGBFDABHBEDNF@DGBBBADKDAHC@\\JJFBDEH[DEFDH\\LX@XLBLbT@DNJLDCEL@VJABJNDHB@HBHYFBAA@GNFB@@AFB@AFABFLFBHFCL@HJBAFBLC@DN@HN'],
'encodeOffsets': [[
124213,
32254
]]
}
},
{
'type': 'Feature',
'id': '310113',
'properties': {
'name': '宝山区',
'cp': [
121.4346,
31.4051
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ˆmÖoÖiƒ½[s[YEUJU`SCIEBCCWJY_LIICDWU@@FaBCJIB[ICH[@@CDKEE@MK@@IMCAEBCH@AMFI@SMGEFGB@FK@BHCAIFJNQD@FEBDFMBKGACG@ECWH@@CDDTOEEBGEK@GC@EE@GPHFR\\JHGA@FDBKRLL]RAFH@FJFDKR@FINBFKDCNEBFJEHK@DLEH\\HFADB@JFFDA@bIJGBEPDBGLI@DDEFBDCHDBIJJFCLIBCL@JKJE@ADHDBHJ@HIBBDFHBBAEIJ@BJFAVL¢ˆ'],
'encodeOffsets': [[
124300,
32302
]]
}
},
{
'type': 'Feature',
'id': '310112',
'properties': {
'name': '闵行区',
'cp': [
121.4992,
31.0838
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@T@@ELE\\BCMJGJSNEbGdHDJFBJAFIEIFCEWG@@gMENSFCVJFAxR~B@IH@AIiI@GE@FGEAFQPDRiV[\\DFSGMHAXHDOMCJCDETBBNVJJI@DD@ANNNH@FILDDMFBDHNDHKL@XDFGLD@EHGFD@DDB@CDDHCDAEAHG@ABOJ@BIaC@CECLKPFNCDCJBiQEIF@@@OGBMIAEEBMTHF@NKEC@QFEGA@EBCKAACHCLJHEFHHB@AFCAIEACIC@HG@KCCDC[ECEED@KC@KJMAAFQ@GHG@BHIJYIGE@EI@A`KDWCaKcCiY}I}S[CYJM@CFDVPRRVWDFžLBBG`JCFRFEFFHC@RF@HQ`Q@E@ENBDJ@HFCB@DCCEJBBGDGXMPBDGJ@DEDELEDMA@DJF@DMZ_jMNYUUJILCJIJDFGH@TSVM@DLXZ'],
'encodeOffsets': [[
124165,
32010
]]
}
},
{
'type': 'Feature',
'id': '310110',
'properties': {
'name': '杨浦区',
'cp': [
121.528,
31.2966
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@V@CXJDKJZ`XIDDFADJvSRMDM@mFQHM@KCMKMuaOCU@BDAJSX@HKJGD@PNJCJWAGT@R'],
'encodeOffsets': [[
124402,
32064
]]
}
},
{
'type': 'Feature',
'id': '310107',
'properties': {
'name': '普陀区',
'cp': [
121.3879,
31.2602
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@F@@FHDL@HFFAPFCSDC@@XGFDH@BDLHNACEFA@ERCIMJEDBAGL@@EHAFENHHJ\\ONQBQCIBC[MKACKI@GGGH@I_G@CW@[DMHCDIBMTDHN@JNHEH@FJFPKFACSBKHDJNABDMDECAFiDEDFDIPG@GLHCNH'],
'encodeOffsets': [[
124248,
32045
]]
}
},
{
'type': 'Feature',
'id': '310104',
'properties': {
'name': '徐汇区',
'cp': [
121.4333,
31.1607
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@RADL\\NCPHFfLJaJ@FWLGMGIK@IFMDOYYFOTSBI@IMSAMSACFIDNDCPWGGBHNET[CU\\QjOCERFBEHF@@HjJBJG@@J'],
'encodeOffsets': [[
124327,
31941
]]
}
},
{
'type': 'Feature',
'id': '310105',
'properties': {
'name': '长宁区',
'cp': [
121.3852,
31.2115
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@HFFB@HF@DCAELENSJADCNG\\CX@@D`H@JHGHHJ@BINBFUGEDO[MCKQB}AwQEBUIEDMTNF@hH@FXEDFJEJIB'],
'encodeOffsets': [[
124250,
31987
]]
}
},
{
'type': 'Feature',
'id': '310108',
'properties': {
'name': '闸北区',
'cp': [
121.4511,
31.2794
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@CSG@BQGODUPWTOBQAAFMECKBGEMFKEOHADDJARMR[PGI@TEJBNG@ADBFND@JL@@NFFCL@D\\@DG\\JJADI'],
'encodeOffsets': [[
124385,
32068
]]
}
},
{
'type': 'Feature',
'id': '310109',
'properties': {
'name': '虹口区',
'cp': [
121.4882,
31.2788
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@bA@E@QHSXBDIMI@OHCLI@GTWBIACQAYIOFGCENBBARSPOXCVHPARH@DT'],
'encodeOffsets': [[
124385,
32068
]]
}
},
{
'type': 'Feature',
'id': '310101',
'properties': {
'name': '黄浦区',
'cp': [
121.4868,
31.219
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@NEHFLAFDHDPEAMZUHQQ]IMKJG@EPERABHBGRUCCNGV'],
'encodeOffsets': [[
124379,
31992
]]
}
},
{
'type': 'Feature',
'id': '310103',
'properties': {
'name': '卢湾区',
'cp': [
121.4758,
31.2074
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VDHQGABAFQFOH@LIiKKHEXI@IbAFZB'],
'encodeOffsets': [[
124385,
31974
]]
}
},
{
'type': 'Feature',
'id': '310106',
'properties': {
'name': '静安区',
'cp': [
121.4484,
31.2286
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@DLLB\\NPGLFHUDMYABEeKEVMAAJ'],
'encodeOffsets': [[
124343,
31979
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/shan_dong_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '3706',
'properties': {
'name': '烟台市',
'cp': [
120.7397,
37.5128
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ŤLšLllVń²è°xżĢĠÆl҄šŤbœ„V¤ĊXnŽlĢVĊ„Òš„È°ĊŰÞè˜L„±@џn»VUźċ²»ÆkôVɆkĊŃ²kŤVVwUUVmUaƒ@KkU@ƒmUmmk@UwUkmW@UVIXa@ƒmw@a™KULƒaƒx@Uk@UbWU@yULmK¯@kXƒVUwm@@JUUknWKUVƒLUbU@™wWykIƒa@w@mUI@ašUVynIWa„k„@@W„bl@@knmƒK@wnIl™°Kna@V¥ğ@ġUķ»™¥@UōJƒX¯¤k@™wmI¯‚k@mwƒak@@šlX@bUJ@VƒbknWxkLkxlŽšLVlkLmŽšb@bU@ƒbU@VbU`Vb@n„L@Žmb—U@˜VnUVmnU@mm™@kIUWVIUK›VkkUJUnmL@VmLUaVWaXamU@™™U@KUUmVƒU—JƒU™VÇwğn™mƒ@mXĉV@l¯xnô'],
'encodeOffsets': [[
122446,
38042
]]
}
},
{
'type': 'Feature',
'id': '3713',
'properties': {
'name': '临沂市',
'cp': [
118.3118,
35.2936
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˜bXlƒl@zlV@lXXmŽkbVVlš„U@Vn@@Vmb@XšKšVX„WJ@XXl@„‚ŽÈbVLšUl`„@XXV@VVUxVbUxVbš¦„@‚WnXVJ@bnVUzl@„°Æx„U„KlU@mUUnUlUVWVUnVV@XX°V@Všll@Vk„aXVl@Ux@bmbXLlKlb@b@bUJn@@„„b@n°x°K@an@@UlLVKVbXb@bVVnK°LVa@UVa@™Xw‚KVxnLšU°@naV@UWUkWƒULmV—wÝKUUla@aó_@mƒK@aUU@ƒWUkwVm@aVI°W„@@IUw@a±¯@¥kUVUm@a‚wkw™@ƒK@kVKk@maXalI@alL„WXblaVLVU„V@LnKš@„l@w˜aXašLlnUl„LšmV@n°J@_VmnIVym£UKmI@WnIVm@anUVmÇ_kġIÅWUXÇm@U@ݯÅ@ƒ™@naWƒ™IVW@IkK@klKn@naWIƒmk@ƒaƒbkKkLWn™WkLWmk_ƒ@UaVƒUKmLUw@mn£WwUmU™ƒaóV@UkUm@UKULUwmJUX@WW@XҙzVblJXŽWXk@UVWK—X‚¤UL@xU@ƒ@ƒVUaU@@XmVkLmWkXUyÝLmKXnVŽ@n@l™x@bWLnVVn™`knULmxUl„„WLXŽVb@VƒK@z¯x¯¼Wx™KUn@bk@ƒlƒVVVz'],
'encodeOffsets': [[
120241,
36119
]]
}
},
{
'type': 'Feature',
'id': '3707',
'properties': {
'name': '潍坊市',
'cp': [
119.0918,
36.524
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l@@UšK@Ž@L@bX@@VlL@JƒLUVnX@`ÜXn`V²mJ@bU@@n„b@l°xnnĸVƚ°@„ƒĊ£Þ@lWnÑnkʶJmó°w@kk»V@»ƒ¥k@V@kw@wVm„a˜Å„mšaô£ŎƒXI@mln„Kla@mV_UKƒ@kUkw@alW™IU»™mƒ—@WUIl±UUÅU›bkJƒ@a@wUKUaVIÆmXIWaka@m@Ul£XKVw@ƒUIƒJUkmJ™ƒVkU@a„ƒWK—ImVƒ@UxmL@bX`WXU@U`ÇkUak@@°UblXk‚mLUKmL@VULóƒƒVk@@Vlbn@Ub@ċaUJUbƒIUlVLUVVbVKX„VlVXU@mb¯@™VmKUwLWx@šUb@VUb¯KmLUU@aWaUaULkK@Vm@@b¯L¯w@mƒa@ƒm@UUU@U¦lJUXƒVƒmkb@nm„XVWŽkb™IVxUV@VUbWLXVƒLW`Ux@nk@Vn@x@VkJ@œV`mXkŽ@V„xV@lVššI@VULš˜VU„IV`°bVXXx„V@VWVnL@xV„Ub'],
'encodeOffsets': [[
121332,
37840
]]
}
},
{
'type': 'Feature',
'id': '3702',
'properties': {
'name': '青岛市',
'cp': [
120.4651,
36.3373
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„@nU˜JXLƒ„@blVU‚š„nIVl„IVJ@„UxWLk¤@V@nlbXbWJÅnUJVbVL@x@b„ŽlIœaÆVVVk²VJ@X„˜šnV¼šJkX@blxlV„@VLU`@nkbƒLkm@nWJō„ó¤™bƒn—ƃbUn@xlxU@l@„¦@¼UŽl¼ĊUnW„@šnĠmÈxšU„V˜I„VnUVV@LšV@šnVWbXb‚UVbnK@UnKVmVIllœUVLUJVXlJš@nnV@nmVUUm@—˜Vna@ƒK@mUaV_UaV@„aV@@a™anlKUk™KklwlKXwlm„a@UVI@akW@™l@„bnxl@°nJšxl@°£„WŎIUÑn»lašmô¹Ŏ¥VaUUkƒmkġWɱIUUŹ`›@kk@ĉƨřV¥_Ç@™Ĭƒ¤ÝL¯m¯£ƽóķwUW±ī¯kōaĉĕ™kğmó°ƒbW@UKkLUaƒVmz@V@ŽUxVn'],
'encodeOffsets': [[
122389,
36580
]]
}
},
{
'type': 'Feature',
'id': '3717',
'properties': {
'name': '菏泽市',
'cp': [
115.6201,
35.2057
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@¥šIVUÈmÞ»@UlU@Un@VW@UVmkk@aVUUKVÝ@UVknK@UV@VVnIVƒ@wnƒmwmKXaWaXI@UV@Vy²blkVKkam™U@kb@Um@VmUkmƒKmkXKWwkU@Ulƒ@UnK@UVUUm‚KXwšUVL„w‚K„U„@@Wl@@wUkV¥—@@I@W@_V@VWUw@UUa@aƒaWa—@@_mKUw™l¯amzmV—@WK™nU@kƒWLķaUKbÝVmV@UWÇbÛ@ƒX™°UbW@XŽm„Vlk²UJUbmLÇxÅWUzl‚¯Ll„@VkK™XUbWJ@bU@¯@™ƒkbƒLmKka™„@l™_WšXºVbUz@J‚n²V@¤lX„Ž„nV°šLn`WbXLôVlKVUšxXn˜lXLlU@bVV@„XJWLUVnVV@„„@n‚l„°nn‚V„KÈbVXÆJU°VnXV„kV@@xVL„@šWlb'],
'encodeOffsets': [[
118654,
36726
]]
}
},
{
'type': 'Feature',
'id': '3708',
'properties': {
'name': '济宁市',
'cp': [
116.8286,
35.3375
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nam_nKlVLXa„Il`š_@KVVXI@m@w‚ƒ„@@k@Kšnô@n`VbV@@L„L@KVVn@VX@‚VL„Jl„š@VUUƒU@Uam@Uk„wšKWaXamkJmIUVUÈblašUnV@kVKl@@lXL°kVJ@VÈnVJUX@V‚LXl@xVLnU‚@VK„V@a„IUaV@„bĊU„x„K‚kVJXUlV„ƒ„UVašI@WUI@KlUnw„mWk@WXIWƒ™U™L@Wna@Um@@UƒVk™UUlanWW@kkU@y„kWk—aWVUlÝbUU@kƒJUIU@@ƒ™JmaókƒLKǃUUkKWLk@WbkUUaƒbmKn¯°¥V@XwV@VanaVaU_@Wlk@WÈ@VUÈVVۂm„aklKȯlLVUX@lK@aX@@kV@VmV@VwnJV_UWUwƒX™am@kW@wVUkKVIUUVmU@UV@IVK@aUL@aƒV@Lm„UKmx@ŽômLkUWJ@šnXmlUxUL@Vkn›VUšU„@V™L™`Ub±LkV@kUKÇbÛ@ƒU™Wó_mJƒ@Wk@@Xƒ@ƒVLƒxUK™VWxLVnUV@VmL@Vk„@VlVXxWLnl‚Ln„VlUnn@@VlaV@nšlbULkl±aUzU@@VWJXbWbnLnxm„@xU„mJUUU@@VmLUl@VUÞVLUV@bllUn@VUXm@@VkV@VݼÇnUV™J@¦nnƒlnVlL@„Þb°KVV'],
'encodeOffsets': [[
118834,
36844
]]
}
},
{
'type': 'Feature',
'id': '3714',
'properties': {
'name': '德州市',
'cp': [
116.6858,
37.2107
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„¤@VmbVXnVVbVJššX@Žll@z„lVInl@„@bVxUbĠ‚l@Èbla„IšxXVWb@L™@n‚ULWVXXšWWLnL@`@LUVVL@lVn„JšU@UUk‚a„™nš‚Vôô„b°¼V‚ސXš˜‚œIÜbČa˜bôW„XÞWÈzÆmnLVJ°ÈnlV²lbnW@™@UƒUV™šmnwmkkKWƒkla@mVIUKUa™aUwmn™JU@@amIk@@bVlkX@mmUklUUƒƒa@_UaUUƒV@wƒw™WkXmW@I@WUaÝU@UXaWUU@UUVW@UUUWUn¥nUVa@m@k@alU@wk™LWa@UUm@@wnmU™wla@anKn_@alK@ݙ_ƒ@@WUUUmlkaƒIƒyU@UwU_Wa¯yU_mWUwkImm@InWWUk@@UVWV—kW¯U@VƒL@b¯b@l±¦@šVV@lUbV„@škxVnUšl¼XV@b@lV@nIWxnbƒ‚™@UU™LƒxÅxm¯ƒaUƒ™wU@mUÅVÝKULm@bmKUXó@'],
'encodeOffsets': [[
118542,
37801
]]
}
},
{
'type': 'Feature',
'id': '3716',
'properties': {
'name': '滨州市',
'cp': [
117.8174,
37.4963
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Vb@`„bV„kVlnV@nlWUk@al@nJ@bV@šInmVxšbVbVLUJ@nkb‚lX„lLnlmx™nUš„V@V@šmXn˜lbĸ@nnVx‚b@lnXV@UJ@nVxšxnxVbÆVn¯ƒĕ‚@@wÈçUÇlķVIœb‚@„Çmk@¥k@UkUK@aWakUóJW_UW@wkkWK@U@Kš@XUƒƒUkmUUalKXala@U@kkWlkÈl@kšV„mVIVmU_‚a„ƒƒwnwVW@wƒwUƒ@wU£ƒwkJWIyUI±bk‚VUJ@nmV™Ukl„Xmx@lnbW„kVƒUkLWŽƒxkKUUmUkb™J±—LÇxUKmkUmkkW™™a„mUaVkšJÆ_²KĠ@U„W@w„U‚¥nUWwK@aÝUkÅVaVK@akLWƒƒƒ¯I@bnbVx¯JW„ñšWbUL@šƒŽnV@VmbkUUV@IÇak@@bWak@WJUœJWL@bXV@„‚@„V„Jlb@zUlUŽUImšnbV‚mz@°UV@V™bV@@V@L@xLmKUnmJVX„J@VkLW@UVUL@b'],
'encodeOffsets': [[
120083,
38442
]]
}
},
{
'type': 'Feature',
'id': '3715',
'properties': {
'name': '聊城市',
'cp': [
115.9167,
36.4032
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ô@VWnL‚an@VKÞLÆUnVV@šxV„„bn°Æw„wšKVVš@„maXwmJU@@k@aWUk»V™Umlw@™UƒVa@kUU@™²¥@k°a@a„K@U›ƒU@mmm@ów—ѱ¥¯@@w™Kmw—I›¥kU¯UmakJmIUaƒVkKUkm@VUUa™Uƒ@UaƒKUK¯@™w™UVŽUIUKVw™k™¥™wƒbVŽ@xn„@lWnXxlL@`„XlJX¦l°XxW¦@¦Ul™n@Ž™@@Um@@VXVmx@¯bllUnUJ@VULVn@b„xV‚VL@b„„VlnVVblV„ÈnVlIVJœLô„lJ@xl²„'],
'encodeOffsets': [[
118542,
37801
]]
}
},
{
'type': 'Feature',
'id': '3705',
'properties': {
'name': '东营市',
'cp': [
118.7073,
37.5513
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ͬUǪlô@°Uœw°ōĠ¯š»Ģ炻XÇ@w™wƑa™ÇƒkwVƑ¯@řķUmm¯w@kƒa@mV@@anIU±m_ÛW@_mWVU„K@IkK@UW@@a@K@™L@Vk@±U@UV@lm@mUU@kLm„„xV¤@xV„„x@xUXmx„xƒ„bV`UnUJƒn™U@lÇkkllX@l@VkbWbkLVbnVVl„„WV™@@L@VXLll@xVXX`ôIlVXb@bVLVll@@¦nlƒÈ@›aUJkĸVÈÇè@x'],
'encodeOffsets': [[
121005,
39066
]]
}
},
{
'type': 'Feature',
'id': '3701',
'properties': {
'name': '济南市',
'cp': [
117.1582,
36.8701
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²¦˜Òôxn@nn‚@V‚œ„°VlXU˜UX@Vl@XVmX@JnnlJVxnXV`°zXbV`VxV@„z„JlbkŽVnVV@X„@š`@ÞkL@bm`mL@bkbšxnVm@xn@VV‚@XbšKl@xkV@b@l@nUbmVm¦XVVV@VUXVVV@XVWb@VÞVVb@X@JnXlWšX„x@x„UVV@aVKVUX@lK@UƒIUWnIVmnL‚K@w@K@UU@ša@UVU@¯nyUman™VJVVk@ykaƒIƒU@@ƒWU@aXK‚IV›XIl@Xb@al@Èb@JVUlVna@UmU„@™VKXaò™Xƒ°IUwma@aU@UU@wVW@фw@a™I±`kbƒUkw™UmJ@UkmÇUUkmKknUVƒ@mJUkaWkƒa@KmKkUƒLmyXa¯_@WmImmbƒLmUkVUbUVƒJ™bƒUkkWJkUƒl™IUm™k™Lƒ›„lK@knaVmkI@mWaƒLUK™UU@@VmLUVLWK@UUUƒWUkkVmx@„Vl™¦'],
'encodeOffsets': [[
119014,
37041
]]
}
},
{
'type': 'Feature',
'id': '3709',
'properties': {
'name': '泰安市',
'cp': [
117.0264,
36.0516
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n¼šŽW„nxšL@x°@š¥Uk@ƒnwlUVl„XVV@VXL‚KVUnK@UV@šVVL„KXb@nlJUnmb@lkLƒ‚„œšKšlVnšJ„klVXIll„Vša„IVUValUnV„K‚annnJ@X°`Wbnz„KlVnL‚Ž@L„bXl‚bVlnI„@VUU@UmVƒ@U@Uš¥@VmV@@_Ua@m°@@ƒ„kmUUm@UVmn@nX‚@@a„anJVUVL„mlIVJn@nkVLVa@KVmVLXVVLš@@U°bn@VaV@@K@aVkœbWaXUVymU@aUImWXƒ@™¥UaVwUaVwUUU@WWƒ@k_™VUKÇa@ƒƒnmxkV@LVJ@X™JUbƒVƒ„kUWVUIlƒLƒwĉVƒaU@VbƒJ@bƒUUL@mVUK@wWkK@UVWUIÇm@UUI¯lWK@kk@UL@lmU™VkbÇaUVVnJlIn‚WbXb™LƒxVln@VbV@V„UV™@kƒƒIUK@UWm@UU@LƒK@KU@Uam_ó@™m@L@lƒ@„@x@nWJUU@L™`k_ƒJWbUKkmLn`mb'],
'encodeOffsets': [[
118834,
36844
]]
}
},
{
'type': 'Feature',
'id': '3710',
'properties': {
'name': '威海市',
'cp': [
121.9482,
37.1393
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VbUnVVUxĊ¼š¼ô@Þф¯‚WǬLŎUÆW„¹Uǃō¯ÑƒÝkţ™™ţóġ™óL™ł̥U™wm¥kÝmkkKóbÝ@U¦@‚mb¯LkšmJ@x„Lmn@lk@ƒa@Xƒ@ƒlXbmJUz™V@bVJ@n@x„blJXzšxV@Va„KVUXLlmVV@In@Vx„UlW°@nLVK@zXVVal@@V„w„bVKšL@bnx@„WbUJ@VnXVlVxl@nnnV@„lV@L„‚'],
'encodeOffsets': [[
124842,
38312
]]
}
},
{
'type': 'Feature',
'id': '3711',
'properties': {
'name': '日照市',
'cp': [
119.2786,
35.5023
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@UaVUUKVk„JVaVIČb@Vam@ka@Ul@„Uô„VK@UnKVLnKlkWVa@¯l@VbÈlV_V@XWW_@anKVwUmVw@@Uny„UVblKVLX@„aô¯ó¥mÛĊÿÈ¥š™Þ¹lUīƒ¯Kĉ¼ʟbÇV™U™ŽUŽ™XmakJUnmV@bUnmJ@XnJVLn¤UzmJUn@`¯ImŽU@™nƒKVkkm™KWb—b@xƒk™@mL@KƒUUVUKkbWaƒXkK@bkJWbnbl@UL@l„Lš@lxx@b‚nUVlV@¦²°@bVx@Jƒ@¯XUJ@bUnlxVŽ„X@‚VV@b„L@nô`@bkbVVÞL˜xnU'],
'encodeOffsets': [[
121883,
36895
]]
}
},
{
'type': 'Feature',
'id': '3703',
'properties': {
'name': '淄博市',
'cp': [
118.0371,
36.6064
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nƒlKV@nVn@@kVU‚@²VVaUƒ@wmKXU@UƒUWwUW¯aU_ƒJUV™—VK@U™JU™@kUƒw@UlnWU_@›lI@U@wUml@@mVwX_„KWUXKVa@UVUUwšJlaXWUnƒ@mla„n„UVWkIV¥V@VVVI@a@akakLWKna@aVwk@WUƒbUlk@™k@U¯UWWU@mUUVUXkVmVVV@nkVƒLƒVÅwƒ¯k@WVXb›aUl@bV@@b@xkVVXVxkJ@nk@@ŽVLUlVb‚VXUVVUzV‚™LVbUbV„VWVkLmškJ@n±@UxU„VVkV@bƒx@ÒUX@xVVV@°J„„X„lK@bULUblÆÞV@b‚LXxmV¦ƒV@xƒXVŽğ@±LÅ`™IUlVbƒnšbXšllVnnlVLÈw˜K²ŽšIlanVVVlL„wXlK„VlUXƒma@knwƒWlkšVnU@mVIUl²aVJ‚zXJlI'],
'encodeOffsets': [[
121129,
37891
]]
}
},
{
'type': 'Feature',
'id': '3704',
'properties': {
'name': '枣庄市',
'cp': [
117.323,
34.8926
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚yUU„U„kl@@aVmšLXw°»°w@y„L@UUaWXKƒƒVknwVKlmš_UmmUXK@ašw@k@mUWmUL@ƒ@™@£@KƒbÝV@akw™aULmƒƒbUK™LUU@lm@—°mL@nUJVxVXU`mIUxU@UnU@@lW@@bkLW@UVkKÇ°kLlŽƒbnUÜÇUUVÇ@@Xkl@XV`UbmbUbU@WxU@¯¦m°nL„aVblVXal@XKlLVVȄ‚L„KôlnbšI@„V@VJ„I@lVVÞaVkXU'],
'encodeOffsets': [[
120241,
36119
]]
}
},
{
'type': 'Feature',
'id': '3712',
'properties': {
'name': '莱芜市',
'cp': [
117.6526,
36.2714
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lmnLVlÈVln@VnIšVlx„Vla²_šJlUUUVƒVw²@@mlIn™lKXU‚UUƒVaUašKUVyUUWVUUaVkUK@l@@mlIUwUWlU@w@aU@@LU@Ubm@¯a@V™@UKWUUKUn@LUbUKmlm@UIkJƒnUKUVmIƒb@b@mWm@Un@VVnnVƒl@„¯@@nVb@`U@Un@Ž™¦@V@VU„VnV@'],
'encodeOffsets': [[
120173,
37334
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/shan_xi_1_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '6108',
'properties': {
'name': '榆林市',
'cp': [
109.8743,
38.205
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@™ýVƒnIW»ƒW@»kUÇL—݃U¯¥ÇIUWWїUWwX¯mƒ@»n@ÜÈķô™@a±kȱƒw„ÑmwçċmU»ÆkkVyIm™ĉÿ@ƒÝ¹ƒWnwÇVš™Åaƒzmmĉ¦ó™kVmx™xU¼VškVm_UlVlk„°IV‚kmJa›¦k™™LmmV@XmKnšlUô›VXbƒbƒ@UaÇLğܙ™Åwƒ£mKnmċwÅ@UkƒbmaVƒƒƒn@m¯aU™Jm_k˜@kWXyl@@kÅamw™LU™Þ™ƒ™mWÅzUKƒš™Uk±@™b@nnK‚bX¤mzVšŽVxÇn„‚¯„@ÒknWƒƒVUbkķÈÑWkk@Va™™U@„mUkbƒÝÅ@Ý¥ÇbkĬ™XV`kLǍVmalUUa™nV±nwmkƒJ@Inƒ°KVw¯UnÅ@¥™ƒ™U±bUU˜±œmWbÛKWnUm`UƒVK@bmnœm‚Èż@V„L@xƒxmš„Ť°nŽ@VmK™²VlšlKk„ô@„êÜV@VXLlmš¦UššV°Ș¯²ÿ@¥š@ƁĊ˜²IšmĶnnb°b„KVƒĸLl„Þ@UȮš™Ü°IVƒÞÝސlŽœx@ŽķĀWŽ„Ux„èƐ@š°ŽXnšlĊĖ°m„nƒšV„²V°ÒƦ„aބ„˜@zll@bÞĀšlš¼nKĊ¼óȂb²±šIǪÒ¯ĖV@„lxnVlk„JlaXwŌĉ„„@VnŽššlÆĕ„UÆLœèŌŤôxȚlUœ@šxlaUċĕXm„IWmnkšVVƒ„VW_@aÈWUUmk@ƒ¯çVm»™±W¯n¥V™mkXw±ÇVwƒ'],
'encodeOffsets': [[
113592,
39645
]]
}
},
{
'type': 'Feature',
'id': '6106',
'properties': {
'name': '延安市',
'cp': [
109.1052,
36.4252
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@kkÇmIšmUwVkUƒƒU²WmšVkm@m`mIĢĕUƒVa@™mXƒƒÿVVkyUýšĕ@l_UmnƒW„KVkţ™™¥™aƒwğ@™@aôƒ„ƒWa„kUmƒa¯¯™a±£kx™mmxUwÝ@xmU™b¯K™wó„Ý@kmm¹Ub@lklVbmnnVUV@x›UknƧJUX@ŽƒLÇWkw™LķƧÅwWJk„ƒLkþĉxWz™JUnǚkš@Ɛk¼ÜÔÈKšè@°lșÆk¦l„n@l¼@l¯L™°UU™VÇ°ƒ¹—`m¼mXk‚™bUaƒV@U¯x@¦™Ç™„UUmlmUVm„nnmlkw™@@šƒ¦Å‚ÇLmx¯Iklš„@¦mÆ°VUx¯Lm„@J„InlmxU²šmVbkV‚bUnȎlKU_šWlīÈaÞ¦Æ@„ÞlanV@ƒšVšUbl@XlÇÒĸlŽVa„UX„lm@Ñ°ƒƒÈmUw‚U™nyW£amL@mša²@lšV„™VLÆynX„šÝšVššKnxÆb@lk@WzXŽ@ll—n`šIV‚°b@n„m„„‚Unb„aVlÆ@ČxmnnL„¤ÆxššĠÛÈKVb„@„aWaœU‚ókVm™nL@W‚UnnšKlšœ¥‚bnIlU¯JlƒUkVkn`lUU™V»šwnwlUôšĊ¥nn„yÆb'],
'encodeOffsets': [[
113074,
37862
]]
}
},
{
'type': 'Feature',
'id': '6107',
'properties': {
'name': '汉中市',
'cp': [
106.886,
33.0139
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lKnb@n„lWb°bkxĸwVb@ł„nlŽ„ƒĊ¥šL@XŽl™ÈƒVblÈK‚b„akVwôml²`‚nœ@‚nVKœl˜k²xŎƒ°¦VU„JĊw@çnWçރVkUóÛ@¥kwš™šUmƒX¯WšÑkƒ@UymIUwlUn¥‚mUk²a°¯V»@™ÝVș„ÝċÅÅVl»@l@a°±@_kammÅb™a@ƒƒm@ż™KknõĠ—@mšƒ„¯LÅw›‚—LVxmb@¼kV™@mw¯wVakKW»X±¼¯Vkxƒb„¼WŽ@nx@x±bóakbƒ@ÝmU™@ķÓÛL™kƒVUm™k¯¤ÝLUlÝ@Ýz™š„x@x™°™™™bƒmƒX¯aUJW¯—k@bÇWƒwÛwWxƒ@XWlb@Žƒ„VŽÈUlwšLnl°VlUô¦œU°¤VšUxVXUxlbkVVlƒI„°„ÅVlU°m@k„ÇU¯xUlƒLUlVL@b™°ĠInĠ°ÈnK‚„@xÞa²n‚aUyšXUKVkšWô¼Èa‚z°JXUVÇV_„JVƒšz@Žnb'],
'encodeOffsets': [[
109137,
34392
]]
}
},
{
'type': 'Feature',
'id': '6109',
'properties': {
'name': '安康市',
'cp': [
109.1162,
32.7722
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„bĊaƨèšwôô„¼šb°ašXVƒÞVUÞ@‚aXƒm¥kImx¯¯ƒV@anU@UÇéğL@ƒ¯¥V£mƒ@ÝÈb„K‚™„X°wČÿ˜ƒ„b@xÈblxȯĊ„„mÆUVƒ„nÈ@ƨÜLĢ¥ƒŹnƒ°Vnn˜K„aô_ȃšwU‚aXmnW‚¯kl›LXƒÇ™ō¦ÝaÅVmbğUn¥±wÅéVƒan¥ƒ„U„»°am¥„£ƒÝ@ƒ„wVw™¥nU„уUmmVwmķIÅaóVWxkblb@ból@œğÒĉ¤ċXƒ˜¯X™xk„Ç@óÆÅx@š™xķ_kmݎǣkblb@`¯²@bk‚‚@k¼ÆUČƃÞǚÞU@šU¼¯°±bVlnm¦kVVxnJVz@‚l„™ÒXW°n„™V™šlx@¦ôÜVUl݄Xèm@è'],
'encodeOffsets': [[
110644,
34521
]]
}
},
{
'type': 'Feature',
'id': '6110',
'properties': {
'name': '商洛市',
'cp': [
109.8083,
33.761
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²nl‚ôbš„°aVwnKÞIš`°wšXôw°VĊ°@ŽÅš„ÞÆV„zÞK@xšŽ@a‚LŚ@b@ŽnLlƒ@šln„mnLVw„a„bVƒ‚VnbU¼„Vƒ°„bl„šbÈ@ĶŦb˜@nÇ@amIyUI@ĠVmôƒU™ƒVwkwlanJ„¯lwó¥@an°Jš_„‚@š™nóƒó@£l¥UwmašÑ@ƒUm±V_ƒJ—£›J—UW¥¯@ƒ_k¯¼mUƒVUè¯b@wmL™»ğVmağI¯¤ċIUW™XƒKĵ¦ķaƒJUb™IƒlUóVmk@WÅÅÇ@ƒmU„ÅVƒnĉƒÇ°kwÇa@wƒa—„ċĀ¯xƒWšƒLÇa@Þn„U¤°¦@„ĠKÈê@VmV@b„U°°nwlJn¦W„bÝ@VŽ'],
'encodeOffsets': [[
111454,
34628
]]
}
},
{
'type': 'Feature',
'id': '6103',
'properties': {
'name': '宝鸡市',
'cp': [
107.1826,
34.3433
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@ƒ„£@›°Išb@¯°ynŹƒaUƒlƒU£„Umšĵĉ@@ylUÞ@@£kWU¯WaU£¯ÇV¥ƒ@kb¯wƒn™¥ÇkUÇnUƒ@¯±›kULm›@m±_kŽónUxlŽƒbaÇLkŽUaDŽkšW@™Kĉ¦ƒ„kƒm@ŁUaķxlw¯aXaƒk@mmakL@šmšÛŽ@¼m„@l„XV`ƒn™KUš°°@²š¤UÈ@VxmôƒxKl„VV²aVw„Xla„Vlx@UVnŽÇnk°ƒVVL™lkI™šƒJÇk¯V@šknƘn@lznmlVkzVŽ„VVxš@Ux„z@x±¼VxxU„l‚kb˜@„¼Čk˜VXlĠkôV²w‚LUKlwœJ@a‚IV¥Þƒn¯Ün„‚„@nk˜l²kÆ@š°„aVbnI@™š‚Ťn'],
'encodeOffsets': [[
110408,
35815
]]
}
},
{
'type': 'Feature',
'id': '6105',
'properties': {
'name': '渭南市',
'cp': [
109.7864,
35.0299
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@ÈôL„xUŽ°„Þ@mŽÈnl¤nUôL‚wX`@ÞÝL™ŽUšmLô„„ŽôbVbnºlnÞ@ôƒšx°LšanV‚wÞ@Vxnwšnlw²¤šb°°„bVnƒlXbƒ„ó„@bš‚Ġ@„xšbš¦ŤšV™Xġ„£W¥ƽɽƒó@ýóƝÝ»„£X™mƅšĊkUƒ„@™™šó„kťaĵŽÇ@™akƒƒa„¯ƒUV»maUU„ƒaƒbUxmKƒnkm@™k„mK@ƒxó@¯n¯KǦ@ôÅèlxkx°nƒƾ¯KU¯WķL@VÝIUb™yWbX¼Ç°'],
'encodeOffsets': [[
111589,
35657
]]
}
},
{
'type': 'Feature',
'id': '6104',
'properties': {
'name': '咸阳市',
'cp': [
108.4131,
34.8706
],
'childNum': 14
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šIXyĊwlý„KlƒXIVaķƒ™»a›£„¯aVU@a™‚wÈō‚ašL²»‚VœUln°WȯW»XašzVaÞJ@Uƒ»@¯Ýbğwly@£kÑţ±Wу@ka™IUƒƒnƒ@¯ƒómţU™b™U¯lÇIÝb@¤Ý@kV@zĊ@™ĶnƒVV¤k„V„„bmź¯z@°™a¯J@œƒ¤@„„bUx™bƒ„@`™xUÔ±ºVXœW‚„UnUJ‚LĢ¯ÈKlblmÈXŎ°šU„°LšŽlkÞKš@Èxl_°ĶUÒkblš'],
'encodeOffsets': [[
111229,
36394
]]
}
},
{
'type': 'Feature',
'id': '6101',
'properties': {
'name': '西安市',
'cp': [
109.1162,
34.2004
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°²@‚„mVVÈÈlš¦„m°xla„@U¦°ÈV¤XbV°lXÞaÈJ°kšVšaŤVôn°„„@„mV„šJlb„@XÒŤ²lÒ@¤kzĠxÞa@°„¼ĸK°XV‚°L„ƽ¯mlwkwÆç@óÈ¥°L°mô@„w@aƙK@b™@wÝLƒyÅUƒÝƙ@ĉ¯¯Uóx™W¯x™_ÝJmLUx¯b™ƒóak±mÝUU„™W¯b™aƒ»óó™xƧçĉbƒaĉxƒIUV¯¥ō„±w—l'],
'encodeOffsets': [[
110206,
34532
]]
}
},
{
'type': 'Feature',
'id': '6102',
'properties': {
'name': '铜川市',
'cp': [
109.0393,
35.1947
],
'childNum': 2
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÆxĸƨšKlxÈX„K@VWƨIlmœV@wVUmUnmUalk@kVaUaóaƒóƒnKV™šÞK@ÝW_xóKmVk£ÇmnÝ@¯ƒVƒwóK@ǯXkm›VU±¼™KbÇŎx‚š@bUV°bƒœ¤‚bš¼ĸ„Ub'],
'encodeOffsets': [[
111477,
36192
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/shan_xi_2_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '1409',
'properties': {
'name': '忻州市',
'cp': [
112.4561,
38.8971
],
'childNum': 14
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Vx@lnbn¦WlnnUšmš°š²VšV‚VVVnUn„ºlz@l„„@Jƒ@kXWVXl@Lƒa@„ƒKUL„ŽlbnKlLnK‚LnKÆXn°šbVV@bUVl°Un@LnaVJUbW@UX²l‚@ČwlVVIšWnkÆa°„„anV‚Kn°™UW¯@™aVUVk@Un@„aV@ValwUanmWU„k@WVUUanaVwnLVl°@nk@mVU@UVK@w„LVKVU@ƒ„K@UUKVUV@@bnL„a‚V„aôšlIXmlKX_°KVV@bVV„@šzV`kblI„V„Ul‚šL@bnV@V„Ċll„„VlIXW@k„a‚U²blKšVnIlJ„albXXlWVn°JnšnL@l@XlJlaX@„X˜W²@l_VmnKšU„blU@mnkVK„¯@U@ƒma@kX¥VƒmakkƒLƒa@aƒ@WIUUVXWWnk@a°a@kkm@kUUmJm@WUUUIk`m@V—kaWWkX™KmƒXk¯ƒ@WKƒLkak@±bƒw@ƒaƒa@akaƒ@ma¯@ƒL—KÇÅkKWbkmġ™±ÅUƒLUK™VVkƒm¯LUVVbƒ„UwUW¯bm„ƒULƒxWJ—@ƒklmkUm@@KnwVkVK@akwƒ@@a¯bƒKkn›VUI™b¯mmbk@UbmKUL@xUUƒ@klmLUŽlVXI‚VVVUVUœU`mLXVWbXnW`Ų°xmŽxU@mĉƒƒwU@mbU@UƒmbkVW¦kJ™@ƒX@`¯Im@UlUVVnb@bWJXnmbƒJUU™UUaƒ@UamIkaƒxƒ@@x@b'],
'encodeOffsets': [[
113614,
39657
]]
}
},
{
'type': 'Feature',
'id': '1411',
'properties': {
'name': '吕梁市',
'cp': [
111.3574,
37.7325
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@a@w„@„wlbnJVb„@VbšVVV„InaWmXI@a‚aUmVUVkn@°J@_„Wš@lIX¥lUnaV„V@naV@„xĊ„n‚V@‚wn¯wƱX_WmXaWUnKV_V›VUUUUWJkUVnKlk¯™@@kmKUaŁ±KkU@WmI@WUIlUUmVwXƒ‚w@ƒUlUVwœV‚@„Lnb‚W@anU@UšaVkô@l»n@na˜JnUÈLVaƃUUVm„VKVƒ²L@mU_lK@UVWkU‚a@a@U¯aUaƒÑóÑUb™„ƒKk@@aƒk¯mVaUwVƒÑkWUmK@UUKmXUWÝwUa™LUU@aWJUUU@Ua݄U@WL@VKVaVI@WnU@alIVKƒƒ@kIƒmIkJ@™m@ƒ™@@_™K@xƒ@kaW@U„@Vmn@ŽUK@mIƒJUXV¤XXWlkKƒkkK@XmJVakImJU@ó™¯LWKUV@nUVƒLkxmKkLma@kXKmmƒLƒab™LmK@V@mXVÆUxƒX@`nL„aV@@VmLUVnLlLš˜„b@„šŽ°²nx@b‚VUxlb@V¯bUV@zV‚XVĊXVx@lVn@VnnmŽUš@LlJXVƒz¯VWVXbšV@bmn™VUVk„Çþń@XVxmbUlV„Uln„W„@„Xl‚@VLXÒ@bÞJ°¦„L˜ò„@nU‚b@°„X@ŽXbmVU„V„nb@x‚x'],
'encodeOffsets': [[
113614,
39657
]]
}
},
{
'type': 'Feature',
'id': '1410',
'properties': {
'name': '临汾市',
'cp': [
111.4783,
36.1615
],
'childNum': 17
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nW‚@@UnLšK‚a„b„KnnWL@lnblKnLlw„KVU@mVUXL°KôšV@nIlJUbnI@WlL„llLXkWWU£VW„InJ‚@VL@nm@UVƒX@lb„@@wšL@`‚@„šn@V@lw„@n„VmVX„WmwnUlƒœa@_lK„wVlUn°xVKVXXWlUšVVI@K@K„n°KœwlVlU@kna@V_„Wn‚m„UVm@kXml_@m„LlKXw°m@_ôJVUV@X™l@UaV@Va°I„lk»VwUkVmwUmmVn@V¯@KƒU—wmK@U¯wUVÝ@mJƒU—nWK™@@UnKVa„_lykUmKÛnm@™x@ƒUUlwVk™ƒXW@ƒa@Uƒ@@K@ƒkIV™nammVakUlƒ@wX@@kƒ™¯@ƒVVbml@„„°UbULmlVbnbÅK±VƒKVXUJWa@ULWaUU@@U@aWK@UkxUKƒLUUUJ±UkL@V±kk@kam@UV@l@LWl@n@VVUx„LlUUx@VUV™U@aƒIUl™L@°mLU‚ƒbkUUaWUUaUU@aWK—LWJ@bUL@VUVVbU@m@a@kmKmnĉlUK™XƒWUblb—xmIkƒƒU@xWb@lkšVx™LXŽmzVV@bklVVUzm˜@bk„@Vx@xlŽU„@lUbVnl@„Wxnl@n@ŽUbV„mL‚mƒb@`X@lUX@@xlnkLWaUJnnWV™Vn@l„@bULVV@l™V@XnJVX'],
'encodeOffsets': [[
113063,
37784
]]
}
},
{
'type': 'Feature',
'id': '1407',
'properties': {
'name': '晋中市',
'cp': [
112.7747,
37.37
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@šlInJ„lJ„@‚„ULkJ@bmV@XUJUb‚L@UXKV@ރVbV@VVXI@bVVšKVbÞxVXnWVL@VnLV‚lX„ÒUŽVxUb°n„l@bl@„LšƒVaô҄ÒVb°b@VnLnnV@lmn@lb„U„V@„‚JœUVV‚Xkl@lUzmJ@xšXkl‚bUn„JVšUb„nU‚lb„V@nlLX@lakšV`Ub°š@XVJnU‚L²KlxnI@KV@lbUbVV„KnVl@„zlm@Uš@nŽšI@WUaVl@@mVU„@XkW@ƒnkVKVƒ„_Vw„y@knwVa‚@XalU„@šVnml@„X@V„L‚KVaÞbnnlJšI„mVKn„VVVInVlU„@„m@™mXK@UmyUI@mWUUakamw@wUwmLkakwVƒmK™w@wUam£y@am_ƒW@™UU@knmm„amU@WUa@knw@ƒUUUUV@nƒJm@mVUkKVUUUkKmwƒKULƒKUImV@lUn™nŽm@mbUK@°™bUnmbUmkkƒWUb@am@UXkK@a±@™V™@ĉř„V‚UXVxUVkLWl¯@@bULUlm@@nm`—XƒlWakIkm›VUbUL@Vm@kIƒ@@Kšm@—VaX‚I@W@aU@kUƒVU_™KƒbƒJkkǎ™b@nkKmL™wÅW@kVUUƒVU@WUIƒJmIXmma@_kyVaUUlkUm@ƒkU›x¯Lƒm@L@LUJ™UkVWXUWUL¯wVmUkƒxkL@`›bk„mVnxƒXUWUnmƒƒ@kxU@'],
'encodeOffsets': [[
114087,
37682
]]
}
},
{
'type': 'Feature',
'id': '1408',
'properties': {
'name': '运城市',
'cp': [
111.1487,
35.2002
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„Vl„nJ˜wkaVa„XšWVLĊknmnL‚l@@bn‚V@UaVU@UVK@aXI˜KXL@bVVVbXVVblV„aVnK@¯šKVk„J@bšVVU@UVwkVƒKVwUUm@@Xk@K@kVUn@lbl@²l@UlK²VVIVV„KVLlw@VXL@b@VV@VŽXbVK‚@XbVIUW„L‚U²ÆLmaUankVKVaƒ¯@ƒnkUa„U°@„š‚n@@kWa„UVaXUW@IXKVw@U™ƒ„™WU@W@@UUƒU@mn@ƒ`m@UUULkUmJ™IUƒ@@UƒK@U@›anƒ™ak_@wmKUwmakV™kmK™V™k¯b™wƒ`kwUIÇx¯»ÇaŃmn@@™mƒmUkV@wkKW@kxmL™UkĉLÝk™xÝw¯lóVU„mV@ĀVVX¦W¤kz@`Vx°„²ĸ‚š@„Ul@x„êĸNJ°¤V„VlXLWnXxmV@nUl@„'],
'encodeOffsets': [[
113232,
36597
]]
}
},
{
'type': 'Feature',
'id': '1402',
'properties': {
'name': '大同市',
'cp': [
113.7854,
39.8035
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²£šyl@Ȑ˜Ė@bĸŽĢbĸ„˜X„a‚KŤnn@ŎôllÈx„nVnÞDŽV@b‚nXllL°KšbVb@J@b—„‚„@ŽU„„xlKXLlKlXk„@Ulk„JlkUƒVKXUƒÇVIVm@_nǚLšašl‚w„VnU@UUwma@aƒaÝaLmUk@@Wƒ@U@@X™wVWÝUUUk@@VmLƒKV»nwUw™aUL@`mzƒJUIVƒUaUw™KUaVIlJôanÑlLVUn@ša„@VV„@@UUwVK°Vn_lJÆLœéW@UUUÅ@»lm@aÞIVwXW˜UUkkm@U@aƒU@mwU£VWU_kWmƒXwW_°yUkkK@UÇK@kkUVymóK—U@KWIƒbUak@mJ@bkbmLkŽ™UmƒkVU„W¦@lnb@„@Vƒ°ULml@nkVƒa™VmLUnk`±@—XƒWW@kbǦXŽ¯„WxI@xmbmxXlWV„„@bŎUz@J‚b@bÞb™ŽU@Wbk@ƒxk@WX¯VۙƒWÝbÝUkVUU@alI@a@akLWa™m@U¯UUmÇL@K@aU@¯VUkƒKmX@`@œkJ@nV‚Ub@lbVÆXVW„ULU`VbkLUV@XWl@bXJ˜@VbV@Vl'],
'encodeOffsets': [[
115335,
41209
]]
}
},
{
'type': 'Feature',
'id': '1404',
'properties': {
'name': '长治市',
'cp': [
112.8625,
36.4746
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Uk™Lky@I‚JVa@mÞaWšy@_W@_WƒXVlUVwš@nw°K@m„UƒVaƒmVkU@mmmnLVUmKXa™U@IlKVUnK@UmWkX@WV_Vƒ@akU@a„KWIXyƒIUVmUn™Ua@WaXUVKVmkUWVkUƒLU@@VƒbƒKbƒIUmƒ@mbVL—x›WUUkn±V¯wƒbÅJUbmLkbmKÅKƒbVnUbƒV™KUb™KUbmLKmƒb™aƒKkUm@UŽnn‚VnxUVlUxl¼ƒk¯JUbU@Vbk@WšU@UVóI@`¯nWxkLƒK@nk`Wn@lUnƒVnm‚ƒXU`@mb@lkV@„VnklVVUblz@`nbWnnJ„IVJ@XUVV„UV@lÆXšxnKlL@mšaȍll„I„ašLV`„UlVV@@b@XJWUb@˜™n@L„@lJn@@UVKVaœUlnlJXb„k˜Wn_@mn@VkVK@a°@XklKVUUwVWUšƒĊƚ@šU²@@blLVWn@@bVa„XllVnnaVmša@¯VLnan@‚šmVm@knUVJ'],
'encodeOffsets': [[
116269,
37637
]]
}
},
{
'type': 'Feature',
'id': '1406',
'properties': {
'name': '朔州市',
'cp': [
113.0713,
39.6991
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XXWVXVWnnlnn@èƼ@„„xlš„ŽV„nblšššVŽÈUVl‚š@„blnœL܃ĊmUkU@Ua‚—@WI@aXk@WVUlKUaV_VKXƒWUUÅka@VaU@mlI@›@_nW„LVl°UV@@b@LÈKVn°V@VšnXblK@b@bkJ@bVVlUÞVÞa„Xܚ°UXWl@„wl@XaV@šÝa@aa@IVyƍ@aƒƒXUWknwna@w‚JXw°ƒWÈ¥kI@W@kmKm™¯IUmkXWWkaƒbkImJ™UkL±aVƒb@lWXkJƒUkƒĉkƒ@UmU@a™KkƒVƒUkJlaU_™yƒ@UU@aUU¯LW`kLWnkJó™ƒbUƒbmK@aU@UVVL@VƒL@„UVULƒK@xUL@VUV@nml¯@UkmKUxmbVbUV@XƒlXVmnVbkxUbU@ƒbm@@VUlUVšb°@VX¯šm‚'],
'encodeOffsets': [[
114615,
40562
]]
}
},
{
'type': 'Feature',
'id': '1405',
'properties': {
'name': '晋城市',
'cp': [
112.7856,
35.6342
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lV„Lšb„an‚LnKVašLVašL„UVaUm„aÆLnLlanKVaÆI„a°x²UlmVVœX˜wUKna„@Vn„J‚a„L„a@UV@@alUkKVKnkmmVwUk„w@ƒ™@kxWUXƒW@@mƒk@aUa@a¯aƒLkKmwkUm@kL@K@aWIXmƒVƒXƒWkUVakL@UVKƒw@aUK@UUKmLU@¯n™KUwVƒUIWJUWmka™@UXƒJƒk@UkmW@kLWKVƒx@bmI@VUaVU@a¯@UUmVKmX@±`kÝKVxUL±akL@V™bƒLkKmVƒ@XWVUbƒVXb@lm@@lW@@xk„lVUbnnmbUšlJ@„@L„@@V„b@‚WXš„UlkxVV@„šwn@ÜmnLlVkzƒ`UbmL@Vš@XL˜m„VnIÞ@VU°x@VnL˜x„V@LU°'],
'encodeOffsets': [[
115223,
36895
]]
}
},
{
'type': 'Feature',
'id': '1401',
'properties': {
'name': '太原市',
'cp': [
112.3352,
37.9413
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„@VV@wVKnLVal@na°nšaVJœUlm„L°a@b„@lx@bULUlmx@Ln@lVkn„l˜@XI„w‚K„Vnƒ°aVXVx„ƒUaVU°K„nUlšUVL„KÆVš²Ģ‚lnXalLÈƘL„KUaVkUanmWU™a@WwkUWU¯y¯Ñ@anIl@@aVU„m„I„ymUƒLUUVakaU@@LmJkw±LKmVUI@W¯™VaU_l™kbW@kK@mƒUkaVƒmVaU™ƒIVmalk™W@wnIVy@klkWUU›VI@ƒƒUƒVkam@knU@mmmK@bblVUX@VkLV`@n±KU„ULƒ‚UnVVńUbÇKmV—Imbm@k¼ó@Ul™b@VmV@bXmaƒK@›UUxkV‚V@„xW„UxVnkVVJ@XnJ@XlV²LƂVbnL@lš@°'],
'encodeOffsets': [[
114503,
39134
]]
}
},
{
'type': 'Feature',
'id': '1403',
'properties': {
'name': '阳泉市',
'cp': [
113.4778,
38.0951
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°@nb„@lb@b„b„b‚@„x²al@lb„KXU@m‚kUWkkmUUƒVwV@XUW@™naVklKXblKnL‚ƒnLVanImaXKlL„ašV@U@KUKW„alƒXK@£WKXUV@VU„ƒUUVW„_V™@W@@K„@šƒUƒƒIWmXUmƒULƒn™JkImmÝaUbLƒK@UƒWk@mn™Uƒ@kVWb@Ubmx@lƒzUxƒ`U„ULml@„XWlƒ@UV@nk@U‚Vb@X™Jm™@@Vknƒyk@ƒzƒJƒnUV@bk@mJ@b°Ò°zXVlVXx‚@šbXVmnVbUlVb'],
'encodeOffsets': [[
115864,
39336
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/si_chuan_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '5133',
'properties': {
'name': '甘孜藏族自治州',
'cp': [
99.9207,
31.0803
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƒaXamƒ¯wm@±°wUwV@UaVw²Kš™„U@UƒU„¥‚a„ƒ@£Þ™ôx‚Knkm™X¥™IUƒÝUwlk°V„@ƒÈ™‚KUwlkUyV¹„mšx²Xll„ÑW»š„l„w°UŎ„nƒ„„˜Jœƒl¯°V@wôIVÇn™nUllšLšVǚLô¼XW£@±„@¥k_ÇJƒkUéƒkšƒƒwXa@ƒšLlw²™Vx„b‚mš¼ÈxlLȃ„VWÞn¯mǙÑUÝlÛkwlĉmƒULmwUJ™ç@wkm@ÑlUX™ƒÑôġƒVa™ƒUф¯@wķÓkbV„mnU@@y¯IķKƒV@¹šaƒé@k„mÞU°¥@a¯@anKlblU„¥@óğç@Çw@wkla„çݱk¯±@ğÝUÛmݯwƒ@kb±¯akXWÜkXUÆÇUš¤X_Ɛw„V@¤ƒXU‚ƒbUƒŽƒIUlÇUkŽġ@™aXČmlUlèUV@„mVk¦Vxš@¦±š¯ƒƒ¯¯anlWš¯nƒƒÅw@w°KVak£m@klƒKknÇU™»óKšīlaUaV£@™™¯@ƙU™VƒÛÝÇXƒÇl—ÓlŹ„»WUğJ¯£mx™Lĵô›ºX„VlUll²bl„„lŽƒxónn°ÝšU¼mJUš¯nƒƒƒV@êĉ°Uĸ™w™@mƒ@¯kmXamѯaUwÝKU¥„mÅn¥Wmn™ƒ¹n±ƑƆÇôXê±NJnšƒ‚UôlĖkȂVÒ¯¼VnƒȮ¯ĀnƆ˜Ģ@Žk°V°¯ĢVlkšVxm¼X²™Ŏ@ŽVxknWÜ°U‚¯n™Æݜ@`„ôݲÒƒ‚Çzn‚mX@x„è°K°Å„UČĬóĖ݄ƒ˜ó¼ÅêƒÒƒbmšk@V„Ž˜„@ҁl@nĉܛê—x@Ėml՛J¯¦óxȭ°ÝmŽ¯Lĵè›Ā@Ɓ„l°żƒ‚šX@xmŽkV@z@‚„°blŽnÞ°J@bn@ƼUVƒUóŽóLƒ°X°ÝLƒxUn„°ƒĬƒn@lnL@ŽÆ@šn„KÆxnUnV˜InĬmÆnxŎ¼ĊIĢóÞ@ĊƒƨbUƒ‚mV¥lkƒ‚wnL„mšÅÆ¥Xƒ˜wU@w‚wUÞ™@alUUŚU™Vkkm°aU—°Ó°w°U„ƒ„b°aš²K˜¯œĕ˜@ÈbޏĊaš»„XVm°In„‚Ĭk¼Vb„ašJšôš£VĊan™‚k„ů™™nƒÜU@anKnĮ‚bÈmƎš»nI‚霣Ġ™'],
'encodeOffsets': [[
103073,
33295
]]
}
},
{
'type': 'Feature',
'id': '5132',
'properties': {
'name': '阿坝藏族羌族自治州',
'cp': [
102.4805,
32.4536
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l@@þ²I@lƒ„VL°wnJ°Uĸ™Ŏè„Ilw„V°¤nĮ™¤Ý„lè„L@„ƒ„@x„l™è²ôĊ_ĊġVÈôJżīlbXšÆÈVŽkxÇVƒ„n°„¦Üb@è@nn@@°šUÈ¥WDŽ_Uala¯¯UǙkƒ»„mVwk»˜k²°VxlL@¤œ_@x‚`ȍ‚Ėöb˜š@l²alX„a@bnK°¦VK@nnWmx@nUnl@@lƒlĉk°l°UXkmW@Unš`k„ÇL„ŽW„ÛÈVxšVVlVk@l„IXb@ylXÈW˜Į„WŤzœy@šmIƒŽ²šJ‚š@nŽ°@V„„J°a„Å@ƒŎkVǚk™aUw„KVw™™Vƒ„@nkm™@±ôkô™ĊJš¼šInÑm±nIššÞ‚XȃĊxĊUÈbÜyÈ£Vkw@kVUV™„m@ša„»ÜbÈmƒUXwÝxƒUn¥@°ġ™Å‚aœJVk™aW¯Û@W¥—UŏĶ™@¯kUƒŃ@ašI@mmanwސ‚W@œ™mw°»Uřk¹±W„xVx¯¦U°ƒzţW™w@°ÇVÑk¯@„y°aš£š@šmšnl¼„ašÝÝakwUƒ±aĉImlĵn@ƒm@kkVƒ¯Ñm™ĸ™°x„l™œ@˜ƒXVÞmlÛݙĉUÅ¥mwÅ¥VaUw›™XġċaVůÛŹlwU¯U™ó±™xÛV±¯¯n¯mċƒLmnĊm‚™@™_kJWaXmwUƒĉK™»™@mwX݃UDŽkKÇw™»nƒaUw±škx™K@„Wb„x™„„lVê„lÈIl`@¦ƒŽ@²X¤Wó»™KUșŽ™KkkmVmšUÈóJ@x¯Uk°›„—Iƒƒm„ōƒ¯Vƒxƒk™ŽX¼ƒÒkk±W™wƒnUºVzklVxLǚ@„ƒŽ¯UklVxސV„šJW¦nšmlLówݚ@¤ƒ„bƒ¦„V@VƒV™š±LUxVbU@Vx¯x@²n‚°xn„Wb„b'],
'encodeOffsets': [[
103073,
33295
]]
}
},
{
'type': 'Feature',
'id': '5134',
'properties': {
'name': '凉山彝族自治州',
'cp': [
101.9641,
27.6746
],
'childNum': 17
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĶóšKnw°¤ĠIXVƒ¼kź˜Ôk‚„ÈWŽÞȄÜUVšÅš°@šš‚@U¤Vbkb™ĬôLš¼ÈVlm„Llkn@l¤Ub¯L@xÆx„„°mX™mk°b„°°„²™@¥‚™Uwl¥nU@ƒVUkçVnkWċšbĢ@lÈVVk„J„‚V„aV„W@£ƒUƏxW`™£ÈVVÅlWXÛlW°b²la„@°xnÞVÜĠÞ²@l°Þ²ƒèkblŽ@xÈx@Ġènal£nU‚Dz@‚ÞK„nn¤@¼˜°U¼„nV‚šXU‚šbn™ĠUVbUlVš°LX„@lV„èÜUnK@_ƒyXVyUwmIU»Vƒ„kÇ¥šÿkkV¯m±n@ƒn¯ÜanVVƄz@Ž‚bœwÜb„m@wša@kƒmk»@™a@VUUó„w˜@nb°mš„XŽmnVbގVôanwšJ‚ak£lw„˜šLšÅnÝ@wl¥IÇӃ@U™™Lƒ¼kVǃÅó¯kVmmw@ƒn_‚Vn»°LÅ»@éÇçŹīVÇÝ@ÝğU™ƒaVݙ™š¯ķlŭġlƒ@óÞۂċ@¯nkUӄ—m±™IVġUwóKUn±¯—K›w»ƒKݐV„nl@„óxUwţ›£ĉƒUmŗÇ݃K™„ÝUlmKƒ£UVŽ@ÞȎW¦„Ò@Ĭšnny‚@nÒmœVŽ—¼@°Vbl@VlnUUwl™°a@„œ„@llnk°lbnKWĀnŽU„VxUŽ‚²Å‚m¦Û›ÇŚƒaU„Vbš@¦m`móX™Umm™xÅ@±Þn虲™U¯»m™ƒV—m@wƒU@wݚÝmLƒa@„™VÇUk„l°¯„VlkVƒ¦UšmxƒaULUèVx@„kIUxmWV¼¯VmȯšU„nl›È—@m»Å™ƒVWxÅbÅğW@kƒm@kVV¦mlnn@‚ō„l¦Åƙxkœ'],
'encodeOffsets': [[
102466,
28756
]]
}
},
{
'type': 'Feature',
'id': '5107',
'properties': {
'name': '绵阳市',
'cp': [
104.7327,
31.8713
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„ńlV°š@Őĵ˜VX»ÆUĊќJ‚w„@È»m»š£°Kšk@ÇnÑƍš@„w°JUwnw@wšbVbš@VlźLUw„aƒ»„aUklyUUVakwWXwWƒUxkLƒmn¥mšwk™˜UX™lJ„w@aƒIk°X„¥Wƒ²l¥šaU™„IlmkklƒÈL@m°nlWU™aW—š@Vƒ„@UaV¥@ašk@Çk¹ƒK@a™K@kƒKkšÇX@VU@kx±V™èkIWwUVUkkKÇ@ƒa@wkml¯@kUWn£Wa„aVwnaV݃w¯@UaWx—n›JńUxUšma@L@„mbUŽU±VVnkxUƙ„VŽm@kkKW°„X@¤ÇUkÆÇnU¦¯ŽkƒmLVwÅK@UóbÇƁVƒ¦™L@‚±êX¦mVޚkÜÝnWU—„›@kšƒŽ¯wķšnš°ÒU„lln@@„ĶmnkĊJ²bV„lxÞb™Þƒbk»™m™n™@™¤¯bƒz@Žl°UÒ¯È@ŽšxŤX„yV¯°¥Uwƒw²XlºVŚ¯¼nx›š@ŽXݏmxnb@n™J@b'],
'encodeOffsets': [[
106448,
33694
]]
}
},
{
'type': 'Feature',
'id': '5117',
'properties': {
'name': '达州市',
'cp': [
107.6111,
31.333
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Uxn°‚bnŽlUnÒƃnn@n‚¤„LnxlU„ššV@„Æl„x°XXxl`XœƒVW‚œL˜è—„±nÈbƒŽ°b@š²x°Kܼ°ĉ„V¦lJnU@¦šÞ‚JÞğ„mšLÞ»šxU„lb„VÆann„alŽ„VƍX@lnŎV„mU™maÅXƒa@aWmœ@‚£@wĉJVƒkk‚kkmƒnk@ƒmna@šal„Kš™‚J@Þwm‚ÅŃ@ambkUƒƒ@™™KUġKU@m‚ak¯±ƒ„a@aĉÑÅaVwšXlwƒ±—V¥l@@a™kƒ›@@£šmƒĉÝónWV@ŽnÝÇÇx—UmbƒaVkkk@m„@m°ƒÝýXm›akÅīƒ@@ƒmb@@xmšnbƒ@mxšŽkWL@ƒ¯b@WUXmWœWKkbm@kx™Xmm@LUl„xlêóK™nUš„all™LƒlLó°m¯JVšU„K„„@x˜K²Āô¦l°'],
'encodeOffsets': [[
109519,
31917
]]
}
},
{
'type': 'Feature',
'id': '5108',
'properties': {
'name': '广元市',
'cp': [
105.6885,
32.2284
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÆL„Ċx°»Ŧ¦˜W„™šLȄ@xÞKÜ°ÞnVxÅĀlÒnJ°a@w„V¯l@XWknKnw˜VȚ°XXa˜lX°VI°b„W„nšaššš¥@ƒw°™n@šyÆ@nkÞ@°¯lJn„°IÈl‚UšlXÅ@ķlUV¥VUUÝޙUUƒ@UwƒJUkĉm@ýƒƒlk™WUwVwWJk@VUK™lUkaVƒUƒmLk„m@ƒƒ@Uƒ›Ik`@„™UmlUkV¯ÇXKÝ_mm¯@Uƒ`kwmƒl¼±KV¯—¯Vk±Vk±kzma™KUnDZ™bk¦±ŽX„ƒ¦¯Wl„J@bƒxkIWš—Vlš™xnŽm¦„nlKVwX„WxXŽlxUbVVkzVlƒb„¼ƒbVxŹKUk™@Ua™a@xmxVx¯Iƒx™@ŎmÒ@șl¯L™¤n¼'],
'encodeOffsets': [[
107146,
33452
]]
}
},
{
'type': 'Feature',
'id': '5118',
'properties': {
'name': '雅安市',
'cp': [
102.6672,
29.8938
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ln@xšèVInxVKn„‚ĊklxkÜVޚÒnÈm°nxš@š¼ĊLV„nx‚WXblIš`š@nmĉn‚KȄôÅlUÑmU„K²¹@ÇÅVÓůVýÞW„‚UVmX„ÆbnwšKUÿ‚™@UmmIUb¯¥Uwƒ™¯™Çmš™„çmanUm»UUƒl—kƒ¤ƒa¯bV™U_WĕmÇŚ±ĢUlƒUl™ÛVƒçkUƒ@WŽ¯KU™VkUağVmš™aV™WUƒmV»—¯@»m£ƒmÝLŽ±@ÈmVk¤mb@ôƒ¦kVkamL@b°‚@b¯¦ÝVƒn@l„ê™b@º„UĸL°J@zV@nmUƒlaĸÔ@xƒ°VҚ„Ub„‚óĢ„ÒWškV@Ò'],
'encodeOffsets': [[
104727,
30797
]]
}
},
{
'type': 'Feature',
'id': '5115',
'properties': {
'name': '宜宾市',
'cp': [
104.6558,
28.548
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VlÈnl‚XnWLX`m„²nV‚@b°xĢçlnšVm‚nn„@@„°‚UzšlV°nޘÒkxl„w„`UnVb„mšL@albÞKÈۚmܼ°@Xǚ@wmW@ńKĊL„lV„šLVŎçÞL²±‚ğkw@Uƒy@¹lKX™lKVa@w™™Č@‚w@a˜ÇU¯n™@@wġak—™aō‚ƒƒK@Å»VakUWmķwkbğ¥mL™akš™@ġރ°¯xVVÞ@VšxVš—VWx„XlxU‚™@k²WVŃULmèULVĊklĠ„VœJVx±nŃ¯¦mwğ@mƒƒlğkkl±@kšUk@¯±Ç™Kƒ—kxl¤b™Imx'],
'encodeOffsets': [[
106099,
29279
]]
}
},
{
'type': 'Feature',
'id': '5111',
'properties': {
'name': '乐山市',
'cp': [
103.5791,
29.1742
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@kšVŽk„ššÆkšV²UlºÈIlxƒLXèÜlU„„XU‚mkƒbVè„x°@„@¼°Knnn@m˜ÆIUbnJ@bVI°b°±@nK@mVakkƒKl¯nbšmĸ„èl@VnÈl‚UUw„wmwnm°¥„L„™lLnU@Va™ImbkƒmK„ƒƒnk@mƒb™ƒƒLV„JVUUƒ„VnkVmb@a¯JUaÆkk¥„IW¥„Klw—ÑmÝU¯™kVy¯@ƒƒ@mmn™Ukmġè¯w@aU±mnƒW_XKWmkÇmUkóbUÝUanmW™ƒ¯nma—@ƒxVôUV@šb@‚l¼„n@l™b@xƒnÛa›xa@ƒyUÅmUÛbm°@„m‚n²U°ll™ĀȦƒlU„V¼nJVxUz‚W„z@`mL'],
'encodeOffsets': [[
105480,
29993
]]
}
},
{
'type': 'Feature',
'id': '5113',
'properties': {
'name': '南充市',
'cp': [
106.2048,
31.1517
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ȲVmšLnblyl²²UUl˜°U°²L‚»„knlx„_VŽ°@nnÞ`WL°ÈUŽVlnkšV@ƒl_œJV„‚@„„n@lƒnKV£™Çšƒ„UV¯šm„@laX˜U„‚UbVx„@VkôJU°Jn™@™‚wUk°wnUƒV_nJmknmm¯Vwk¯ó¥±ÿ—L@wƒƒƒLVU™kU›bX¯mykI@a±Kk¦ULmaXƒƒVm¯ƒK—z±ƒklUIVbÇJšƒkL¯™l™ƒU™ÿ™UƒlUkJƒUmŽUUkVVklKk@@a™U@„™J„²ƒxƒ¦kĬ@¼±ºXnWb—xƒU@xƒx@lšL@b„Llº@șl@bU¦Vbƒ@U„™@X˜‚bVškX¯m@nÇKk„llknƒJVš'],
'encodeOffsets': [[
107989,
32282
]]
}
},
{
'type': 'Feature',
'id': '5119',
'properties': {
'name': '巴中市',
'cp': [
107.0618,
31.9977
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@V„U„lbkVšŽVLUŽl@XI‚ŽUxVxšXkl„„@þĊnVl„IVx„@VVݚVÞUVU¦kV@ĸWÆô²š@VÞnš@Vaôb²W@‚K@XUmÑUW°¯°Ina@y„_lWn¼lLUbô¼„Kla@™nkUyô—Æx°@šn£™Ý@¥mVkIU¥Ċƒ‚¯Û»¯L±w@™¯a„Ça²m˜ƒ—ç›KX„UW›k_Ww¯WƒwÅk@ƒ™Uƒ™kVmwƒK£@mmmńmÑkVmamnnlmIU`V„m¯xVlx@šmš¯IV‚óIUlƒ@UwVaƒ—VW‚kbƒ@™nU°ƒV™„šÈU¤'],
'encodeOffsets': [[
108957,
32569
]]
}
},
{
'type': 'Feature',
'id': '5105',
'properties': {
'name': '泸州市',
'cp': [
105.4578,
28.493
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VVXwVKn„˜wnVƒn„l@b¯xmKUbVn°°X°@blLšènV„@Vn‚l@U„LnmmUna„VV_ĶV@wnJ„„l@@kkKVólaUwnJm„wUlm@ašUaôKVnJWbޚ@VšwVLX¥VVš_Þ`šw„WƒÞŹmmnIn¥Wƒ@k„WV¯@ƒ°kI™ŽƒLk¼Ç@k¤±Xk˜™nmݯUlÅÛKWV¯kƒlUwkLƒÓ™@U—@ƒ‚w@ġXV„˜WX„š@UbVbšV›š_kÇV™lU°lnwŎ¦ÞaƯnmm¯šU„™m¥nkVmkƒl_ó¥¯UÇl¯@™ƒ™L™kƒ`¯ķLUy¯@mw—¼ķ°ġ_řU°mlšnÇVUޚ„@‚ƒš_ƒJUnV‚UXšbl˜Ģb@x@mšV°—È‚b@‚xċ@šš@xUbkLWškL@º„zV‚@lxĠ±²'],
'encodeOffsets': [[
107674,
29639
]]
}
},
{
'type': 'Feature',
'id': '5101',
'properties': {
'name': '成都市',
'cp': [
103.9526,
30.7617
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°n°m²°ÜUšw²ŽôVš°ŽVkxÜźUŰČb‚ŽĢlaÈL„»ƒ@k„wVǂ@„ƒnÛƻșUÝ°Kl_„V°Uš`Vbn@VbÈLšaVU@ƨ»V™nIl™šUUa„±lIk±š@VnKmÅ@WaƒK¦™lVōškK™Ý@maXÇmw¯IU‚@kƒVƒwUmVIƒƒƒç—ÿƒU±ŽÅ@¯È@xƒK@wƒLUbÇKō@mÝ£@yóUóóUxkI@WlIUaƒbƒaŽVĀ™LmxÅaWƒUnVƒÝXUþÆ°UÔÈÆ@±ºƒLnVVÒkóÆ'],
'encodeOffsets': [[
105492,
31534
]]
}
},
{
'type': 'Feature',
'id': '5120',
'properties': {
'name': '资阳市',
'cp': [
104.9744,
30.1575
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„è„„UJVn„x„U@lV°JnxWÈnbÞ@šŽlLŎ™Ušk‚¥„LXbÆ@nŽmLU‚@zlbXmlnVynL„çšJVb‚UnómUnamU„an¥lKV_²aValWô„n@nƒ‚bVœK°¯VblW@kkƒlUnlV£°W@w„UXk°KVwƒmVkwVyVI@wkmƒVÅ_Umm@Uÿmbk£™xUaVw±V¼V¤kLWxU@Uk™bƒyƒXšómƒ°V@@zÝÒkKƒn™±U@@_VVkƒÇaVwnLWalm@@kkVVl™¦kIV`±n@w„Kƒƒk²™aƒVUUV¤™nkxmUkVWVnLUbVbƒ`kUU„mLU‚mX@`ÅbǚXbWLXŽ›n'],
'encodeOffsets': [[
106695,
31062
]]
}
},
{
'type': 'Feature',
'id': '5104',
'properties': {
'name': '攀枝花市',
'cp': [
101.6895,
26.7133
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„b‚KÞnޙ@x„V@x˜n„Unš°¼šVš±mç²ÝÆ@šwnnšVWŽnôn_@¥‚™UaVƒ„bƙœÈ܎n¥Æ±VUwVƒmXÿmLkal¯km@k›ƒ@ƒ¯bkšVxmVUkk@Ua@¯˜»Un›mс@mz™m@īƒÑX¥Ç@ݙxU¦ƒšÅŽÇUkx@šlb„UWVX„mV@xĵĖ±@@Ž¯xUšÆLnÆm„šx@nXL±lUUVwKWak@WxkbšÞƒŽĉbUn@‚ƒ@@xó¦„Ŏ'],
'encodeOffsets': [[
103602,
27816
]]
}
},
{
'type': 'Feature',
'id': '5114',
'properties': {
'name': '眉山市',
'cp': [
103.8098,
30.0146
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„šVx°¦VanJVnš@„b„aVbkJ@XlJVwôôôV@zÞ¤@nƎÈLVa„K@x„L@w°ÇÆ@²„V˜ĀœmWXKWașÆa@_nWVnKVƒlV„_UaVamKXUWwnmmwœÑm£@ynUƒkWƒĉUkWVkkV±çkJmkKƒšƒK¯¦mnnxƒxVxVÇkUmk@ƒçķ™nmak°„LllUb@nmL@‚¯²¯aUJ@amIVaÅJn—m@mm¯L@»ƒŽ¯@ƒwUç„anlVƒWVƒÛkWç„KkwÇJk¹±V™UÅl™™ġV™²ÈƂnXĖV`Uš°a„b„£˜l„kVVn¼mVnbƒè™šÈn°š'],
'encodeOffsets': [[
105683,
30685
]]
}
},
{
'type': 'Feature',
'id': '5116',
'properties': {
'name': '广安市',
'cp': [
106.6333,
30.4376
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„VlIV‚„kšVšĀ„Vkš°šlK™„ÈIUaVJlk²„˜y„Ln°„UW„nbVKl¥²L@blJnzW°œalV°Inô¯‚K„kšKkkƒbV™šmôLkéƒwVk@KnnšWlwn@laXL›ŽnXVW@X°a@„XKl™nw„@man™@w‚@na@„„@ƒw™ĕġġ™wUkUWb@mk@™¦ƒ¥mUÛb±yÅn@bml@kV@„ƒlknVbmVnlmš—bÇk¯bWyk@V_UamJ@I—@WaƒVXamIVWkUkbVaƒUUxƒ@VnkVU¼›bkKUxmK™„@WšƒxnV@n'],
'encodeOffsets': [[
108518,
31208
]]
}
},
{
'type': 'Feature',
'id': '5106',
'properties': {
'name': '德阳市',
'cp': [
104.48,
31.1133
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nUW¥²é@šK„¥‚UÈÅôa@VÆLUxnKl„°V¥ÈmlÅÈV@£ƒWX¯lLln@UšƒVÅlwUm²U‚VVna@ƒ@KnbV™VwƃœI˜mXwWƒkIVwÝĕVUa™IƒèmKUzkmWnka@y™@l²kJƒ²Vb™VkšmJUšƧ¼@UV™bÇKUam@Ua™_¯VƒUk`¯LVÞǚżm܃„@Uȃx@l„ƒ¼ÇKkbWŽœšVxUbƦnxƦĊV'],
'encodeOffsets': [[
106594,
32457
]]
}
},
{
'type': 'Feature',
'id': '5110',
'properties': {
'name': '内江市',
'cp': [
104.8535,
29.6136
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@²èlUUllXĊVX„„lmV@zn¤›ÒnxmnXxlUnVlwšmU£VV„Ušbl±„„ƒL@x²mU_lJš¥UklU@ln@‚kXbmKUxÈbl„UU@`V@š²„mlLÞÑ@yU@„¯ôn‚™„W„zšaVlV@XwlKU£‚»—aVaUwm@mwUVUwkƒlVDzLlƒ„KV™m_@ykUmƒ@mU™çkKmxkIU‚Ý„@LUJ@n±„kº‚LXb™¼@mmIXa™@mamnkW™ƒKUƒƒxƒ_U`UklwUw™mUbƒV™²ƒakbƒmkn@`„UmҙšVxUb™I™`UƒaÝÈ'],
'encodeOffsets': [[
106774,
30342
]]
}
},
{
'type': 'Feature',
'id': '5109',
'properties': {
'name': '遂宁市',
'cp': [
105.5347,
30.6683
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÞĖUxlJX„Vb°@„xUÞmbUxƒbXbm¤VX@lk°ln@x„bÈ@lLVlVUXxlJšç²UlwV@@UÈWl™„L„w@w„V˜wXaWm²¹@»lī„¥„wƒ±šI@ƒšV@bl@kLUllUVVn@mmU„wX™ċbVb@VUkbmamšW@kƒa@™™k@ƒlaUa™@¯b@šmmwó@@lkXUa¯°›LU‚am„m@óƒkXUb±bU`kLm¦ƒbnVmbnVmô'],
'encodeOffsets': [[
107595,
31270
]]
}
},
{
'type': 'Feature',
'id': '5103',
'properties': {
'name': '自贡市',
'cp': [
104.6667,
29.2786
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lIÞDŽbVŽš_šJVaUwš™nуV@_lm„nla„bš±„UVašnVxkxVlV_„`„wV„„LšlXnmnbš@WbnJ@nš»WaKl¹²ƒ@mVI@KރVlJnw@aW¯¯¯UmVanL°w@aƒk„mmU—xmƒULWxUUÝKōèU™KUƒƒkĉKƒL@ÆnX@x™‚Wȯ@Û»™nÇÜÝLka@b™KƒnUaVmƒ_ƒxkƒLX¦ƒJl¦ÅlVb°I@bnaUŽmlƒUV„UVƒIUŽ„Kš„„a@nml„„ƒŽnLl„našJUbV@'],
'encodeOffsets': [[
106752,
30347
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/tai_wan_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [{
'type': 'Feature',
'id': '7100',
'properties': {
'name': '台湾',
'cp': [
121.0295,
23.6082
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@\\sŽ@pS}aekgKSu™SsMß`¡CqZ·be@Q^o@‹gieMp‹‰]}•}Ľc_Kk…{™ù“A¡r‰[uom@эĥJiq©mʼnq¯Bq]ÙYgSåk_gwU­isTE…“‘ĕiqiUEkue_‰OSsZ‹aWKo¡­q“ycY£w}‹ĩ™ĕS§Z©S™N¥SyLÑ¡±Ks^IY‰PdƒY[Uo†Fp}´\\¬\\j]ˆe܍ò‹¤¡–ā a\\bn™U㺹Ìs¼j®[cíȈEŽĝĆ`ļf¶Š®K|VØDdKGpVnU‚FjpH—F`†B’[pMºxÖjbpÎxp€¬‚|ΟÜÒCŠ²®‚ÜAp„ZG~€Šd˜ÞàV¨|¸€`|Œ²tx~\\~|dFf^zG€ĄŚhœdL\\hĸž¼†ŠOªP®lV`p\\]Xpll˜æ¤œCpQ|oF}fMRi†NSon_²qämœM„NM‹\\•'],
'encodeOffsets': [[
124853,
25650
]]
}
}],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/tian_jin_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '120225',
'properties': {
'name': '蓟县',
'cp': [
117.4672,
40.004
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@EUDAEI@WNMNCBFAHFFNACDJDPBD@@GD@DIFFHEFGDBDEQOFG@EI_KG@OcJQM]RMEKBGPG@[LaCIICBWKCEEG@WBQHCDFD@HSLEJI@IHWECFGAAEKCGDBFCBSBIDCKKHEADMJMFABKOKEQAA@IEEG@GIQAEK@OZEESMOL“lu@SLUTYFQCMG@@SQUAYKAACA@IB@BDB@B@DC@@BGAEFAA@BEGKJCC@AGAIHA@@JC@QEIP@@A@EGIDC@O@C@@@@CJCWKABFLBBEBSQGBAAMIEM@AKBcJEN@BEBCFMAEFEF@J@BG@BFABECKFG@AFQ@@F@BEB@@A@@AAAKAE@GFGDECEFEECBKIKDELDFEDYH@EIACDCHKBEB@BAAC@ADBHABKJIAIJICEDGDCD@@A@A@DHCHJHDFEFGBKRKBGIK@GIMHSBCH_BOJECCJCFKKMD@DNJEDEGC@OJCJHRUL@HRJ@H[DCNKDZHCTFDHCFFKR`TANVDFZRDLFARB@HPAPG`ILAR@TERNDFNHDLCLDDCXDYbHF@FEB@LDDVE@JPNfXPINCVDJJD@NJPAJHLXHDNANHhB@DPNLRMTBFRBHHr@`NBFEBOCCBIAQJDHCHLHFA@HSDCRLFTB@HEFLNF@PELBDJALFLTC@EPFLLP@tUHQJDfIHGTB^JTCPDLKAIBATFPADIEGECEMJ@JIAIHGECFEAGDI\\SPOXAFCL@BQTQBBTMZECYGAHA@GJAE@HCAEME@IECFKJADDBABLTHHG@ILEAMNDJCDHEBF@@JNFJELDFKTOT@JETBFFHBHEHKI@@IJEJ@XKEOUMS@AF@CEB'],
'encodeOffsets': [[
120575,
41009
]]
}
},
{
'type': 'Feature',
'id': '120114',
'properties': {
'name': '武清区',
'cp': [
117.0621,
39.4121
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@FWôµ@IFCLIB@EHNBp]AGEAKAEDMGZKFGBGME@ILGP@HEFB@BXMEAHUGC@IHCLOD@X[NWHWPKAEF[@EKIOL@EKGBNMJ@EIEHKBIC@BAKMIACCFQZCF]DB@ERAKADIHGEIBCGIIECFaGLZO@EFCNGAGDGAKL@BMG@IE@ADSDEH[JGC@CGA@BMDeK@EIACFE@@GG@FIAMM@CCGC@EM@ADE@CFMAAGHBDKIEAJG@DOGCDEKAGIS@KFCHKAEHIE]BeKNO[IFIOELC@A]GMBKVYCDDgGAICARc@MW@AQE@DGI@@AQ@@BKBAIQQYEFW@CEADIGGBCEIiMEMF_LGEKMBBDWEBGRC@E_CHYGCH_IAED@FFBQh@FGJaJ}AHRAREF@bE\\C@CT`FHC@\\BBF@BID@HGDDJ@@FAHKBARECKDAZBJIVNHCTA@EREAMLHDAFFBVFFC@RNRETHD@FOJMACH@CAB@P@DF@@FGDWE@FFSIEMKQDYCCHKb^JADOCIDGNDBdBCFJB@EC\\A@BJEA@JAAAD@HHD@LFBCFF@BERDHNhZQHMBGHOACCEBWEGD@PSJKCGEUD@CINLFGHE@AJK@HDABBHTB@F`DBFLBBHEDARCFG@ABJBAPVFE^FBGLGCFG_BMLEXGAAFE@@JNRVJHFALFBEHQJCTbNDHCF@PlFLJSXCHFHfVBTNJ\\BPJXC^FAVNFCHFB@FFH@JF@\\ABCFD\\BDMCAAJKQBGAILOEGHILECQLWFENJHADC@QxNHFJNLDFA@CBA@D˜UÂmR@FBL@BD'],
'encodeOffsets': [[
119959,
40574
]]
}
},
{
'type': 'Feature',
'id': '120115',
'properties': {
'name': '宝坻区',
'cp': [
117.4274,
39.5913
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@TZbB@JHD@DODCLM@AP@LL@BNH@ETFN@`E@DNG@CHLBCJA@AICFKDDBKA@\\N@AFNAGRBFjFFFL@DHLBLFQPcXAZMJ]GAVHAIZJFNE@JpDRRDCLFDGXA@EFF@CFFPDfEBDB@DCHCFCJDJIJBLI@I@CB@@ADBB@FALADGDC@@H@BB@FZGFCCE@@FMLALJDAFFFEFDFCB@@AHCF@L@@BBB@BB@FC@E@@R@BEL@HEFD@G@AH@AIB@@@FEFEBALDDEFAFO^IF@JCBBFPNJJ@D@PRDCEKBAXL@BIFD@T@JE@BHHJORFDI@@B@JGH@@B@BDDLIFFHCD@D@DEE@BAAAB@DAF@B@H@NGLJLMRDNMfGIEPMI@GDAKK@KIDIJ@GE@CFDN@FE@GFEPGV@TCDFKHBBF@RW@DD@@ID@TJFKIKLI@EP@IGBCLAEKLEN@KSHIGYACSD@SEAMBBMGEBMQBCMIGKFB[D@HDLPHDBC@IFITDLG@IIIFGVBNJDLN@VIRI@YIAIHIC@CLKZCBEE@JECEIHEAKGDGECBGEEM@@DA@CCCBBEGA[GEDBBoNAAH]MKiIAWKQoIIPMFQAEEDMH@FMSUYIeF@EK@BIOEKJEBICFKaKPFAFSE@LWCCFMHDDEKESBOGBKIEIODLG@CCDEQCEDWEMDIEIB@EHGEEDAEAa@@HqDEJGF[AECCFa@WCEIKAAEQB@FCAE^YDERDDJBLNABD@AJGLJF@FNIAMLH@FPKLJ@FE\\BFOLGXMXW\\C@KPGD@JHDGVFBWN@AEAGFO@KH@JNFAHEHYLNHFCLBFBBHo^MAFGA@KJED@Jó¶EX'],
'encodeOffsets': [[
119959,
40574
]]
}
},
{
'type': 'Feature',
'id': '120223',
'properties': {
'name': '静海县',
'cp': [
116.9824,
38.8312
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@NGFMDATCNDR@CCbINEHNJA@C\\EEGVE@IhE–[˜w”epc¢·²›^QEKIEKIgiQDkehY£uSDBMkUDOJDHC@GF@CAFBFEN@C‹Q@BeP@@G@HD@@MHQKi@[IGCOCESE@GMA_OcCGDu`aˆ@VZzKDkJBLNXGDqKEWE@cFEFA@ƒISIi@@KMABJGBcMuFEzGVH\\ATSEUBeALCEMG@CEBUHUCGXaBPtUBBFIBFTDFF@DDKBFNGBJPHXDDMDCLJ^mBIHIL@LR\\@LCR[@@z@NFD@LLBNb@RHDBNTPT\\F@BJF@BXCFBHHBDLFB@HODADE@@JHVXCPDHCFTLBBFNCDCCCU@@GAABEHHZHBCAEdEjFDD@GfD@DXFCHF@ERFDLBH@'],
'encodeOffsets': [[
119688,
40010
]]
}
},
{
'type': 'Feature',
'id': '120221',
'properties': {
'name': '宁河县',
'cp': [
117.6801,
39.3853
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@BFLBFJXDb@DEFD\\BHEFIrC@Gb@FBCBFFGH@FJAJFNCXFFCRDCFDDH@CKJPJFALPHTALFCFGCENDDKXF@ETEBO‚bLELJDFALIPFAJL@@FfEZJTVENG@CNFFRBNEJOpJLRBXjJNLG^BBpMAAFC\\HHBAFDADDB@@CN@FFAHFDCHLHFBJGFCFUNKJJTD\\XUXF\\^F@DDDQXXBRLRCBDFEVCDLVDpUl@LEDJHAPRFGL@CETGPBTCDDVI@CFF@GFDCCVGLKEK[Y@MECISG@BKNSCGCKWEAaEBEKNGFSECO@GGM@GYI@DÅCMLHPTF@DJHAVVNKEGDETJ^[TJNNd@NOAMFYJ@@GFANDPEJB^aOadSTQSI@MHBDIEOKCG@EEFCKCqXO@@DMFENCDDHCCGJ]AKFoDaGGHYFDHKJiCMFGC@EQ@AEHGAC@IEAATKOHGIC@IXIFEoƒGE[JCFCDHNmRADFZMF[EEBMO{GU@AOW@@]ZeHBDEHBKEfQkuIWBs‡@EC@d[@[^EDMTKCEEcI@cDAB@FCBCACmOCG{PYHeBgPwPFDDALFFFCHQGSD@BHFAR[TaFYXMASUiGFL@DQNCJI@@D@PLDN`ETEFIGMCGBCE‘~CAIFDPEHGEQPHJADFJGHCJLB'],
'encodeOffsets': [[
120145,
40295
]]
}
},
{
'type': 'Feature',
'id': '120109',
'properties': {
'name': '大港区',
'cp': [
117.3875,
38.757
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@JFFL°_`ONJKDDFIFZN xlb~yFVNRŒrdJGzDPVFBCTNND\\UR@E`F@@Ip@IWGUoawOEE@ÏDgK{İEEMFëC—b…™@—KwOCDHHKBDJCDEEEAGHOABFABMCgDLSQ@CFEB‰MgYIDQINE@AUSwSAdYEHQMEyK[KI@GRMLE@@OqOoBOnpJ@BmEAFHL^FDB[C@BBDVFAHFJENB@sNEjQAMYsUgCSBGDJH@\\LjGR@NC@@G@HO@AfR@DŒM@EFEADBE@@HGDICCPlVANTC¤vgZlfRChjLJ'],
'encodeOffsets': [[
120065,
39771
]]
}
},
{
'type': 'Feature',
'id': '120107',
'properties': {
'name': '塘沽区',
'cp': [
117.6801,
38.9987
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@|ODHnPBDADEDA@CB@ddJFFLDNSFC\\]\\@@cFDˆ@nACOMW@M@ITURBRZNHNWRQšoO•j½f‡cqŸAqeiDÿÍyÓįFL|Ch@ÐFFxPpbHVJXo@@JCTR^BPABQA]^MB@bE@@FQBFVJRH@FXtPNZSBAja@@NƒDTŽLJrQTHFXZFB`'],
'encodeOffsets': [[
120391,
40118
]]
}
},
{
'type': 'Feature',
'id': '120111',
'properties': {
'name': '西青区',
'cp': [
117.1829,
39.0022
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@LHAHRHATh`LHNHDG`HDGZ`D@FQDAHXFACNAFLVRTBFOfHDCVBFQH@HSXHEPFB@LDBF[bDbLFKJBFLADBDjLvCPEI]FGEIGCBEUSjcFiBIVWfaHCjN^HtwBBFGPBJGjFBEGECGDONMFAP]TDHQOWCMGAMHKIJEIGQ]aDlUG]VGEGDC„{PEbBZmE@@GH@BCA@FMQCFMYMJECELCMI_P¯`]R±œ¡¸od“f—x•\\gF@JUFFH[F@DIBGMMFaJDDQ@MCSDCBENMH'],
'encodeOffsets': [[
119688,
40010
]]
}
},
{
'type': 'Feature',
'id': '120113',
'properties': {
'name': '北辰区',
'cp': [
117.1761,
39.2548
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ROHFFGCOJEDB’}DFHANDJHFEFSM_KC@O@CJ@DIRM@CEKKA…L…FKACHoLSJSIBETDJaEIIE]E]K[MYUYQILC@GF[MGNKEK@A@BCWECAIFEFYAGFOMI[OFuDiKACBCEKIAELaKaCE\\CA@KEAFOWGGTG@ERUACDeGEPSAUQKHE`FNjNFJADHHCJFB@DEXZFRRBJLA@AR@@BJ@CHF@BRX@@NQdDBBJhHCCZDLUNA^H@BKDPFEJ\\JMPfL^AJFFGLBDGLET@HJLBCFHDCPH@BIJFCLGABHNBDEF@BCN@@FHDDDN@BNEJH@@HF@DEJB@FfLNC@AHB@DHD\\IFGTCBCF@@JNH@ALKHBHCHBDMFEP@KYbHDEJF'],
'encodeOffsets': [[
120139,
40273
]]
}
},
{
'type': 'Feature',
'id': '120110',
'properties': {
'name': '东丽区',
'cp': [
117.4013,
39.1223
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ZV\\N^L^FJFFJIbSCAFTJTIpKDGLB†E†KLBjHTVNBZWbE\\SBQGE@ATCRHDGEEKECBECxOhOfAZGA_YEEWSGqRKIS„C@Mb@BiTAMYsOEWG@IQEURA@EF@@acUOXQRYCUDCHDTEF[SUEgAYDcVGJM`iAWDWLQRMHUHgDsDBLHJFCFDFGHBFFVEAGHCJN@RJF‡PIhBD\\FENCPWA@LFBAFHBEJUEARCDIAEDQBRNa^'],
'encodeOffsets': [[
120048,
40134
]]
}
},
{
'type': 'Feature',
'id': '120108',
'properties': {
'name': '汉沽区',
'cp': [
117.8888,
39.2191
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@LMEI\\MTABKN@FCDMH@COAcH[AoēA™M¡Wa[Meq™pQRMXMGQYQASV@J@NNXDPmBAtJXlveRLFGACFGAYf@^X@BPV@|HNPFA\\FNEEYBCnQGMDCDE\\IHFp„EFWJ@JJDGHLPBSFB@JBDGHBFR@@FHDNEjDLICGZEHGbHpCLE^BHIDDCGDCFMNE@CP@rWLDEDFFH@'],
'encodeOffsets': [[
120859,
40235
]]
}
},
{
'type': 'Feature',
'id': '120112',
'properties': {
'name': '津南区',
'cp': [
117.3958,
38.9603
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@TLv@CNHFFBHGZFETNPhCVGNGRQXKXCjBN_HIdUZChBVF\\TFECSDGVCZDRQPWdVNA^]RBBAAOQ]DSE@F_Q@[VMCSMADUECOHycI‹qMQEU}zkaŸwENRDENB@ADG@@HF@YnaAOFƒ|CDFHUHH^kVbCR^JHIFLJNGHBDNPXGRSCO^EBMNCPDHHFAFiEIHOAEH'],
'encodeOffsets': [[
120045,
39982
]]
}
},
{
'type': 'Feature',
'id': '120103',
'properties': {
'name': '河西区',
'cp': [
117.2365,
39.0804
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@d@hZNFdcLYXKRCtCMOFSYEGHEAGEDMu@SKAAsx]GMTGt'],
'encodeOffsets': [[
119992,
40041
]]
}
},
{
'type': 'Feature',
'id': '120102',
'properties': {
'name': '河东区',
'cp': [
117.2571,
39.1209
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ZBVFFIGABEEA@KXBDOFM[EACJgˆOIE@QIMGDBHUFEEGAEHECEDGIAKQDWLKZcdQPEP@FOFBJTJ@HNORJf@DBCN'],
'encodeOffsets': [[
120063,
40098
]]
}
},
{
'type': 'Feature',
'id': '120104',
'properties': {
'name': '南开区',
'cp': [
117.1527,
39.1065
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@NMVDCG\\E^B@HlB@YEDS@C…HsNSiMGDebUXAJEjidVTAFHDFJ'],
'encodeOffsets': [[
119940,
40093
]]
}
},
{
'type': 'Feature',
'id': '120105',
'properties': {
'name': '河北区',
'cp': [
117.2145,
39.1615
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@DBXFADB@L@LFHM\\NHED@JKZRb]QMRAFCJBDCBQYADMCAe@QIMP@GSIAIPE@E[EGH@ZEF]^HJAXK@KF'],
'encodeOffsets': [[
119980,
40125
]]
}
},
{
'type': 'Feature',
'id': '120106',
'properties': {
'name': '红桥区',
'cp': [
117.1596,
39.1663
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@J\\PNHEZBFEJELEL@BWGI^]FEkA@G]A[FDHUCMNEHJ^'],
'encodeOffsets': [[
119942,
40112
]]
}
},
{
'type': 'Feature',
'id': '120101',
'properties': {
'name': '和平区',
'cp': [
117.2008,
39.1189
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@D†T@FCHG\\FFOROMEgYc@'],
'encodeOffsets': [[
119992,
40041
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/world_geo', [], function () {
return {
'type': 'FeatureCollection',
'offset': {
'x': 170,
'y': 90
},
'features': [
{
'type': 'Feature',
'id': 'AFG',
'properties': { 'name': 'Afghanistan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ࡪ͇وŐǬϠڐŶӂʮǚڦ۾njƀ̚ІɣʪҴMوǯʲĹ،˒˰Nj˖ϪԈiżŬĘͺβ̈Ҕȏĝʱʪ¡ý۷ͪ˟̊ǰώĊԼϖׂ×ࢀAƬʋӧĥяƹ७ĭࣗǭӫλȤΣĪллΛ–͑ɳ̡ߛ€ͦ։՗ɅΥԕ²ԋ͡ɿ̳þٝŋğɻسDҵӇ‡܍થΓבôǝȁԇņ࠿űටіހހåզُƚßՔ˟ڢάҢιŮɲؒ΂ਸ'],
'encodeOffsets': [[
62680,
36506
]]
}
},
{
'type': 'Feature',
'id': 'AGO',
'properties': { 'name': 'Angola' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ȸصʌԋȘ˕͐ѯ֊æˤŠҬşŲɀɂӨԶ®ƤіHñ̡৴RfՉǞ͕ūԑÖԫ˪̷­ৃȼüκsԴŴϦ¹ĘʹĩСƨϿů̿î́ყZᦵ֤ۋպԽ໳΁᎝Š׋Ж₭—ŵÏԃϞկ~ԉƝЙDžÿՈŜ݊̂ޒªΰ˚ݶȨΆӘռːϐĘج«ӊʣ̜ɡԚȵԎ®Ǩʶͬʭ߼ǣ֚сՐĄǎΌŔʒg̎ĸៜ['],
['@@ɉėɣلͼδʪƘ̀˽̩ǯƍɍλ']
],
'encodeOffsets': [
[[
16719,
-6018
]],
[[
12736,
-5820
]]
]
}
},
{
'type': 'Feature',
'id': 'ALB',
'properties': { 'name': 'Albania' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ń˷ŢέΒȳiə˗ŧ»˙ϷСƛÐgȂү˰ñАîֶŖʼƗƂÉˌθаÂƿɨôǴɥȪďȨ̂'],
'encodeOffsets': [[
21085,
42860
]]
}
},
{
'type': 'Feature',
'id': 'ARE',
'properties': { 'name': 'United Arab Emirates' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ƭ¤ŒɱڂƂ۞uԖ{ֺ֪ظՠՎԮdž˹ŖڑѕGçճƪŝϝǑE΅ʓΏuͷǝDZᡋъ͏࡚Ț'],
'encodeOffsets': [[
52818,
24828
]]
}
},
{
'type': 'Feature',
'id': 'ARG',
'properties': { 'name': 'Argentina' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ߗ§ѓ̔ԑx࣑@Aሞ͒ϵрؿનԋ୲ȿϙп'],
['@@Ӵ؇͠ڰॠ“ƊǷ໶ോۊŷਆاࡾ͡Ŧχࠡ౧ࡒɭ़ŷڔƈނ٢ƎݐжLjфӝiڣۻҩ֟΁ॅࠃ૭ଧȽڥɣࡹT࠷ǽȇÝիËѫ੨ܙŗ׃Հν§Ч߯ઁఛ҉။ǩउĎǰԅǣػƺщԋ̏ࡱř̪͕߱ɗŜ࠳֨ʧҠˆʢѧޛʻڭԹūࡋȣ҇ߏEڃљʋؿؙࠞߦǝ˿ݭ঳Ӄձটލͧ΅Ͽ˔ࢍ֔ӡΟ¨ީƀ᎓ŒΑӪhؾ֓Ą̃̏óࢺ٤φˈՒĭьѾܔ̬૘ěӲξDŽę̈́ϵǚˢΜϛ͈ȝॺ͸Ǣƙ਀ȠࡲɤݢԊ̨ʭࠐEޚَոo۰ӒࠎDޜɓƶϭฐԬࡺÿࠀ̜ބռ߂צԺʥ͢Ǭ˔ඔࣶд̀ࢎĹɂ۬ݺશȱ']
],
'encodeOffsets': [
[[
-67072,
-56524
]],
[[
-66524,
-22605
]]
]
}
},
{
'type': 'Feature',
'id': 'ARM',
'properties': { 'name': 'Armenia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@୞ƀǨə͌ƣǛɁ҄˽ʁˋΦɫϘƏl׋̣}΃ӢHżχCʝɤǩuͧʖرȼĄФƛ̒'],
'encodeOffsets': [[
44629,
42079
]]
}
},
{
'type': 'Feature',
'id': 'ATF',
'properties': { 'name': 'French Southern and Antarctic Lands' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ը˃ߐĿˆDžɽϣಇÃq҂ŮΎÊǢ'],
'encodeOffsets': [[
70590,
-49792
]]
}
},
{
'type': 'Feature',
'id': 'AUS',
'properties': { 'name': 'Australia' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ߺ́ҜŘپNJԎÉÐঽ˽́ēگ̉ɰ׍בǧ®ԫ€ԭܘŗֈӝܸtϬռõ'],
['@@̢ڇբ̈́˦ΡЖ͟đϋǴܛŸнɄĹɬܕąѥ˖֭࣬ѭצЋ֞λŋȯӔՃࣧ͜ͲȂ;ηȴźƢࢹ׬ԩϸ͋ڀڹʀڭtӏËԳА܋µݓơϵɩݡjӕǕ׻χއثЭ̫ٱ˫гʝܧ͕нɅػʼnׁªˇӕ̇व‰ޡ·ϫ͙ԕέ۟ψԥƪżѬҝǃ݁؉ܩɪӉƄӑÔ߿ʐիԮƻْțьЭ;߱ĸˢРȯزЧ׉ݝƷѮҬŶӞ͘ЬãجہܑԿ˽͏ڛٽΊ~ҀԿ،ѹ̀ǂȘઃԚןz߯Цຓāછ̝ख़˫ߡÈࢻљܯȗljѱ̳Ϳ܉qՅõݑƶ׿ğֽԁ҃ʕœуʁЗˋؕ֛Bࢽ՜ҋDŽlӖкŘƚȒ‡̠ĺאģӼѻࡖƏӒ˜ӎͭնsʚϋͰĽڄӓڔřΪτε˳ެиʑʞ͗aјеڎă˄țʦĠӠǢȸŘрęӮΎ؀Úٕ΢׀ۀˬЦΪٜ̰ϤàɴĻڎ̺ԚĤŶȀɞüҬoࢨʖҚώɊ҆ӲѐœͲvҘט܎ΠܩΦǚ̗Ј˂ТψǻĸٖҠаȮͨцƜ`ɼτĭdɂτŦОŔبϫҲӽՂMՖÿDZҦДڪϜɘſȾκӒԘ̒јıۺǂeі؛ˢ҂Ū֎ȻҀ·ۼɋʈĐԶʵӬʊ͂ñȠNJϬеɡ͉҇ͻ˿ƒĮͱʙп̗ЭÔʁڜҫ٨ˏѠ́؈ӻʂBѰɍŶʷߤ˵ֈ˼ǐҊǠόľҤʰڞŝОÔʔīӔŌنLjǠŽˬȮѾdžҦtʈ̸̾ʂЩÎՃȾķ˜Λ̨ёÚӇ‡̥']
],
'encodeOffsets': [
[[
148888,
-41771
]],
[[
147008,
-14093
]]
]
}
},
{
'type': 'Feature',
'id': 'AUT',
'properties': { 'name': 'Austria' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Û΃ӁCǎǻ˧էLJƗܽsщȏۛÞயɐȉ̊ࠧƣĭDžԗŢѕxϝƶźȴƬʪ²ьɹŤɜݎ•׸ƮЖ}ˀǣþƜšո̠ń̒ϰز˓ӀΆ̐ÚٶʱЂªϰǁãŃČ̅'],
'encodeOffsets': [[
17388,
49279
]]
}
},
{
'type': 'Feature',
'id': 'AZE',
'properties': { 'name': 'Azerbaijan' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ʞɣψDGŻ΄ӡֽŒщϰƃ͆Ǫv'],
['@@ϊËƞɈԈͺѴѵђ׭ϺŸʸɧۗãƣٵƟ̭̍ȝvзȽ¥ԻѲ̂дʝʚ̿×যإk׌ϗƐΥɬʂˌ҃˾ǜɂ͋ƤǧɚȶƎضʍҐ¹ŘIJбҔɔŚʀ…׀ԙ']
],
'encodeOffsets': [
[[
46083,
40694
]],
[[
48511,
42210
]]
]
}
},
{
'type': 'Feature',
'id': 'BDI',
'properties': { 'name': 'Burundi' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Á০ɃϢԜßʲӎҀŸͧǸȏT˗ȹǭ͛ѫ̧̥΍Ÿ'],
'encodeOffsets': [[
30045,
-4607
]]
}
},
{
'type': 'Feature',
'id': 'BEL',
'properties': { 'name': 'Belgium' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@؜áުǪՐοҦȝħ֧ɕĝһܿϦћßדІϷͶϷ`ũ̒ڪǔ'],
'encodeOffsets': [[
3395,
52579
]]
}
},
{
'type': 'Feature',
'id': 'BEN',
'properties': { 'name': 'Benin' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ۛįȹ׆žኞǛǦЮ̇̌ʱʞņѶ̀ĨǠξЪĀȀʤˮʘ̠F٘ә˩ȎӽǓͷĘɧСԳʵʳǁՉt՗µണ'],
'encodeOffsets': [[
2757,
6410
]]
}
},
{
'type': 'Feature',
'id': 'BFA',
'properties': { 'name': 'Burkina Faso' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ֹɐϽ‹̍Ƀϗǰƥ˦ϙǾÅӦɮΤo˴ښۢŬּɲȴОœΚǢŘɎٴϖdžˀ޼ΒҦŢɀLJՠJáСŔϣӀչ€НॺȏmֻǿʣЩÿǟν˿ħ݁lϳâ˓ƉωÖร¡qӉŘم'],
'encodeOffsets': [[
-2895,
9874
]]
}
},
{
'type': 'Feature',
'id': 'BGD',
'properties': { 'name': 'Bangladesh' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@i׽̉ŶÆگʉѬµєDžКΕӨޟ’ü΋˃ҳΧǠũƵʃĠ͗øŽۖ̅لƜԒԫɤȆ̪Հ̼؅Ѽ֮̔ږεВ£ô׏ߞřު^Ӟƛϯ܅ϕµʷӍҢѥƎ՞ɶFѶ೯'],
'encodeOffsets': [[
94897,
22571
]]
}
},
{
'type': 'Feature',
'id': 'BGR',
'properties': { 'name': 'Bulgaria' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ʎΉ͚Ö٦ſ௾«иɌবȜ̩ؒӴĕѥΏ̫׹˔ӏܣŒࡥ˃Uлޅÿס̊ڧɱة|Ñ֊сːƒŢĝĴƘˌ͌ˀСδ÷̬ȸȐ'],
'encodeOffsets': [[
23201,
45297
]]
}
},
{
'type': 'Feature',
'id': 'BHS',
'properties': { 'name': 'The Bahamas' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ȵ£ɇӜ̿ʐǾՔʨ‘ۣ̎Jӥ'],
['@@ࣷƅÏ̴Ђäֈ{~ɕ'],
['@@ƟׯƷņ`ѮϓͪCĪڐϗ']
],
'encodeOffsets': [
[[
-79395,
24330
]],
[[
-79687,
27218
]],
[[
-78848,
27229
]]
]
}
},
{
'type': 'Feature',
'id': 'BIH',
'properties': { 'name': 'Bosnia and Herzegovina' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̦FȿσМ͓ūЃȡ™ƽû˙țūҥݓ͈ͅΘ͋Ȅϭ̾ǻʺЩϾǬΒ̞ȕǼǨϾnܠƓ׈\\Ϟȅ'],
'encodeOffsets': [[
19462,
45937
]]
}
},
{
'type': 'Feature',
'id': 'BLR',
'properties': { 'name': 'Belarus' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@߼Mࣰ̈́ȚӄېːÿϔԜƚ͖ࣘࢮɁŢȻѲĴࠒȧĊЁǷɧՄս΂Ƴ»Ʊ֦Ʃʎɡ͝ǿڳˆljÿȠ˧ȸ՝ܝ¹ʵȁÃхͭĆݷ¡əȞ̿ƥ́ŨڍjफȬࡕàٱmҡɩГeϐʷϴԌǢLͰɷ͌™ϊ'],
'encodeOffsets': [[
24048,
55207
]]
}
},
{
'type': 'Feature',
'id': 'BLZ',
'properties': { 'name': 'Belize' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@OŮĸžƴı̞ԔDŽZHūDŽGaɭƋεôŻĕ̝ÀăīщǓɟƱǓ̅ʣ@àॆPژ'],
'encodeOffsets': [[
-91282,
18236
]]
}
},
{
'type': 'Feature',
'id': 'BMU',
'properties': { 'name': 'Bermuda' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@OEMA]NOGNG\\Q^McMOI_OK@CQSGa@WNLVWHFLJXVFGJ`ZRTDLeeWKIHGIK@@[MQNi`]VDTBHCJAPBJLVFjT^LV\\RJZRn^RH`TfJjZHHOTTFJP_NOX[EYQQKMEJOLANJH@HQHAARF@ZEPS[U_IcRQXE@EEKKOCGGCQCOGISKYGUC'],
'encodeOffsets': [[
-66334,
33083
]]
}
},
{
'type': 'Feature',
'id': 'BOL',
'properties': { 'name': 'Bolivia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@य़”͟گӳ؈વȲ۫ݹ؅ŗ͡୆ҋऺˆ߾ѳ΢ŏ؆ЫֲՌ࣢αۺȖ˰ƭ̶͠рh܎¤נǸ˶ܩഠزíѠnȈʪ݀;Ѷ͂સƚęؽļ͓ãࣰ֛ݫऴƑ̻ͦ֨ǕΐʑՈTӦʟšӟǐʕZγʓa͒এྖ“ūӟĜͧҞɽȤԹƫڋɯρĄӏʿǥaʶ޳јޭ^ัʓЕ݋sҋͥ৕ƉǸ'],
'encodeOffsets': [[
-64354,
-22563
]]
}
},
{
'type': 'Feature',
'id': 'BRA',
'properties': { 'name': 'Brazil' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@૮ନॆࠄ֠΂ۼҪjڤуӞеLJǒӜŖӼBҦ̡ƴ̿Ƌ̻œį͔ýޔƿʤ֥ɪ΃ǏࢱLjÈଜʝҴˀǦăӐɰςƬڌȣԺҝɾěͨŬӠྕ”͑ঐʔbYδǏʖ™ӠӥʠՇSΏʒ֧ǖ̼ͥळƒ࣯ݬä֜Ļ͔Ěؾષƙѵ́ܿͽȇʩџmرîӃƟϡĪÈ౨ۏӷݏv҄ͅ֏¶DzΰұԞΓݴɜƶA΢ԖʎċҔɊ̈Ôϼ०ֲێNJŔŴݴŸϚᘰpθſӔύ̬LؐӀƒǚē†͐ӯĔYՀ࿖k˦̂ɸˉǐӷǂļҨѻٸÆnjʲشȞΊƐĮΤ׸ʆ¯Ǯ܅ðśՊ’֞ϓɒǀþجŅڜȿʐȤ؀žल̮͎̾ŏʂѪšȜȗʼnσ̀ŵȖϷɷ̏ƅ܏ɌыÔϳԬϿЮ¥Ģǒˆ˜ϠƦ˚ɢҬíȲŠҚçøǢƗǘĎʐͺõЈĒӔDZξǥʺɪȊ•ŘɿДÒ͒͊ʴؤӼޒ˺¢ȺҫҼ฽҈Ƒxׅمەʾʩ๤ƁŠࡃٔր੐̟ඊԡШӱƏҫ঎ʶ࿐ѹఴŽఔ۝੸व٪ʏܖ‘̦˅˸੭Ɣԗͯ൹ёշஅୡՙोثܯȿgɻءÒ༽ɹಓęօˇͧƫ૱࡛઱ƛࢁڹηȟԋ࣯Fೕ͓סύवʗ঩ڝ܅࠯ũطƔҫƽࡓȏЧחҥट๕݉ڗ֯Ͻϥߛ։ӑɷӈψЊӟֲڇҬࡹՠ̹{ࡅٰձę'],
'encodeOffsets': [[
-59008,
-30941
]]
}
},
{
'type': 'Feature',
'id': 'BRN',
'properties': { 'name': 'Brunei' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ͬ̾܎Ң›Я·՛Б€ǭ˹ϥѦ'],
'encodeOffsets': [[
116945,
4635
]]
}
},
{
'type': 'Feature',
'id': 'BTN',
'properties': { 'name': 'Bhutan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@΂ˍÏԩۇ{ۿÈՇſޅ͊kǚ֌زҒɈ׸șѺqπɥ'],
'encodeOffsets': [[
93898,
28439
]]
}
},
{
'type': 'Feature',
'id': 'BWA',
'properties': { 'name': 'Botswana' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ǜƭ˄ӡॎइήĝD̑ʚՑٰŹ՚ϝ஑أݭع˩֓ʧ́ҙãƧГďʽ՝țہ¤БɾΟĸХșȵГЉʧпϑ׻đȇ̐üԠӽߚɧŲAរࠤˆ|Ჾش„ಖ͎̎΍՜ͤʮDӂȎưÙ͔ڣ'],
'encodeOffsets': [[
26265,
-18980
]]
}
},
{
'type': 'Feature',
'id': 'CAF',
'properties': { 'name': 'Central African Republic' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ۜÚƺɎƔgȾȏ੔͐Τ͠Ѭ̌ĉ̐ʂüߺ½߆ϴ؊ࣺю;ՐƜĪΫӜԿF΃ƋΓÄʻ̆ʍٖοҢͻT˗֠ѫΖεɆԋغͩƊˉˣęաpكĘ̹ïųȱ˕}ͧDzधнϥĎŗÝʥԕطǐؙĊ՗̴ۓ˸҉˓͛яùדգ²֩Ƙԅѻѯޱėʐ›Ϧϧ˔̳Ѡï̠ЇѮæʢċΞÞٴȬƴц࡜'],
'encodeOffsets': [[
15647,
7601
]]
}
},
{
'type': 'Feature',
'id': 'CAN',
'properties': { 'name': 'Canada' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@؎œުxЯ΅̵Å੥Φȿˬ͆ʸ̎С'],
['@@Хcઝ˂ޯІ̄î૆Ɂ࡮Η|Ʒ'],
['@@хŝൡϢʥ̘ݩ̌Ưʈࡻư͕ҜðȚࢨǿԨŵ߄ė˺̃дЋ࠼΍Όҩ'],
['@@։ܿո˴֠ǵ̏̉ݚɱϰȴ࠼ʵʹ؛טƞņѿʼԷΝ݉ϝ‹փǂǾیɻńইܯԅ†צЂ߫Ȳࣙ¹࿅~ŹʠԼ̐λɬ۸Ԓࢄ೾Զӎܲ̂϶™Njɫ҅Չ'],
['@@@@@@@@߰äʥ॓ܶگͯDԑϪ̵ϮчʾƻτºˎЂŋ'],
['@@͡ѳχîəʢ Î͖ʦΆkɈǣ'],
['@@ঝҧץnǿɪزϲ଼SiǍ'],
['@@ƼυјżӨɗं˽४ʽöЍؤÞ׶˥ݙ˃ಳȬҽϚ࠭ҁ஡ѣ˿Ӯଗăܴдņڌ˺ޔ؈å'],
['@@ष¥ȿЪΦҼޖŜپɷXέħřձʛ'],
['@@Է̍ଉʬۃğଫϘ݊ʼטζࢼʃԎƯʦDžԠ͍'],
['@@G࡭૰ڄ৐եʡح߾֥࢚؈ؖܨ°ईஞÝఔūૼй¼зس҃פ҇ŃУ࿩חୡŻࢃʨʣуߵ۽ʓοই֩ளÇڏΡÇձ঍Ŀਉڻ࣭ु͙ڏ±উంƕϜ޻ϼّ୲ǔ༞εࡀ͋׺Ѕ੆ɳࢸΟ൶µࣴąƍܫʼࡋ،ळనߗ٨˚ҔࡺѭೢףѶഎЀ॒לҮהç֭֘܌৷لলࢤνݾ˫ಾגȘ෸ɫࡸć۠ɚ޴˵ਚӣʮ͙ຄÛ}۷˪ਜ਼ގſ،ӵ௖Ұߦऔ֌ϸٺݣબੳघ৙͵Յ૤Ӂݰӓംɏբˍͬ܃ټŏͶͅÖऻ؍́׽̏൯̗੏ۑ෇ƋᅛǮుPࢇÍ۱׽ੳω௉૗ॵޡ܌Ɛഘૄᄈ۪సČݔЫߍ֟ˊࣟ˜هતп൸ŨࡆीÎ؍ժ̥ਣսᇷԁ࠯ͽय؁ٓ֍܆ฤ۞഍ƒणĹջӆBନύʐ֛ƛ˧ɚٙىʱٹ̕ϡΥŽˏ¥čȹ໽A౥MϛƷࢵ؃Ŀßˍ͝ޗBࠛGϛƅƊǑøʯeďષлࡽſউ҅Ɂ@˷ƂĥŦnĔȂ̎ЂҦʘӺǙܴǵނ࢕ЂľƬūĺɳ@ǛƆ¥ȤǍēɥ€¾ĊȡĊćɚٵːڹ˪ࠑ͘߁̨ݧʃ˝Sਕɔڻʼnࠁʺ࡫Ɔו¾ʻƜƫҤ˳IE͓჏BᮝA᭯@ᡃ@ᠿ@៙@ᢡ@ࠛ@᠁@ᛷ@őF྽ࠜ׵δຽΐҳݖŤԨ੻ΨƧڴ৭؎iѠҲКwՌෙ՘࡭ॠՁ׾ޑϚ֣ΈѿѢࡇ˕ࠇҹݛւדπࠋɸࠟ|JⷎNᷲ༬ȭ೘Й࢘û݆ΖৰˀఢĹ఼τ൘Ⱦ־ΑظȠȊЄ׈ęෆݫ૦֬ŖّਔƐ͆ʖৰ·౼Λዸ̭ୄƛࠖÄଊэ஁зຶǷᗘIJܒƦࣆԋࣴьࡩΦժ˼৾žڦĎڴȩࡊҗरä๢ϛಬƄ௬oĭԺݞƦದ˵KߑՖڠڰuϞࡊ࣑԰কͺäघশ؎ૌƇࡘχଞॅݗЭ༠ǝ'],
['@@нϿሎʬୠщॊіސ˟یࠛфΒ׭ࡰ݊Ŭ࠲Ƈश͹ՆࠉʼץථеະЉĝσൡã՚͓˱ູ̯Ƃฃɪঋ»ཅ˷ᒃű๻āҕІଫɮݙģਛږ֔ĚಘƜஈ›રƦྷȞᅗã஗jѷ̴ዎͲಗ[ืɚ۶ـגͮᖬԠ࡬Nj'],
['@@݉ևಹך˸Ş૸’ٔȁ'],
['@@öɵࢿ|ࣟjࣿőʑ¼ऍѾ˜̠ИÈነěชң'],
['@@ڎԽޤڴᒆΈ෺ࢅůջဒʒߒͮሀыୄЏŊν༚Ȑ࢘՗᎐ܸͩ͹ߐ޻໯ϹጘչೲȁீޙೖÇʽכ้ঋਗά೓߲ઙĿŁӕࢪӥଜϯΌɟմࠩ́׿੕ɪᑏڨஎܣ࢔ԕƎ̉ᗱͲᅩӤ৳Ц̌ʂయќ௥Т`ʑᝡƅ܃˾ֆؤ཈dႸņ˫̜̊оચࠊɳϊ͕˾౿Рၳ˺՞ɆࢷԺ݋´ڏ˸҇ʛ຿ŅᵝȈᄫʚഹŴۥ̐࢞Ϧ஝Hˉ࡚٦ݨࡺ΄ᓪɢأի'],
['@@৊ǯຄńɖʑ޷Е౜αƱݳ൝͗߳ê׉͎ᐡٮjˎ႖ĽएռসР'],
['@@࣓عय़ŒԽ݆`кѮΨ࠰ɮც‡ྈȱళݟ৉Ǎ'],
['@@ᕍЙѷςኹѺήΤ׌ؘܰւࠑԦᭊƀ஬ǧᒰ±ࠄʑࣖΝ੍ɃᏝןਫי@ν'],
['@@ҙ͙௝Øৱɖ҂Ϛீɨܼ̬̍ˇ'],
['@@ٞϵ€љϣس൱đࣗƈjӬ൝ÝÁٮࣜౌ˺ஂµÜŎ'],
['@@̙͢ݠƘࢢ™ƪЩԝЋ᭗Žᑯη౩mŅ˜პϊ④ij୯Ʈପࠐ߈ɾᛄ˳๶ӻฺÛறߨޔ̪ࢄĭ˲Џ'],
['@@ढ˓ကFܨˡȑ́८ȍՔȧଊ™௬ë೸ǼႊðീÏ࣒ͅȊ΍ԽɟభǷ੽ĸᜱŻႫcഫļᖁ˔̃ҦĹжࡇξ჋ĺঅʼ͂ΈႾÁ'],
['@@ŗ٣٩̇޹£༝Ϋ഍ŹଗǼ@@ුؼႮծಆ[ସŬ'],
['@@ϣy༽Âɡɼၜ]מƻĵĩ'],
['@@༩ʋఝ˔ڼˎ௮Đஈſ˩ʥ'],
['@@৽ǏඉBbŤࡴʦҌદǝ'],
['@@కǥۃȚέ͂áΎજ‘ӪÅ৐̇ɫ̣'],
['@@͜Ε൏Ĥ൩˘ሏŒߺʠ৫ȮÕ͐࿶ŕᗢ̫ٞЍ'],
['@@০˕ଽʟ༇ك๥Óდņࣗ΄^̦ڔɢ໡Oए˨ՑϠ׌ώ׊ʲࡴÎοȖዜ¨੶҅මǵ൞ǃڒև'],
['@@ᖢßᅮŅ໤ɫ™ɡᏅη᎙ǟݻȉᆬJጡԙേʃ෯ۇႿƓՙǡᡷěୈĿׇƭ۞бߙ˽ಛʃЋ͡୫ʣŞȏ෬lȳᖟԋᔧɴឿŻధĸཟªĿЖ༊Ȑб؆ԢÐᖤγ଩բഹLjڼ͘๰Ȩʄ̊஋͠ΥѠᘞ—ڒĝ಼̪ቃĬ᰽Á๣˸۩ͼগʘȁ˺దLjঘ‚࿲ƌం̺ਬ©ࣤɽٔҒૐƈບĢᢲ–Ҁĝ᝚ƚᆔÁᆒÁ']
],
'encodeOffsets': [
[[
-65192,
47668
]],
[[
-63289,
50284
]],
[[
-126474,
49675
]],
[[
-57481,
51904
]],
[[
-135895,
55337
]],
[[
-81168,
63651
]],
[[
-83863,
64216
]],
[[
-87205,
67234
]],
[[
-77686,
68761
]],
[[
-97943,
70767
]],
[[
-92720,
71166
]],
[[
-116907,
74877
]],
[[
-107008,
75183
]],
[[
-78172,
74858
]],
[[
-88639,
74914
]],
[[
-102764,
75617
]],
[[
-95433,
74519
]],
[[
-123351,
73097
]],
[[
-95859,
76780
]],
[[
-100864,
78562
]],
[[
-110808,
78031
]],
[[
-96956,
78949
]],
[[
-118987,
79509
]],
[[
-96092,
79381
]],
[[
-112831,
79562
]],
[[
-112295,
80489
]],
[[
-98130,
79931
]],
[[
-102461,
80205
]],
[[
-89108,
81572
]],
[[
-70144,
85101
]]
]
}
},
{
'type': 'Feature',
'id': 'CHE',
'properties': { 'name': 'Switzerland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƫŹȳϞƵіwá΅χƙةŀǻ͹ЏơƄһ˵Л¡αǶ˽ςБſ^ϠؚҾɈϤûɲƞ܎MǦǼ࣒ʱ'],
'encodeOffsets': [[
9825,
48666
]]
}
},
{
'type': 'Feature',
'id': 'CHL',
'properties': { 'name': 'Chile' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Bም࣒@Ԓw˧ͻܛʻЭ‚ӻä؏ʨ࢟ŨੑҸ࡫Ҏୃशۘǭ୼֗૜̟ѢϬ˘ֺޠΎװı'],
['@@͢୅؆ŘĺɁ˿ࢍࣵг€ඓǫ˓ʦ͡ץԹջ߁̛ރĀ߿ԫࡹϮฏɔƵCޛӑࠍpۯٍշFޙʮࠏԉ̧ɣݡȟࡱƚ৿ͷǡȞॹϜ͇ˡΛ϶ǙĚ̓νǃĜӱ̫૗ѽܓĮыˇՑ٣υôࢹ̧̐֔ÄgؽΒө᎔őުſݝPЙȷݷ̣Ɖ޹Σoॅ˚१ג@@ਲ਼ӔˁՒʄӰх֒Ņ෤Φ߰ࢴٰౣʔߞݒ˸ඊत̏Ѯგ֝ɠʿ਻ՉŠ˂ல˺༒ϮָʍࠎéूΠ„Ԩപ׈എΤబȗ఼ʤۚĵਞӮਆưྺ˒ნˀሤÕ൘ǩ஄ќɌɦњЬֱŐ؅ѴΡ˅߽Ҍह']
],
'encodeOffsets': [
[[
-70281,
-53899
]],
[[
-69857,
-22010
]]
]
}
},
{
'type': 'Feature',
'id': 'CHN',
'properties': { 'name': 'China' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
[
'@@ԑഓΫۏѷ܂ĩخӶࠜڦَϨʡƣԓ',
'@@ܩЗۏʺyܢаϠࣾɾӚoȊ͍σσșӟ'
],
['@@ฬˍ঺ׯͼ߃౨Cܰͨ൸ʜѳݱ͙̭˽ः֡ࠇ৵ƪܝ̑ɜܙť঳ѕwLяթӺͯһಙαƀѹܩŒЍ˂ֽ׭ऑҋۃա୭ʑأϽࣝɭ҂ϴǭ͞ږ֠ѹѲܷ̓ॉ׏ԫթ࠙¡ѓϻѸ֩یƏ„ϕڔʕस׶ݚ͝լuƌѱஓɻϻҏࠇућיࣜҥͦࠝԞޓ֮٥_دՅɯȪ҃ӶʻŻۃɇڗҷ÷ؗࣧڹિޭোିޡୟۻृĩԣύ̃˘Ӈй୭сࢵŹ˻ࢱҭ·ə؎Ȧ͘ૻːЇƍࡍɔЏ΀ƄӜޏƶЙܑ̀҃ࠇīڡJ҉ȳѥūŶ॥҃x÷Ȣ}Ύ؝ʓεƸر͂ʔۤՏǎȧޜࢱƓĴাߔۮ”ۚ{٠νȨ˭ӶӭÙࣟŲ˴ΜϿԺ׳Ν۵ȸॷ՗އسڳĿοɦѹr׷Țґɇ֋رëڌԟǭওĈोȖڿτٵǔ˯ЖҽŦࡓոکʴΑȩଢ଼טࠛՒɽऐ׾ő‚іͭјĐۆࣙঠ൧ͼʝ٦ةϼƫʌųӎˆ͜ԛȔ˟ďɇިʈȔśȠߤЈ׈ǐࢸő͆՜ંIJͮ̚೜ҔŠȐãӐּɔݱฦဘͲјȈ؆ຒဠˡҲϞ¢ࡆۦĀٖ֔͢èɚו۸ѽப̿׆ڱ͕ঙ̢ηূƝଆŝ৪ԻԲġϤޟӲӿऒnჄȉ૤Ŝࠦůఔԛ৮BόʽঐҌബ̈ాŒঘ̒׾҈ך˰Ƌˤˍ͔ѴըӀùࡺǝ࠸Ѿ౲͚؞֊נʆ௠ŐڐĥĠ̘ݿזګː٥̳ࠣžӇŃɏΆר࠾Цو৚̓ஆՎQτݸࢾҲːWҪңȦۜмਰƲ૜vసʡ݈̱԰ࡏ̀α̊ԩ̶ࠕ']
],
'encodeOffsets': [
[
[
124701,
24980
],
[
112988,
19127
]
],
[[
130722,
50955
]]
]
}
},
{
'type': 'Feature',
'id': 'CIV',
'properties': { 'name': 'Ivory Coast' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ϣUוǒ՟Wহƥ׍ʍ̯ࠫNjvÞۖĄŀ}ͨΣΚˉÈʕɲǾώčО ʔƄB¸ξÝnjĄŜ̸ĶȹڨȗΎæ˸ǘÞŊúɸųٮOƸʖƢgʎĦžΫȞłΌŰϚǽƦ˥Ϙǯ̎ɄϾŒֺɏɠ஡Ο۷ɕेθܣ›ͧ'],
'encodeOffsets': [[
-2924,
5115
]]
}
},
{
'type': 'Feature',
'id': 'CMR',
'properties': { 'name': 'Cameroon' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ľ°ӻŇԝŒЋÅ൅nŬڒ͟֊ϧƚǟϖɋŦXɶɎתЎ߸ʒRԄӮ͈bҾΉ־˲ĀΔȌͺžь҆ΊǞךDzȊŢѨɜ՚۾ٲ¬˨ĠƲͫͰ‚ˌʂ¶ͮ՟Ê֏‹֏ҜޅҷTʁÏϥČǻЅӸөμƛŠΏˆ׃ſɩх࡛ȫƳÝٳČΝåʡЈѭð̴̟џϨ˓œϥĘʏÓґڛȤڷɜ੗'],
'encodeOffsets': [[
13390,
2322
]]
}
},
{
'type': 'Feature',
'id': 'COD',
'properties': { 'name': 'Democratic Republic of the Congo' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@»ঙͶŕˑ̗͓ɟ͍ѫǯϷ±ګț͍Oهʍɹ‹ԃŗÝýҟɄϡÂ৥ưޝċѧǘӣӤҹҒ੕ͥĒ૿ƙɣĵʇՙȊχƫষĻࡇɨƫט͝ɲƴìٟࣟR·Ҧ̳ΨٟŠȋѰԣ˅ڧŞ˫ϢՕüϽqµʾ́rϥºԳųιtȻû®ৄ˩̸ÕԬŬԒǝ͖eՊ৳Qò̢ѕG­ƣԵɁӧűȿҫŠˣş։å͏Ѱȗ˖ʋԌȷض៛\\̍ķʑh΋œşʼɊʀμƎɎ̪ǰɚđ˼͐ҜSÄʃ̼ƩӶՄӨШɆːƒ۔θࠆϬўքМĪˌt̰Ǝ̆«ӊŀݖǐԾʦ҈¸Ԕúה͜ѐҊ˔۔˷՘ؚ̳ĉظǏʦԖŘÞϦčनоͨDZ˖~ŴȲ̺ðلėբoˤĚԘۙϘķɤƖϲÅҶDzȦΫ݊֏'],
'encodeOffsets': [[
31574,
3594
]]
}
},
{
'type': 'Feature',
'id': 'COG',
'properties': { 'name': 'Republic of the Congo' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̿˾ʩƗͻγۏࢸٖҪ̓֌˾ɂ֦ĺäό҆Зݐ•ʴЈł֒ĝڀЉӺζ঄ȽǘسçɻѢÔξ੘ڸɛڜȣÔҒѰ޲ԆѼ֪Ɨդ±·ԓʥ҇ǏԽĿݕ¬Ӊƍ̅s̯ĩˋփЛϫѝηࠅ„ۓɅˏӧЧӵՃ̻ƪÃʄқT˻͏əĒ'],
'encodeOffsets': [[
13308,
-4895
]]
}
},
{
'type': 'Feature',
'id': 'COL',
'properties': { 'name': 'Colombia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ΫȤЭ˨ʅƅ܉Ŝȱΰƽ_࠿Ӓŕʺ̼ڛтȢ̦иÊΞՆ͐Ѵ̳ȦDŽӦȏސǸɚƃ܄ͻ҄ņТ˔ÑǂʠțӶĺŬѢـהΌĚT˦ƺ܂ӖϸՊfäǪڂéڌъ͞ȊОК̖»ɚɛǍ˱գƕɇп͗ʋʓ̷Ĺ׵ɷӭѢÇņϭȄȁâ͹ij̵ˆǫȸéȨ̉ઊĄӦŃעܡͼĚ؂­ӐĪ̔ƟƱҍȇ˯ß׻ǜ֑ʆʟ†ȉэл̨ȃɠ̋ʰ࠹ǁĻǏӸɷˊ˥́࿕lZԿӰē…͏ǙĔҿƑK؏ώ̫ƀӓoηϙᘯп҂ʣpժࡤٟϾԍị̈ƤҧɝصŀӵࢤϳɐˍІ֑Њɡā'],
'encodeOffsets': [[
-77182,
-155
]]
}
},
{
'type': 'Feature',
'id': 'CRI',
'properties': { 'name': 'Costa Rica' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@җȆǟǮĬƤ‰ȄɷȪͥǔ́ņÅʖəƮÄʑǗȩȓɸˑĊŗǞLʮŎˆʁŠȖnjŴňֆɝȖŊˊéƔǥʜÇȪDzɈҙ͖ͷЂΩ͗õLͷǪűűıƱëǟ©Ǖ'],
'encodeOffsets': [[
-84956,
8423
]]
}
},
{
'type': 'Feature',
'id': 'CUB',
'properties': { 'name': 'Cuba' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ܨÑڊW߄˹̭ͮ޺Ĩ̔ȡ܈ԳԺϛˢ\\ԆǟÕʁئ“ٌ΅ıȟ֑Ń֡¥׃âளą֜Ҷ΁ɔէÈ̃ʐȥӎӃ޵ɦʥǬભž̋ǐ̀ɀࠗ¨׿ѧΏ[ťȳеğΫĂѺʸǼ̤ϞȈіǎَĄȰĢ'],
'encodeOffsets': [[
-84242,
23746
]]
}
},
{
'type': 'Feature',
'id': '-99',
'properties': { 'name': 'Northern Cyprus' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÐJŨȮ؄Yކʢ֧ΧÔƿęˆLJÙűj¥iĎѾNjVɫïƿ¬'],
'encodeOffsets': [[
33518,
35984
]]
}
},
{
'type': 'Feature',
'id': 'CYP',
'properties': { 'name': 'Cyprus' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@€ãࡱͿЩŊȟͶЎŒǀ«ɬðnjUÒ½j覎ŲiLjÚ̇'],
'encodeOffsets': [[
34789,
35900
]]
}
},
{
'type': 'Feature',
'id': 'CZE',
'properties': { 'name': 'Czech Republic' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ϯǂЁ©ٵʲ̏Ùҿ΅ر˔ӃΰѕȬėΠƧʠؒǾ̸Ⱦ׾ǎɂdžɜīϒĖЊ˓ؼñ¿ɳҘǧŲɒּĥĄʿز»ϮЯʡCŽƯȕ—ÅȑLJ¡wý˹ēϋbšȁ'],
'encodeOffsets': [[
17368,
49764
]]
}
},
{
'type': 'Feature',
'id': 'DEU',
'properties': { 'name': 'Germany' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@d͗ࡔțS̗ࡢǂҾɰॊͧІˋȞёɹɣ̨̙Ⱥ҅ß́Έ՛ϑĕɛĬɁDž׽Ǎ̷ȽؑǽƨʟĘΟіȫӄί̑ϯ̟ŃŢշýƛʿǤЕ~׷ƭݍ–ţɛыɺʩ±࣑ʲǥǻ܍Nń״ьֺ௅ƸЇɘ´ςǗȐĨ֨ƗࢢԎ@Ɉ͂Ⱦޔƿ˴ǐDz۰°Ƽȃ֮вȓ̀ӈٌōՠŸ'],
'encodeOffsets': [[
10161,
56303
]]
}
},
{
'type': 'Feature',
'id': 'DJI',
'properties': { 'name': 'Djibouti' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ȤʹΑӏȩήɯ̱҇ȅƬȭÏҷb_ʮßɶ˴Ѐ̐ϊήñʪȴ'],
'encodeOffsets': [[
44116,
13005
]]
}
},
{
'type': 'Feature',
'id': 'DNK',
'properties': { 'name': 'Denmark' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ԋڹ࢟ӄŝΒ௼˨ˎу'],
['@@ȵ̓ʡĞ؁؁ɮХ՟ŷًŎͽҲ}࡬Ɣɪʌʦ݌À̐ɴڮʂƒѝʟ˙ĶɽҘŵ']
],
'encodeOffsets': [
[[
12995,
56945
]],
[[
11175,
57814
]]
]
}
},
{
'type': 'Feature',
'id': 'DOM',
'properties': { 'name': 'Dominican Republic' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ŀƞپIӾɏɜtƴ̕Ҡhʡϐ‰Ю̷̯ͿЍǼϫ•ˡ¢ƱƵ͑½ŷȲˣťͳֻɏƆ§ʎjɬɍʦȲƚÞ͒óҜ'],
'encodeOffsets': [[
-73433,
20188
]]
}
},
{
'type': 'Feature',
'id': 'DZA',
'properties': { 'name': 'Algeria' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ᮩཽᝩ࿷இϑटćU՘ϵƌԹʊȧЀᬻᆴᬻᆴṕᎠfnj@ÊQ঺ബب࠼Ÿێɦ͎тচͪ˜جӢòϞ̶સƚƸ͜ɛDz̃ࢲ¹Ԟ́ՠ߰ҠࣦƢՌΎ߶ʰ෎Ƭർæшůߊͨ࣌P΀ȝֺ¾ǟћƄߟȡۙԭҵôمۊԃRȯԮ͹Ϊຝ˖ݏ°ϵƧۇÔϥŃҟòՇͫΗӺؓŽέ̘ҵϼƸڒϷςՃ'],
'encodeOffsets': [[
12288,
24035
]]
}
},
{
'type': 'Feature',
'id': 'ECU',
'properties': { 'name': 'Ecuador' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@҂غǻξ͍ϵԉςǞʀƙބ̎ŴƺԼ͆զÍ΄ҢǸ׀Ͱࡀӑƾ`Ȳί܊śʆƆЮ˧άȣŞٓʽճࣷ࢟য়ͧԥܵǃ֣Ӆ΋ΙъͻĞ΍áw̮ʈȨıΔ'],
'encodeOffsets': [[
-82229,
-3486
]]
}
},
{
'type': 'Feature',
'id': 'EGY',
'properties': { 'name': 'Egypt' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɽͷǹىɫѩȝƥ˩˔ϛϒ׵ஸđùΐࢯԪࡋٌವ̴ҙ˒ӃݮछǗƣ‚ճ঒ݭƨǣΏ@Ὁ@⁩@@ᶶ@Ჴʥڲɐ԰Żά̤Ж૦b߲ɝ࠲ʛϴſ٨ˊΌʊݎêװŃɮеȜ˜ڨȣټ³аɄւ෽'],
'encodeOffsets': [[
35761,
30210
]]
}
},
{
'type': 'Feature',
'id': 'ERI',
'properties': { 'name': 'Eritrea' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˻˖ΉӰϋ˒ɏܷ̄ͶֻXȭǬӯȡԛϢʽط঑ǬęʹβఀĊ֒ˆʴؤƐьӒӦঃɴޗҢУବߏҲӍҖӝˀ˿аʧʩȳέò'],
'encodeOffsets': [[
43368,
12844
]]
}
},
{
'type': 'Feature',
'id': 'ESP',
'properties': { 'name': 'Spain' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@¦״΃θஒ؆ਊƱ૾NࣂƝۦªമƒͰ͛໺ϡ̨ǺीϝআŊ®ӥߓ֓ઁǯõ˱ԩү͕ہ͞ӑӟϑǹճىǗש٥੧_ߟhՃ͍̓ͅЩê̵˴ʃӚ޷žé˦̶̀Śɬ̃ʢɶրͳԌδè’ЈƎŬZپϲɪɻфөˆƝŁӹCɁЬ΃ū̥ɇ'],
'encodeOffsets': [[
-9251,
42886
]]
}
},
{
'type': 'Feature',
'id': 'EST',
'properties': { 'name': 'Estonia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĮӸ̱ŁՓ̘ñӘਫ਼ɼ੔Ũ࣮Ƒࢂ|Ŵƣׯӝʞ޵ΫˉۙDܡ̸ρļ܏Ʃ'],
'encodeOffsets': [[
24897,
59181
]]
}
},
{
'type': 'Feature',
'id': 'ETH',
'properties': { 'name': 'Ethiopia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ԜϡӰȢȮǫּWܸ͵ɐ̃όˑΊӯ˼˕̏ω˳Ͽàɵ`ʭҸaȮÐȆƫǽ̴̕ҧ̴Й̛͎ᩨঽۺNᛛᡃફ™ݟףաeɯ˅ַB͹˴ލΙʝΓ֕àȃĬȟwˇT੟܌ב@˹ˢ@ҾѧƘӻࣴϥȚƧʹэЦԧÒ˸ӐҀrŲʰ[ݲʞࢠЊɾĎ΄ήٜԔи΀ࠠƆܠ঒ǫʾظ'],
'encodeOffsets': [[
38816,
15319
]]
}
},
{
'type': 'Feature',
'id': 'FIN',
'properties': { 'name': 'Finland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ūיಀ֓ޡى঎ख़֡ܛݴس΅յఘֻ́ѓޭӟᅡੵໃá๑̯ൃǯӡҞ߿ˠȈࠢСݶАӪނՆ኎࣮֖Ǭē΢ୟЈ˳͜uಒ಻ֲ૩ЪԊɞतѻલ¦ࣘȭߠϊЬ؞ಬ˶઄ͯΡכ'],
'encodeOffsets': [[
29279,
70723
]]
}
},
{
'type': 'Feature',
'id': 'FJI',
'properties': { 'name': 'Fiji' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@̂ʍƓѭԳŗҩļąτ͖̀ϤĻȼƐ'],
['@@՛ǯŅ̼оǤˊ°Ӱˀ@ЧՕȷ'],
['@@é­@ШǨžĽЗ']
],
'encodeOffsets': [
[[
182655,
-17756
]],
[[
183669,
-17204
]],
[[
-184235,
-16897
]]
]
}
},
{
'type': 'Feature',
'id': 'FLK',
'properties': { 'name': 'Falkland Islands' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@৘Ԍ܎ȿԌʹڦϙʥ̋ଋʥϙ̌܋ϙпϚ'],
'encodeOffsets': [[
-62668,
-53094
]]
}
},
{
'type': 'Feature',
'id': 'FRA',
'properties': { 'name': 'France' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ˣ٭ϡǠș֢ǜ̺ը͎Ɯܛ'],
['@@הЅќà݀ϥȊñʎjЈɗெƷыֹŃ׳ɱƝϣü‚ɇؙҽ]ϟВƀ˾ρ“ʁʚ̿̅ʯɐٱҖŃĩηݿӅစɬ௧˗ĩԑঅʼnिϞ̧ǹ໹Ϣͯ͜ѢԎdžူࢁࢤإю౹͒čؖઠǾථɏˇॎߌέዠپʨێܾǞŪ̑ϸ_ϸ͵']
],
'encodeOffsets': [
[[
9790,
43165
]],
[[
3675,
51589
]]
]
}
},
{
'type': 'Feature',
'id': 'GAB',
'properties': { 'name': 'Gabon' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ࡹࡔ։ۚԙࢄ‚˨ǾˎȲؔǜخ˴¶௢SOৠЌÆԞőӼňľ¯ÓνɼѡشèȾǗεঃЊӹĞٿŁ֑ʳЇݏ–҅Иãϋ֥Ĺ˽Ɂ̈́֋ٕҩ'],
'encodeOffsets': [[
11361,
-4074
]]
}
},
{
'type': 'Feature',
'id': 'GBR',
'properties': { 'name': 'United Kingdom' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@҉ֽًǦԱ[ǦҊǥ҈۴–ࣔԳ'],
['@@࣋ࣧࡦŘऄIɕۅݯݩࢄÃäĕݠ঱ֺƇԬढ़ʈͧৰDžķ՝ѓʗͲѣݱѯ૳Rෝɱϻǒ։ϿޥĪם͍ҁǘ௼ࢨݪǺOBಽƔʃͰ࢜ʺҡҐdžռఢ÷D@ŮӤ֛Ԯ_\\৵ƨȧɬ̨ϒˡɴҍЇ·߶щє̨ࢆٶھڤá০ì']
],
'encodeOffsets': [
[[
-5797,
55864
]],
[[
-3077,
60043
]]
]
}
},
{
'type': 'Feature',
'id': 'GEO',
'properties': { 'name': 'Georgia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ųάȿִӟ̲ҭĬ̯ʴĺIJ܄ƝఆƋଦЕƦƻԚƂ޶ǭʴ·Նșɓřвғŗıҏºصʎȵƍଢ଼ſ߳Юࣅ¡'],
'encodeOffsets': [[
42552,
42533
]]
}
},
{
'type': 'Feature',
'id': 'GHA',
'properties': { 'name': 'Ghana' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@೉ӯҳ˽ݳʑݡʆœͨηܤɖैΠ۸ɟ஢ŗنrӊฤ¢ϊÕ˔ƊϴáÕʿΖџC؍Ąڍɂ̫ȅݳäйɢՓȈ̍'],
'encodeOffsets': [[
1086,
6072
]]
}
},
{
'type': 'Feature',
'id': 'GIN',
'properties': { 'name': 'Guinea' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ʃtǡͷʁJǏǴÈͶΗԨɕħǵmɳ³V̮Ƈɘ‚ʔǻΜɹ̜ڥDțǁɵoƝǷīɹ҅σρӼ͛͢ɋŊȿǖħϊūȂʓƐώЦʮeɖƘȄDƄŎï˨ĢĖd˶МU؀ȱȄlÚĤҜáŨ´¶̭ƆBɖŒƔƒɸɇάãɲǺ˖ŒȬŠǚuȈȁĴɳΆΙǣɏ˙ǴĊŀį«ʡʲʍǗÝå˷Ș΍Ⱥڧ̷ĵăśÞNj·νƃA'],
'encodeOffsets': [[
-8641,
7871
]]
}
},
{
'type': 'Feature',
'id': 'GMB',
'properties': { 'name': 'Gambia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ņόࣶzȎȦˊ`ͨȷʼIˢƚǞʏεȋιdέǰ̷ȗƭQȫŝއl'],
'encodeOffsets': [[
-17245,
13468
]]
}
},
{
'type': 'Feature',
'id': 'GNB',
'properties': { 'name': 'Guinea Bissau' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@҅ΘΝÈȕʀLŸʯǴÁǶѼƌ˦ɦĨ༈•c˵ġĕð˧ƃōȃCɕƗʭfύХ'],
'encodeOffsets': [[
-15493,
11306
]]
}
},
{
'type': 'Feature',
'id': 'GNQ',
'properties': { 'name': 'Equatorial Guinea' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƿŴ़̀െmPয়௡T˳µ'],
'encodeOffsets': [[
9721,
1035
]]
}
},
{
'type': 'Feature',
'id': 'GRC',
'properties': { 'name': 'Greece' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Ҡ˱ٺ¶شÑqƣҜĶĿʛ௃íTƒਁǎƺΦ'],
['@@ʹՁȥĥԟ|ѫĀৱɓ׌ҿяƋҳAѻўƿȁȊԅрЁ̓ǿҴϯжʑ^ӅޥɠʜѕՓĕ͈ݏ֏Yۍμ̿ڦƧ֒͝ϮљӐÉʆϸТ¼˚˘Ũjɚռö͌ȀҖgƒƦdž„ت{ڨɲע̉ކĀVмЦɝ']
],
'encodeOffsets': [
[[
24269,
36562
]],
[[
27243,
42560
]]
]
}
},
{
'type': 'Feature',
'id': 'GRL',
'properties': { 'name': 'Greenland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ᬜԆ᱒›ੴ̴ᲈĄ䀦Ŀ㉊ڗ༅͕ộ™⭏ćшƫᲐĠᡚ́࿈ʴۦ̝इӧᒞ̺✘͚ᠼNjҾΫ⃝ױӃȕ᧑ơወ¡ছؕگկ€ध৚շಽ“൧ˇ༂ѽȢ܋࣍ýઞܡህÑঈ΁˟̑இŽ୥E੆֩\\Ϗပΐћɣଌȿ઼ԣ͈ڱກlj٫͖ਣӘ˼֭উѵᕖ•୆¯ᖯܵᗿڏឧ́ओIࢅ͓ୟࢱᅵכׅ“૧ȷ஽ȝܛԱ[כыտോڧͺٿϗ۝љࠍஅ½఍ۈဿLࠁҢ֕ࠐฝਲэոŗݮ୓ޢ̢ئ֗̒ࠪচొ̺ͨΘǬڀॡ̕қůݯţਏ˜Éְ͢҂ެ\\႔ɟ෿Քݩ˾࠷ş۫ȼम޴ԝ̺ڗ׈ৡࢼ੯͚XΚᖷӮᄻÖᖟ‘Ꮕ×ইˌวՈᕂ˄ၚ¬≹ɖ቉΄Ś͜ẊИᶎИ̪͘ᗗ̠ܺͰ᯲ז௢ĚΓϘጲɜᣚƂᣖRࣺʽᕺҨፘ̽୺áპ˙ፅҐŘή'],
'encodeOffsets': [[
-47886,
84612
]]
}
},
{
'type': 'Feature',
'id': 'GTM',
'properties': { 'name': 'Guatemala' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ћƦԻfϩǖҍΌrʖĮȠšƾКۆ઄Ft˸Ƌ¾ġǺ̵Ț̹ˬϜDBӂ޸BަUOڗßॅʤ@˚ƱòŰʘŃϥ͍ЉɻÏljâǑǧɇȟ½¬ıƿġ˽Ƀ}ŭ'],
'encodeOffsets': [[
-92257,
14065
]]
}
},
{
'type': 'Feature',
'id': 'GUF',
'properties': { 'name': 'French Guiana' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@͉͑ГÑŗʀȉ–ʹɩνǦɈΪòϤƢή͛ӸáֺѪܠ˸ğؤȥࢸۿƔ·ӻޑʳأ'],
'encodeOffsets': [[
-53817,
2565
]]
}
},
{
'type': 'Feature',
'id': 'GUY',
'properties': { 'name': 'Guyana' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ր̯Դյzџ̈́o҈Чͪ̇Ƈݱԛɕ°ȣƹџϊ؏ːAŎӃԢܳȱ‰ҫî˙ɡϟƥ˅—ġǑЭ¦ԫЀÓϴɋьƆܐɸ̐ȕϸ˿ŶŊτțȘѩ™ْ֩ɬɲiϲԬƊȾƾ˽̸ô̬ږӲ'],
'encodeOffsets': [[
-61192,
8568
]]
}
},
{
'type': 'Feature',
'id': 'HND',
'properties': { 'name': 'Honduras' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ơˀʭòÐʹŗĞǣÒσij‹ŔʩƈǷǚʛìǨɈáǒÐNJЊɼϦ͎ĔȂƨʊ\\þ垦ϸùϲv˒ĢİĦˎ©ȪÉɘnǖòϨśƄkʲƿʐį̏Źɜɳ˽jśŕ̇ŋɃAȅŃǙœƛźĕ{ŇȩăRaǥ̉ɳƹıđĽʛǞǹɣǫPȟqlЭūQĿȓʽ“'],
'encodeOffsets': [[
-89412,
13297
]]
}
},
{
'type': 'Feature',
'id': 'HRV',
'properties': { 'name': 'Croatia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ȳ͗ˊʇ͓̓ϝȆׇ[ܟƔϽmǻǧ̝ȖǫΑЪϽǼʹϮ̽͌ȃ͆Ηݔ͇ġƛ߃̶ӣ̢ޑʠ۹ؤǞØϥΞe˲եƄʱγʝˮn̆Šbג…Ƹƚ˸ƍͤgGɼ̈ĒĈͺڞɠˊĻؼέۜlj̼Ų'],
'encodeOffsets': [[
19282,
47011
]]
}
},
{
'type': 'Feature',
'id': 'HTI',
'properties': { 'name': 'Haiti' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ԣ™ܰƁôқÝ͑ȱƙɎʥiɫ֏ƜЅÍԡÔϽƿ҉ʾö˔ޜśيã̢ȈϧθP͎ՋžȌɶ'],
'encodeOffsets': [[
-74946,
20394
]]
}
},
{
'type': 'Feature',
'id': 'HUN',
'properties': { 'name': 'Hungary' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˨ըǍǼӂDÜ΄ђɋ̲ğ۸ļäǚͮ~ЦžĜÃЂŀȠȢˠ¼࣒ʭǴĒҲɭÎɣԡǭЉ֫ԕ֭کǁԽš١ə̻űۛNJػήˉļǍ˴ƗV'],
'encodeOffsets': [[
16592,
47977
]]
}
},
{
'type': 'Feature',
'id': 'IDN',
'properties': { 'name': 'Indonesia' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Λe૝ך޴ǒѴʭ̎ʭ»ɩ'],
['@@ܙȁijĶø˸ΰԢࠨͬĐǓfʫշع'],
['@@̢ɣԲèȼΥॿǛ׉őҍP̀ӚҤPɤ̖'],
['@@ūұ౅ʅૣľE̬ښǪՂʥ֔Üݬ̮'],
['@@ྔċȂΌ༘З̪կీƵਐӿय़͋ऍ͸ݻwࢍØ޻ưঅ͎؝ČΓŁ໕ΌƣΰޑØּߤ৶·ڴ͡ΒÛŘ̗'],
['@@ѝֱćنƬ̠Ǭ˴ȒʗCЏ'],
['@@̿˥ׅƸǏΰࡘ¢Ⱦˣ'],
['@@̨ٝۿΌۯìӃÅׇˆȦҦਠ”ऎʕ'],
['@@ɼയ࢈ԉ۰ࢼ८ԔݜBܘ̉خ̛ࣘLJbᩑbᩑݟې࡟ǜȷʇ੡}ΦۂՈɺɕࣲЕ۸࿃܆ۗêృަʛУ͑óȏ̮GκٛЮ̢ࣞ״gëɠ௵DͩԄݥƺΡдଈȰњ˜ഘ·Ƃ̹'],
['@@ڭ࠭كlj߱ǐඓ¥ܽŧţٍݪݛҒϠ༪˸çϯλŪιӯ͙݉ߒ੿Ƶ˿ݲॻQտ҅ʙ̐͡Мی࠙͗ȻɶŊ͖؅ӲØࠌ֕ʭîও”றՓũίʚʌޜŽ߸ΛPʻֺΎվŤښф౎ǮΎ܎ذپʛ੖śॴ–ࠨ؎Ʀȉ'],
['@@©ܽџĈŷԝΌѷɽĵ͹Ւʟ੺ǚڤ˨̨ÔҝӸóĀ΃'],
['@@सާহį˫ֵšݿַ߱u࠷͕౻ŭ̚ॕϙͫԤ׳´лːৃ̟̩Оս¯ۗĬŹૺнɺЕܘŝ݀ĮުԂ֐Ɩָ֗ӅըǠ՜ÑӪъЖôߒɽۆǶњୠ͔̈̆क़ॲ@ܰƙӍݷآߓơϭ'],
['@@छkۻ۰અۊέԚٍۄзؾٕ୴۪݅ʙܠ̳ڀݵՊѭܘمҺࢗऒóђզ‘ಢNjݔࠓٮ֫ҪΓߔࣙࡢ_ۺֹӠ۳٘ϥͳۉӖ̞̅sƜו̊ҵؠõФՏɁ਱‘ಟ']
],
'encodeOffsets': [
[[
123613,
-10485
]],
[[
127423,
-10383
]],
[[
120730,
-8289
]],
[[
125854,
-8288
]],
[[
111231,
-6940
]],
[[
137959,
-6363
]],
[[
130304,
-3542
]],
[[
133603,
-3168
]],
[[
137363,
-1179
]],
[[
128247,
1454
]],
[[
131777,
1160
]],
[[
120705,
1872
]],
[[
108358,
-5992
]]
]
}
},
{
'type': 'Feature',
'id': 'IND',
'properties': { 'name': 'India' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ࣚটďۅͮїѕ׽ŒɾएࠜՑ୞חՑϟ͛޻ࠀͅߊЭરһସʼnӜёٮāৠȝ۪bĪͪŋՖÞβԠǮìڋlǙކ͉Ոƀ܀Çۈ|ÐԪ΁ˎڴŀވشॸ՘۶ȷ״ΞЀԹ˳Λ࣠űÜ͇̍Ʒèԫ׷Ʋછׅ~ӓҩ۵§ХϏۗځȒࢇȏ˹ĚΣгȥѵ೰ɵEƍ՝ҡѦʸӎϖ¶ϰ܆ӝƜީ]ߝŚóאБ¤ڕζ֭̓؆ѻԿ̻ȅ̩Ԭɣƛԑ̆كžەţֱ̫Zਛǩ´ك҃ӻ௃֡ळ঩كՋ࠷ջCϭлȹݳ̝Ͻ«ʥٙǪધ®ۡΣߙI෗ѣ¡ϣٙʰˣދʃ˱֯͵ʍߑ޸ϳ୴͑ࡒ̍Јѿ߰ȻੂơՀޅ଼Α࿀ʣ੾HৰǍ޾௣ԉףĶ઱৲И̤ʝͤড܊֖֔ᇜCǗܞҽюĩ٨ջϘऒࢢঊÙ࢞ࢢՄ࡞ࠄࡈ_״ܒӠڳд֪݂̇̕Ьβ౤ȱपŰߺ۸'],
'encodeOffsets': [[
79706,
36346
]]
}
},
{
'type': 'Feature',
'id': 'IRL',
'properties': { 'name': 'Ireland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƒ׷ًݣ๯ӹ஑Ŷڼ࢚ѭࡢତڄٌϼǦ҇ǥ҉Բ\\ٌǥ'],
'encodeOffsets': [[
-6346,
55161
]]
}
},
{
'type': 'Feature',
'id': 'IRN',
'properties': { 'name': 'Iran' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@݈njװӔ֚{τƾװýघэڤğ।ݓظ‰òۻ΁਷ɱؑκŭΫҡˠڡàՓِƙæեݿݿжѵ͸ԓߦυx݉ДƋêϯ௉ѡ̓উཌྷʪࣷȖेŊΧਐЕƪ٣ƭࡑНਇ˦ࡑ٦߳ʈ֗ߘا૪ҍƋՕ˦̻͝ҭѴS҂ˍ@Ɛ،ѝٔ਍Ң׉ߜȜپц̂ÙӬտʨխ৊ҟڨǐʼʿ६ּʈƄͅъϯ־ő̤~রئ̀Øʞʙ́гԼѱȾ¦ˈإߖǩ׎у஠ƟಾɞĄȞ'],
'encodeOffsets': [[
55216,
38092
]]
}
},
{
'type': 'Feature',
'id': 'IRQ',
'properties': { 'name': 'Iraq' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@րʧÚӫх́țٽ׊ߛ਎ҡўٓƏ؋ˎ@TҁҮѳӿ¤֟ê؝߭༟äᛍၖఫךৡɪ͹৾ᇶ࢔͆৬āؘҢȺјԾΰž঎Ň̐ɉЖƚծ৉'],
'encodeOffsets': [[
46511,
36842
]]
}
},
{
'type': 'Feature',
'id': 'ISL',
'properties': { 'name': 'Iceland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@șիॊֵથٙᝓֹܣƵૉŮᚑˈࠠψᆧЪ๪ǎ—ʘᄋȜ֨նౠŰಸ֭౨Ҝ੒ʃൌ҄ආÑ'],
'encodeOffsets': [[
-14856,
68051
]]
}
},
{
'type': 'Feature',
'id': 'ISR',
'properties': { 'name': 'Israel' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƥ˅̣Ŝǫ֓ɂĥɋř—ɛЄŖp͛нഉց෾ʔˢ˶ɞϼǠيŤɆzVˬCþƦɤ\\`·ŕŵhM'],
'encodeOffsets': [[
36578,
33495
]]
}
},
{
'type': 'Feature',
'id': 'ITA',
'properties': { 'name': 'Italy' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@̟ڋŲʹǭѝٝ̈́ёĞ୩ѐŞќজûࡪĠْò'],
['@@Ԍ׭ş૕ϣÂ΁˫͇ɞ‘২ȓӒҨ¥рʼ'],
['@@ரɏĝЯȬΧڝŪہ̗²зĻʇˠё߀чцۛदڱچLȲȃɽǗݪ̥ؠʩܜѫĔƿƽ̛үϼܳƐΝի؈̷ıѫΗ¹҅ܛΕÝHʲǢҊǼǶ͝ӤʱшΑŀʛδգƴεͶثÆٿϜޑմ֯ӜʿࠪйĮہˤϯŕӝϵΓÕĪθҕńɏٲ̆ʰʙ̀”ʂβǵМ¢Ҽ˶ƢƃА€ǼͺتĿψƚâΆԘšĮdžࠨƤȊ̉']
],
'encodeOffsets': [
[[
15893,
39149
]],
[[
9432,
42200
]],
[[
12674,
47890
]]
]
}
},
{
'type': 'Feature',
'id': 'JAM',
'properties': { 'name': 'Jamaica' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@֢÷ҀȫƔɯןeʭƗҹƊӑ̪ĶȔΜÎȒƒ'],
'encodeOffsets': [[
-79431,
18935
]]
}
},
{
'type': 'Feature',
'id': 'JOR',
'properties': { 'name': 'Jordan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ʀˆपͫ࿪ࣆͺ৽Džų၅у࠸࠿ˣƛƑ˭ٙřȩ̡εʵधƆƒŨоഊo͜Ůʚ@Ԥ'],
'encodeOffsets': [[
36399,
33172
]]
}
},
{
'type': 'Feature',
'id': 'JPN',
'properties': { 'name': 'Japan' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ņ˽ҿԕΉːљțɝӭշʈRЊҬԆӌīΊΜؠǹ'],
['@@́ڡƤсѩף੹Ѓ๏½ணॡ͔֡“غษȃষЃঝe࡞أ֗෗իΝН͜ȶݶՏʒͿ־ߐʶѲՈࡌѢ؞ָာʤ࣎ǣࢠ๺֔Б௾ࡀӌ͜ՈਈƟा΢ՎࣀƸҞୗ}ڻޥࡍbࢁ'],
['@@נǵרΤȈहఝɯ݁࠱೓ָқँण]ř࠴д٨࣌²ʖ୐ʜټন࢓٤˯']
],
'encodeOffsets': [
[[
137870,
34969
]],
[[
144360,
38034
]],
[[
147365,
45235
]]
]
}
},
{
'type': 'Feature',
'id': 'KAZ',
'properties': { 'name': 'Kazakhstan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ӕƹ્דο׹̹KɱЊ੫‚ǡێХNÚࡆ৓ؘ෷ßডũߣݶۋ͆ಥ׼ƽðᓗӹᶽљ£יچ֧ɼॕǩχ˧±ȲȶΖDž̊অ˺ϛݮҩɆ…˜ࠊāŽؘ܎ƎܼűƲࠎƭԲ࠿£܍ȴঃσ޵ǭяƌĐўՙ֘دw܉֬ӞِʕǢڢऊࡺӣŀؘჄࣴಾtᇢ׉঺ͻࢼΠ೰j੺ѥʔʠ୼—ɂЊഷ׀߮Цƿɮ߮ɔ؅ֺϬ˼Ḯ̈ШȺᑆ̴ݰΒຢǹ˄ࢉ࢚Ȳઆ˹éҝ߮´ᑌߎ̭ˁ੶٭ሠᒑ҄ѰୄӛீɎҪƯКӟטNjΨΥ઎ŒѾԣٕ֓ۥÿ¡ࡅұϝဟˢ؅ຑїȇဗͱݲลֻɓäӏԭŬу̠ఝĖඃx̧ġ஥ΞӉǧŽӹ൩̂փşȉρ'],
'encodeOffsets': [[
72666,
43281
]]
}
},
{
'type': 'Feature',
'id': 'KEN',
'properties': { 'name': 'Kenya' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ӾۙיͱȹΕ̿Õšףˑ͹Ǐ֑ͷ˥஻ࡀËӤᵁႌƙĢSࢺʊ;а֌̨ؔσ॰įтЉ׎ԬԈ֬ֆѨƗ@ҽ˺ˡג@੠܋ˈSȠxȄī֖ßʞΔގΚͺ˳ָAܽ॑Xᵣ'],
'encodeOffsets': [[
41977,
-878
]]
}
},
{
'type': 'Feature',
'id': 'KGZ',
'properties': { 'name': 'Kyrgyzstan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ȊςքŠ൪́žӺӊǨ஦Ν̨Ģ඄wఞĕф̟Ԯūşȏ೛ғ̙ͭઁıͅ՛ࢷŒׇǏߣЇŜȟʇȓཟŵਡ˘࣫ÝĂӜࣴƕ̮ʸٖĉ੾؂঻ѸױȽإ͂۶ծʟĊ'],
'encodeOffsets': [[
72666,
43281
]]
}
},
{
'type': 'Feature',
'id': 'KHM',
'properties': { 'name': 'Cambodia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@΁Ѭыࢄȣ২ՠۨઘdž߀ťۚ͡Ϟׄݖ̱Ȝ֕Ļ৕ඳ٧τԙࢥÓܫͷ۱Ū'],
'encodeOffsets': [[
105982,
10888
]]
}
},
{
'type': 'Feature',
'id': 'KOR',
'properties': { 'name': 'South Korea' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ܨযȺխPॷ̓ҥݽljڥΏݳïĥҚƼـχ࢔ذƚֻܘÂúϒ‡͞Ϝצ¢ΨÈŨȮ'],
'encodeOffsets': [[
131431,
39539
]]
}
},
{
'type': 'Feature',
'id': 'CS-KM',
'properties': { 'name': 'Kosovo' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@›ǣŃPĘ́ȩĐdzɦƾȌȪÒŜ˨ư²Ţşƾ¿ŌƅƒŸǎƻŢLĥȳijij„×ȉӹŻ'],
'encodeOffsets': [[
21261,
43062
]]
}
},
{
'type': 'Feature',
'id': 'KWT',
'properties': { 'name': 'Kuwait' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ǭχõȓ˔هשuȽАݟĆ؞߮֠é'],
'encodeOffsets': [[
49126,
30696
]]
}
},
{
'type': 'Feature',
'id': 'LAO',
'properties': { 'name': 'Laos' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˚Ϝœ܆ڹܸ¿ٕࠦھٍÎǛ̉ӯyʣƨࢯԅoݬȸࢮ֧ž³ԎηʸǴ̲ܐնøȡ҄wŵ०ѦŬӮڏϖޅਚO͚ܹ՝ɗʉ̟৔ԉۦ঳Ռ݋َ׏ɄץƵ࠿ݕ̲ϝ׃ۙ͢'],
'encodeOffsets': [[
107745,
14616
]]
}
},
{
'type': 'Feature',
'id': 'LBN',
'properties': { 'name': 'Lebanon' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɣ[ýƥ˫D̘ۄмעfˆϘ§Ɛͣқ̓ȷҟ'],
'encodeOffsets': [[
36681,
34077
]]
}
},
{
'type': 'Feature',
'id': 'LBR',
'properties': { 'name': 'Liberia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɗQࡽАޅٖ܏Ң֣ըȪː¬ʔϜҘϺϺǶnɖĨΘԧÇ͵ǐdzʂIǢ͸ʄsŸʓĎНǽύʖɱˊÇΤΙ~ͧăĿÝە'],
'encodeOffsets': [[
-7897,
4470
]]
}
},
{
'type': 'Feature',
'id': 'LBY',
'properties': { 'name': 'Libya' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ק̷ҿҤ೧βρՄڑϸϻƷ̗ҶήӹؔͬΘñՈńҠÓϦƨۈ¯϶˕ݐШȜðΠėΒ־͔ʶːЦʌ´٦দ́ΜðۮƓ૞ϓЀݛݮǍஆΙࣆйЦɔЖϮț٠˂Ф؄ЀׂŘ଒ǣ˺ϑ̺Iˌƛ࠴ıȲˣ̣ЕżΫɏԯʦڱ@Ჳ@ᶵ@့ॱGYΙ‧ྐ‧ྒࡓҟ'],
'encodeOffsets': [[
15208,
23412
]]
}
},
{
'type': 'Feature',
'id': 'LKA',
'properties': { 'name': 'Sri Lanka' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ų࢓ΙʇܵȓЍڜƫீϠ഼׆ұϺסО࢓'],
'encodeOffsets': [[
83751,
7704
]]
}
},
{
'type': 'Feature',
'id': 'LSO',
'properties': { 'name': 'Lesotho' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̆ʩʳУƛ˛ҳſƹˍ̛ċؿ٨҄ՐҖ͢ϼǠξʵ'],
'encodeOffsets': [[
29674,
-29650
]]
}
},
{
'type': 'Feature',
'id': 'LTU',
'properties': { 'name': 'Lithuania' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ãɊĚɲχƄࢡƨDZ۸२ʴඬÁࠜĊŞǩ҂Ã߲СĀϓۏˏșӃ࣯̓߻NȫʶљĜ'],
'encodeOffsets': [[
23277,
55632
]]
}
},
{
'type': 'Feature',
'id': 'LUX',
'properties': { 'name': 'Luxembourg' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ǘȏ³ρʍiȉòĞҼɖŽ'],
'encodeOffsets': [[
6189,
51332
]]
}
},
{
'type': 'Feature',
'id': 'LVA',
'properties': { 'name': 'Latvia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@†نЮՆߊ˼ڜعڪhNJ٤ܐƪςĻܢ̷ۚCКȕîС˒ӷ͕ࣗԛƙ߱ТҁÄŝǪࠛĉණÂ१ʳ'],
'encodeOffsets': [[
21562,
57376
]]
}
},
{
'type': 'Feature',
'id': 'MAR',
'properties': { 'name': 'Morocco' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ԒΥߜÎࢊȃκU͂՟ºԝ̄ࢱɜDZƷ͛ષƙϝ̵ӡñ—ثঙ͍ͩсۍɥ࠻ŷഫاRহŷ@@@p҉Ա˓ȑϡ@̥Ŋ۹ě˛ٻʿÕЁ੕ୟ࣡ˣୋ΅ϗĵ̡ቅãaD ϶͒ɮ˞ѪÃ˶̀פҴՖ˲ƊɞӬp҂̤Բ̪֔Ւ࡬f\\ц͔ްĢڎָтɠۮۮȿਸ਼͊ܢŔѶդ֨ࡈϦخΐ֘࢈˄ԪؤI'],
'encodeOffsets': [[
-5318,
36614
]]
}
},
{
'type': 'Feature',
'id': 'MDA',
'properties': { 'name': 'Moldova' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ȨŮ֒ĊؤʽΊϞɥÑ˵̪ƏŨΗ̊ɇÏűƾčɝ×ӷ|ĉŜǫãÒƭɱˍƥ˽ɁĝƯϦĘΪςӝԂˉΠʹʠʯĈ'],
'encodeOffsets': [[
27259,
49379
]]
}
},
{
'type': 'Feature',
'id': 'MDG',
'properties': { 'name': 'Madagascar' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɠΥȺ։Ɗঢ়ɒϽĉЗƩʙ˷ӰǁʝLjثõΥɵȗ¿܅ͧওб୅ԯཧ͑ୟϛইہȣܻΡӛɊڙ̜ɳѺÇݘ̑ڠù؂Ʈ؄ϰƢD˪Дِø՚șЈǃՌãޠ̊ҺŔՒмŒҶǤ̶Ʋτ\\ӐӎۖԮʦцŗάΦĵҪ׎fԐ˦ϔ̊ί'],
'encodeOffsets': [[
50733,
-12769
]]
}
},
{
'type': 'Feature',
'id': 'MEX',
'properties': { 'name': 'Mexico' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@͙݅ƥ؁Õ૷ąЧƤқʺЧǚٳ֎سȞӏ͢бࢾɝΐΙ݄ɾٚĎؼưՊƠՖ΂ȨӬè۸Ƣʖ֬ɚࢶȚݔ‡ԚîȬDZ…ЙҋԁȥԝƸƥűγɁٽɅɎǭcǃY̝ԓƳIJķPŭޥV޷AAӁϛC̺˫̶șĢǹƌ½s˷ઃEЙۅŢƽĭȟqʕ्ࣞџ˘ۇɖҷÓګ́чĉץɜؿDŽ޹ϬؿŠ्ϸ۱ВɃɤҹº࡯ˈΓϦࣗӊсՌȧЦ˪ĈđʈȖɔJ̄˱Ϙùͮ˭ъ݋࠴ࡋڀУԼܝ΄ƷȴŸԲѓȞӹФȽהҍæӣѸϿФ™ˀҍو̓٠^͔؇ͬ˫™ӑɴƇͿƔЕĆف̀΋خׁƒȡŸÓŎ˽Ƭ\\ǜթʮɇǴ̕Նё˨ޯʠρɸϿ²ѷКƒͶϡ̨ϑqƭΝ̱ƫJɛԞջӎ؃РїɈ„ؚŵҖЏʺֿϒŏŇɃɖԭȰӷӦÖÚΊ³̸̼ŽϜ٩׶ӱɶ̱Հ̷վϳڦͿݲॖÞ੪ĞÿǑ౔СኀףဪPژ@DΌผ@̪̕јˇԀσ˨ѭȾҥѢʩۤʥՊڒۊhפͱфֹ̄ӯӸӏȂחɾЃپʹ׮ȁ͞|'],
'encodeOffsets': [[
-99471,
26491
]]
}
},
{
'type': 'Feature',
'id': 'MKD',
'properties': { 'name': 'Macedonia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ńOœǤӺżȊ˺¶ϴbтˏÒ։DžƒƑƥҕh͋ǿջõΑȴšήń˸'],
'encodeOffsets': [[
21085,
42860
]]
}
},
{
'type': 'Feature',
'id': 'MLI',
'properties': { 'name': 'Mali' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˰ƶƘӶˊpזɻӄǖ͖ÇŴȈ⁚^ȈךƣļЛ⋈Л⋆౾dᬼᆳᬼᆳȨϿԺʉ϶ƋV՗ठĈFካҟ֗íԭݛƃ଩ï̳̗ա՟IȿLjҥš޻ΑDžʿٳϕŗɍΙǡНŔɱȳūֻڙۡp˳ɭΣÆӥ΋ůȝŁŽάʍĥơhƷʕ٭PɷŴʼnùʱʎ¬ʢĿİdzĉ˚Ǥɐ΅ΚijɴȇȂǙvȫş˕őɱǹΫäɷɈƓ„ɕőƅAµ̮žʾí̽͘ʀǓӔԺ'],
'encodeOffsets': [[
-12462,
14968
]]
}
},
{
'type': 'Feature',
'id': 'MMR',
'properties': { 'name': 'Myanmar' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ӫηץ›ϥࣥΟƳО݅ՔؗΈօ̭ܵ̃ƹȪу֖ڙĪҷ_ϵ͠ދң޵Сࡷăذʴ٠˯ӼæࣸͽѤ˛৔Ʊਗ਼εۢօуॕ׳ҽöԳȠ̂ਪǫ޾څॺļ̢ӭņ׭ۆÅڰ̊ŵj׾дȦęΤȐ˺Ž࢈ڂȑϐۘ¨ЦҪ۶}Ӕજ׆׸ƱçԬ̎ƸÛ͈ӮÚˮӵξȧ|ٟ“ۙߓۭijঽࢲƔȨޛՐǍʓۣز́ζƷ؞ʔ~΍܏յdẕӓȗ'],
'encodeOffsets': [[
101933,
20672
]]
}
},
{
'type': 'Feature',
'id': 'MNE',
'properties': { 'name': 'Montenegro' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÁǀηЯÊˋǫÞɽ˞εǖĢƜŬҦ˚ȜƾüɠƟŬśˠě͌ǧçïƽȋɧó'],
'encodeOffsets': [[
20277,
43521
]]
}
},
{
'type': 'Feature',
'id': 'MNG',
'properties': { 'name': 'Mongolia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ࢮƢ྄ܤ౬Єܴʳ࢚]֘Ͻ࠼‰ௐɁࠈגͿӶࢊࢊश΍ނįনɍLjؿஜΛߐƺਫ਼ŌࡆōࠖЗԚѕެT੒Ƌޜȼૈƒ௸פԌĝѰ˭ৌêХهק࠽ɐ΅ӈńࠤŽ٦̴ڬˏހוğ̗ڏĦ௟ŏןʅ؝։౱͙࠷ѽࡹǞҿúѳէˎ͓ƌˣי˯׽҇গ̑ఽ‹ഫ̇এҋϋʾ৭AఓԜࠥŰૣśჃȊऑmӱԀϣޠԱĢ৩ԼଅŞুƞ̡θ͖চׅڲன̀۷Ѿəז'],
'encodeOffsets': [[
89858,
50481
]]
}
},
{
'type': 'Feature',
'id': 'MOZ',
'properties': { 'name': 'Mozambique' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@لæ৞ʁɖńגt̚ʦԌaऀ͜ڞӤƊϕ“࠷ľ݅ಿƨЫʣ׷͙׍՗Եޏ͉ृСॉ͓ࣕƵוׯ΋ȗí׳ЌُǔӱZʣƪ¦{ࠗƋϷȤƝűΓΗ̗ۗ˳য়ҕρ̳ðΟɊÉíѵّRïϊůϖí̠ƬपɓװГஂࢬ॔ɜ؆ŶúĨӶƉʞ˜غǐ׌E੠ѥ˒ЏÔǹȼϳǰ۫gÅ̼āװᢈۘӚЕɴüͨɅ¸͵ǯϷØסոԱʲ׌ζǰíઊΙ؈̣˖̅]ɽદɾٔ'],
'encodeOffsets': [[
35390,
-11796
]]
}
},
{
'type': 'Feature',
'id': 'MRT',
'properties': { 'name': 'Mauritania' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@և־ԗؤ֍ɞГʚҵUЧǽйð˽ˏïҐɺаŀߊģࠨĵкČмɑЎѵδǾˬᾔMǃ௎ȴќ߀øᒸ᪂©F౞Ṗ᎟౽cМ⋅М⋇ƤĻȇי⁙]ųȇ͕ÈӃǕוɼˉoƗӵ˯Ƶ'],
'encodeOffsets': [[
-12462,
14968
]]
}
},
{
'type': 'Feature',
'id': 'MWI',
'properties': { 'name': 'Malawi' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɽٓɾથ̆^̤˕Κ؇îઉεǯʱ׋շԲ×עǰϸ·ͶͧɆɳûәЖѵɔʮޮ˄̈LJۢǚڼƞɪɉ܌Ѕϐ࠘ƽǜɵ˶Ϲɾଡ'],
'encodeOffsets': [[
35390,
-11796
]]
}
},
{
'type': 'Feature',
'id': 'MYS',
'properties': { 'name': 'Malaysia' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@àћֈĶ˞ΈȘýӸԓΜ֛¶֣ęϡĆ˿Öӻ̒ɵͤݑe˳׫Éߑخ঵ښįђӟ֚ś̡۠ҜĠؔȃΤƤƮۈρ'],
['@@أ˹ܯƚॱ@̅ॗ͓̇љୟۅǵߑɾЕóөщ՛Òէǟַӆƕ֘؜˽ٮǀǜ܆άǂ৖Ǻ׾ڔЬՐϦѥǮ˺В¸՜œа٪אшڀͼHќыžιֆɻ۬ʧÑ֝͡¥ƮЧ']
],
'encodeOffsets': [
[[
103502,
6354
]],
[[
121466,
4586
]]
]
}
},
{
'type': 'Feature',
'id': 'NAM',
'properties': { 'name': 'Namibia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@رٌؖ͡ȃࠊȷ،˯ಒm৒ŅҞ͛Όѡۜѳ৘ǽՆۃࠐ»٢КdžԊƞհ}ԄϝŶÐ₮˜׌Е᎞ş໴΂یȒհµͨȍPéӁȍʭC՛͍ͣΎಕ̍سƒ{Ჽࠣ‡BយA᷋ݣѕҋÕՇDŽϗÔƗάͩɰГг'],
'encodeOffsets': [[
16738,
-29262
]]
}
},
{
'type': 'Feature',
'id': 'NCL',
'properties': { 'name': 'New Caledonia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ېԵѨϭ͉ȫҥɪ׹ϚէѼ։פś˶β[Һ˹φ˷ˎɻ'],
'encodeOffsets': [[
169759,
-21585
]]
}
},
{
'type': 'Feature',
'id': 'NER',
'properties': { 'name': 'Niger' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nּॹȐОҿպœϤâТբ̴̘ପðݜƄîԮҠ֘Eኬஈϒᝪ࿸᮪ཾ೨αӀңר̸ȸಯ̾ɓ`ˋΔ˽ǻί͕ၻ«ધੳߋγૉΔ̵CեբmčЃʁµˋƻm֩ंȟ’ځҷٱʔҍ¸ʏşӯ~ӷΧѓq৯ѢЉȵѓb̿͆ࡅ̼ࣗıɕǻşӗʋ͹ÍݣٗӚ̟E˭ʗ'],
'encodeOffsets': [[
2207,
12227
]]
}
},
{
'type': 'Feature',
'id': 'NGA',
'properties': { 'name': 'Nigeria' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ࢍ̡͉¬͓ȉڥl҇Ղˡ؊שֆكYݍB¶തs՘ǂՊʶʴТԴėɨǔ͸ȍӾ˪ÎݤʌͺŠӘɖǼࣘIJࡆ̻̀ͅєaЊȶৰѡєrӸΨӰ}ʐŠҎ·ٲʓڂҸȠ‘֪ँƼnͬͯğƱ«˧۽ٱɛՙšѧDZȉǝי҅ΉŽыȋ͹ÿΓֽ˱ҽΊ͇aԃӭʑQЍ߷ɍש'],
'encodeOffsets': [[
8705,
4887
]]
}
},
{
'type': 'Feature',
'id': 'NIC',
'properties': { 'name': 'Nicaragua' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̃ˆϽͺȁ˲Ο˄сϜĤžƒŵÚÒʾ”ŀȔŬRkЮȠrǬOǺɤʜǝĒľƺIJ̊ɴbǦĄQňȪĖ|ƜŹǚ›ȆńɄB̈ŌŜŖ˾iïă§ȉĐ̫ȗ˹ěͷυ®ɏtϙŹĉýΫÌɛǣɋ ɩźƏȩDZʛÈƓǦˉêȕʼnօɞųŇ'],
'encodeOffsets': [[
-87769,
11355
]]
}
},
{
'type': 'Feature',
'id': 'NLD',
'properties': { 'name': 'Netherlands' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ۦyǀ˳Ƚޓɇ́ԍ@ƘࢡҥȞՏπީǩ؛âѠɲ݀ఆଲΘ'],
'encodeOffsets': [[
6220,
54795
]]
}
},
{
'type': 'Feature',
'id': 'NOR',
'properties': { 'name': 'Norway' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@᥆ؙઍɣऄՅෛ͵ڵû΢לઃͰಫ˵Ы؝ߟωࣗȮ઱¥णѼԉɝԷ“ūփནƊɝҵ߭Hևױ࠿झಫ஁̨˹̇ͫ࠯bձ޿¾૟՞э˥ধֻۧυӛ֝Ԫဋঁ૫ȟ୏є̛ࣚˇ኶ޞզᕠ۶ဌࢂ໤୦፺ྴඦلᘼ੊ᇎπ൪­౮ۢ໖›ພǘ'],
['@@ም΅๝Ȝ׆ɐԕˎეǚͮ̿ொȍ'],
['@@᪖صᑟͥұأ݅ǁЍۡৣᅵԢނ̘ఽʐ࿕܂ٷڄᘎ̜Ң̋஦\\͊˼௾ˆ੖̋'],
['@@࿮̏ఝҍ᝱ı៙ƖƫɴஹdँϬᣴɼ௞ȫࡘʤᑺȽ']
],
'encodeOffsets': [
[[
28842,
72894
]],
[[
25318,
79723
]],
[[
18690,
81615
]],
[[
26059,
82338
]]
]
}
},
{
'type': 'Feature',
'id': 'NPL',
'properties': { 'name': 'Nepal' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÝαŌՕĩͩ۩aয়Ȟ٭ĂӛђଷŊયҼ߉Ю߿͆͜޼ՒϠΒȪڪʳࡔշҾť˰ЕٶǓۀσौȕঔć'],
'encodeOffsets': [[
90236,
28546
]]
}
},
{
'type': 'Feature',
'id': 'NZL',
'properties': { 'name': 'New Zealand' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Ȓ΋װ;ʐΡBΝ̹ϳչإїͷ̴З٭Yܗ̓ɣջӋࡗڇϓнʇޝlխˢࣱÐƗ̰Ҍذ੐ࠦժǀ׾͌ܜѰԎѦώظ͈ɆŰҶלϴȆΧ'],
['@@،ࢫlָϜɯŲًڰ˛֨ãӒ͎юĭȯݗʯӫٛjɡʭþαūƻͅҏзֹ٭ͯƟɘΕŨӞ۔˟ҨࣛͲz̦؈̌ƚ٨Ÿլͻ֜vƪБΎڋݔΗת̸àҚұٺɑʂݡ']
],
'encodeOffsets': [
[[
177173,
-41901
]],
[[
178803,
-37024
]]
]
}
},
{
'type': 'Feature',
'id': 'OMN',
'properties': { 'name': 'Oman' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ֹ̻ϟªǩȧƉэļ֗ÿĻϯFԽ̻ćХȓǯԹP͡ɃJͻПɷҩĂ֗˳ϱ³˝טٿ൴ᠾ࠾֖၂ϩתv͸ʔΐFΆϞǒƩŞèմіHϖֵҸ̧؞ŋӼƳϜӕɨ˧̞ŃCȉ̩ԃƅɽΟˏ'],
['@@ʼnƳDž˺ʔ˺ľñā΍']
],
'encodeOffsets': [
[[
60274,
21621
]],
[[
57745,
26518
]]
]
}
},
{
'type': 'Feature',
'id': 'PAK',
'properties': { 'name': 'Pakistan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@تϻʞ٥൨ͻ߹۷ऩůౣȲЫα̖݁̈֩ڴгܑӟ`׳ࠃࡇՃ࡝࢝ࢡউÚऑࢡռϗĪ٧ҾэǘܝᇛD֓֕؛Ɇʣ؀٭٘໻ǁിeஃŝ̈́ঊொѢéϰГƌw݊ߥφͷԔеѶඨѕࡀŲԈŅǞȂגóદĈ܎ҶӈشCĠɼٞŌ̴ý͢ʀ±ԌΦԖ՘Ɇͥ֊ߜɴ̢•͒мΜĩмȣΤӬμࣘǮ८ĮѐƺӨĦ'],
'encodeOffsets': [[
76962,
38025
]]
}
},
{
'type': 'Feature',
'id': 'PAN',
'properties': { 'name': 'Panama' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˫ʎǵҒȺɢɅÎƿˤлɸοÁǝ̇ͻɁǽ‡ĉǩВҗɯŅŧŭϷ©ơԈŋƛˡ¸ǝ͸·ÈɓİέCǻĩŶªǖìǠƲŲIJǩŲK͸͘ö̠̝iDZͲ›ĀæɴȵЮÔΨɄԜǞ˺ʤҬ·‹ĉҶ…ώơ˜ʧ̈́ɵĹūȜӵǁʟ˓ÒŅС'],
'encodeOffsets': [[
-79750,
7398
]]
}
},
{
'type': 'Feature',
'id': 'PER',
'properties': { 'name': 'Peru' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɥљћɋࡅӘñΈရࡊທࣾ٫԰ΏۜƐʎ܅ાࠣ༄ߍီ΅Ϥ˃ؤٷպױͼ˖ϒПߢʼךڢՎIJΓʇȧx̭ΎâͼĝΚщӆΌDŽ֤ԦܶৠͨࣸࢠʾմŝٔɢĂ֒ЉˎЅϴɏӶࢣضĿҨɞ̤ƣԎð٠Ͻթࡣʤoрҁݳ œųۍlj॥ֱÓϻɉ̇ČғԕʍBΡɛƵΔݳҲԝDZί֐µ͆҃ݐuېӸÇ౧ϢĩӄƠܪടǷ˵£ןg܍͟пƮ̵ȕ˯β۹Ջ࣡'],
'encodeOffsets': [[
-71260,
-18001
]]
}
},
{
'type': 'Feature',
'id': 'PHL',
'properties': { 'name': 'Philippines' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@Đ֏ºҽ˹ޑ̫ࡨϽэˎإʉϿ঩Ӧɿ؊ʰЎՑЈˁΑЃثҵƑʖ͢۾ՌʀҜ̈́̔ϝٔɰƎϒרv·ٰڼЋêхÐ̱'],
['@@̟ˡˁՍ˃ʝԫ׈ǦɤɂɾĢԸҨ¸Ɖ֣جߺāߡ'],
['@@ૣߕЬט؈԰Ԏ׊Ѱ࠲Ʈۅևҧѳֿ'],
['@@Ԏʹ՘BgΗϳΣՕʧ‡ϸÒєŽА'],
['@@ʀभ٫ɞj˭ȶԯЍȋ•עʧªƁԘӶãY͈ԣٜ߮mɴ̻'],
['@@ɟܩέоѓ٘ܚ‰̡̈'],
['@@ԮʉʶɖüɇƍΑ˼׻ɛۥӷ˥ƁڳȊڝѾġϊIJਾүăҙ˜ȫēϯٻЮ̵Ѵɍ̯՗ԊރůлȆ¨ΎˀɊʣȘŇ̡бӚűμߨͺˡĔೄ˜ހԘA']
],
'encodeOffsets': [
[[
129410,
8617
]],
[[
126959,
10526
]],
[[
121349,
9540
]],
[[
124809,
12178
]],
[[
128515,
12455
]],
[[
124445,
13384
]],
[[
124234,
18949
]]
]
}
},
{
'type': 'Feature',
'id': 'PNG',
'properties': { 'name': 'Papua New Guinea' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ɽčε͔ρՔǷ٘ŜĆĜʡʬȏРՑЈ˵ŝɽ'],
['@@ѯçƃɽҟȱћȟѽBۏʔӑɺêʺݬũҠàŶЖŦrĆѽӐÜʂ˼Ҹ̚ġӸԌfǜƏgү˯ԡ'],
['@@ݤտղࢻӖ„‘ω٬ƛʥǁࣀΝġʏ֋ÏȷɔܟĦࡕŴٷ՚ӉҦѧ݀ભπ܇ʇԡˣńإڇ˿һƖࢅ–aᩒaᩒภ׃༊ӓׄїҴхŸӵඔԱȲѽޛěȄ֕'],
['@@ʿɡǁӸȝ͘ϝ˞ӍΪ؇ʚɺȮҒɻ˸ȁΜȫʹΛ͊ˏĶѧ']
],
'encodeOffsets': [
[[
159622,
-6983
]],
[[
155631,
-5609
]],
[[
150725,
-7565
]],
[[
156816,
-4607
]]
]
}
},
{
'type': 'Feature',
'id': 'POL',
'properties': { 'name': 'Poland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@·՜à̂ȹ̧҆̚ɺɤȝђָʘ಼ϴ੒˴࠼ƙÚȱ߸Yਚħ໶^њěȬʵšωɸ͋KͯԋǡʸϳfϏцܻěɽзįރۥɒϗǿ¶ߙ͔؁šЇĒӹǵч̖Ήŕ³¼ϭаر¼ăˀֻĦűɑҗǨÀɴػòЉ˔'],
'encodeOffsets': [[
15378,
52334
]]
}
},
{
'type': 'Feature',
'id': 'PRI',
'properties': { 'name': 'Puerto Rico' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@јõưǕɋɃمLӫ‡·άŢŬیK'],
'encodeOffsets': [[
-67873,
18960
]]
}
},
{
'type': 'Feature',
'id': 'PRK',
'properties': { 'name': 'North Korea' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Şƥ͉ºη˵ʣ˷Ž׽ѣȅƫƧ̓ʝ֓ƏηɥηįġͰƋӈσŧȭΧÇץ¡͝ϛϑˆÁùСdžĵƿʙé‡ǀɑüɥƆɰφȤİõƶɆҒÅƎөĠЇɤۄբऒҌ־׮Ўˁܪ‹ſѺಚβͰҼժӹ'],
'encodeOffsets': [[
133776,
43413
]]
}
},
{
'type': 'Feature',
'id': 'PRT',
'properties': { 'name': 'Portugal' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̦Ɉ΄ŬɂЫӺDƞłӪ‡ɼуϱɩYٽƍū‘Їγçʹԋɵտ̄ʡřɫ̵̿ê˥ͷɓѷŠџġŸڂÿԬϓþȩ͈äռͰ̨ÒͼǪԎkΤǙ̠™˲'],
'encodeOffsets': [[
-9251,
42886
]]
}
},
{
'type': 'Feature',
'id': 'PRY',
'properties': { 'name': 'Paraguay' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ͦ৖tҌЖ݌าʔޮ]޴їbʵʞҳÇଛࢲLJ΄ǐ֦ɩǀʣþޓİ͓̼›̀ƌ̢ƳAҥŕӻǑӛƍݏށ١ړƇऻŸࡑɮࠢ౨ťψࡽ͢ਅبۉŸ໵ൌ'],
'encodeOffsets': [[
-64189,
-22783
]]
}
},
{
'type': 'Feature',
'id': 'QAT',
'properties': { 'name': 'Qatar' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ÇؔɨѲɰĜʬˁdӯǽӳɵÑʫǖ'],
'encodeOffsets': [[
52030,
25349
]]
}
},
{
'type': 'Feature',
'id': 'ROU',
'properties': { 'name': 'Romania' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@δǶԴġՠGϸȳ˺źبĄɄȠΠ@ʰćʺʟˊΟӞԁ€ρėΩưϥϒƹЂƊϠƟpɏПǹʯĀɻ৥ӳĖ̪ؑফțзɋ௽¬٥ƀ͙ÕʍΊƵƦȚƘȷŀ˃ȋөʔßΌԟȢĥˌҕͤڪǂԖ֮Њ֬ԢǮ'],
'encodeOffsets': [[
23256,
49032
]]
}
},
{
'type': 'Feature',
'id': 'RUS',
'properties': { 'name': 'Russia' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ࡌ๫కˤԫ்ࠌࡳyוُԒսٱƻ۸Ĥࠊħ࣢Țٌš૴ӯࠜôରަϮͭϴϐŠɔ։̆ߵuࠟΎࡑ'],
['@@໵]ਙĨȒτ୊˚ࢢƧψƃęɱäɉ'],
['@@֦Ƚțؐᗸű࿨޻࠭λ൛ēsࠑͳǩ޽~ٗ̊ૣʖȉθ࡟Ǝॗʼnҗ̎Ǽ̸৓ȥϚЃӉΣ@„Ꮪٛᔺ࠳ïԷ'],
['@@ः©ƭˌੲΖ@ַ'],
['@@ળ»@ָň–܈E௒ʉïŗࡽȩ'],
['@@ౡMႣĤƧ¬ߘͪੀþஞ͏ĸə'],
['@@ॿͩഉø༛ͨȪ˖༨ųᑔɗ'],
['@@ډرᶽzඃȣမղҎ׀૎ǂᕞ™ᴬѽ'],
['@@ӹóᩣŊɟώູɦūҒ࡮Ƕ…Ҟသܒޙĺ፨݆ɩϢሤѺ᪪բ᫠ǀ෴̸࿐Ŋאͩ֟ʻᲗз᢭Џᤙߝఫࠍ೉߱Ǡۥྎۏ'],
['@@ɨгސȲឤYቈЧڬ̿ȽѧङʝᕅүفʟਬşఖɃݴDŽєաτɔഊƂ᧪ƑȴϽ↲ů´ٜᄼƥഄLബѷϮ՝ӹΙੌڋ೔Ϳ߸ࢦഖϙ෢ɦྼʵؤʀൖş؅ޮૐζ䢀ձܐӿᔲٛ₎DŽာƑ۪΍Ĺؙਜʇ૴Ǥ๰vཚǑཪĢะݛਪˎڷ՞ϐώᧆɻფºᝂБ୲ν@”MKઇσઝÖݶҁԄەϲɧĮΏɑɝ༧Ǿ᚝مݛĭ౽ן௛ԧ̱ϣய׊ᔗڇϣ̸ߵΫ૱Ř˓ց৙߽Šͻड़ȋő௣ޭ‹Ϋ۱Δα฽ѕ̅ॡభȳʥ࡟ே޳ׂ̳έ௬ҵለИ୘܀ԆªϾರȊຊ੒คࡺຢڢڮஆ৷ëԍۗᒉइۍਖᓧ˷ᑃටۚԧሙɕಝēÔ؊ಯŶ਩ЭᢵƠ᪏ʟᨩ࿛ủጝ೚ŁаՃࠄȅ՞оईÃௌऍ†܍ځ࠽ë্ϛഉ్௓˯ׇଙ঑ଇॻթӹ૩ӱՉYՇФૻؙſ˩ŝƦKѐіxŦ঴ɛܚܞ̒৶Ʃ֢ࠈ˾ऄ͚̮Ѵݲ൷ʛܯͧ౧Dͻ߄হװหˎ̵ࠖ̉Ԫ̿βԯࡐ̲݇షʢ૛uਯƱۛлҤȥXҩұˑݷࢻRσஅՍ৙̈́োéѯˮԋĞ௷ףેƑޛȻੑƌޫSԙіࠕИࡅŎ੝ŋߏƹ஛ΜLJـধɎށİवΎࢉࢉ΀ӵࠇב௏ɂ࠻Š֗Ͼ࢙^ܳʴ౫Ѓྃܣࢭơ͡çѽԤઍőΧΦחnjЙӠҩưிɍୃӜ҃ѯሟᒒੵٮ̮˂ᑋߍ߭³êҞઅ˺࢙ȱ˃ࢊມǺݯΑᑅ̳Чȹḭ̇ϫ˻؆ֹ߭ɓǀɭ߭ХസֿɁЉ୻˜ʓʟ੹Ѧ೯iࢻΟহͼᇡ׊ಽsჃࣳĿؗࡹӤڡउʖǡӝُ܊֫ذx՚֗ďѝѐƋϥӽ߿Ƒ࠳ࢁކߕĉ֣ࣼফԇ͹ƝɇωÌֿԚɿ†ՅȚʳΈ޵ǮԙƁƥƼଥЖఅƌ܃ƞĹıੱ܂य़̈́ܩӴؒƈۤ۰ҹͪఌ΄uȀݯƉ‚ώѠɼ߼ÖƄ˪ȅҪ΀ѰWʚఉ˚ӭUԯЀ١ƃ੩̐lǒ̗θڟ¤éʼɀǞ՝ӈࢋąʭ¦Ƀȑ̽”ȷ՞ȟ˨NJĀڴ‡͞Ȁʍɢ֥ƪ¼Ʋ΁ƴՃվǸɨĉЂࠑȨѱijšȼࢭɂˑӸíТЙȖάˊʝ޶װӞųƤक़ҬࢡЎᅢ੶ޮӠ͂єగּΆնݳش֢ܜ঍ग़ޢي౿֔ŬךڶüොͶࢀ̈൦ԕᘨȧṺो٤ЋÆ֓टѳ൏ɡ⏷ٔ؟Ńൌ؛ÂϵÆ࡫ઌʯڂɓňРԑΰ՘͈᎖Թ۾Ȳ֣؜ዦࠖޢµ޸̋Ӫ׀۫ԄЪԊءԶᚠˑӔҹ੡ĻNҳڌ˽ಜǼȶ՚ჶАᰪܞي£ࠣԙਬĕ׼˼༾xఢΐफ़ԏॖ֌ࢡӢѪˤ២ʫ୒ʿᴾॣ֚ѰࡡѺ{ǴৣĈˢЌ҅ټ}ː༄ݾրކزǒᕮɛǬұߕڽԺˋ˒חȏଵऒԧέ֕࿫஝०ŭ̢ͮऎɎɞжܮЎөӌϼֈࣿêȫҲڢࡈણۆຒ֦șװмnѴүͧ߷࣐Ƶϥ؄ඤͦლ¬༈ӏݛ۪ċࣆศǞ፾™ᆘŌہѮংւॲx࿎иᕠŐ˪ɲᕂþیȋሴҀ໲aɶδߤΨጤΈ෸˗ଥȷበŹ'],
['@@ⵙ͕ໞીےĦقÃᒈӋʟͿ'],
['@@૽ōݱÛśƏঙƑ࣫ȦӐʾል~࿞ƶ౨XǢɧӘȬߊƐఞǿ͗ŷ'],
['@@ᆳĿᚉʎඅ͎٣׾଩ǔᔆָᆎȎ࿌чኬ߻ȹݯ']
],
'encodeOffsets': [
[[
147096,
51966
]],
[[
23277,
55632
]],
[[
-179214,
68183
]],
[[
184320,
72533
]],
[[
-182982,
72595
]],
[[
147051,
74970
]],
[[
154350,
76887
]],
[[
148569,
77377
]],
[[
58917,
72418
]],
[[
109538,
78822
]],
[[
107598,
80187
]],
[[
52364,
82481
]],
[[
102339,
80775
]]
]
}
},
{
'type': 'Feature',
'id': 'RWA',
'properties': { 'name': 'Rwanda' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ͬӃµӵʏŁѿÆʱӍԛàþҠŘތԄʎɺȰďԈʸ'],
'encodeOffsets': [[
31150,
-1161
]]
}
},
{
'type': 'Feature',
'id': 'ESH',
'properties': { 'name': 'Western Sahara' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@oҊŸ@@ÉeNjEౝ᪁ª‚ᒷ޿÷ȳћDŽ்ᾓNǽ˫˜΢bCቆäĶ̢ΆϘˤୌୠ࣢Ђ੖ˀÖ˜ټۺĜ̦ʼnϢ@˔ȒԲ‚'],
'encodeOffsets': [[
-9005,
27772
]]
}
},
{
'type': 'Feature',
'id': 'SAU',
'properties': { 'name': 'Saudi Arabia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ʼnΪʩʨÝͲѡ̞҃۴ʁۆׇ׀ϑƐ֋ߠīא–ӾӕञϿ͠ґǨˡӖ°ȎɹѦʕȊ͝زԟڴѓ־лIžҦœ̌ļͲनƅζʶȪ̢ٚŚƒˮˤƜ࠷ࡀ၆фdžŴৢɩబיᛎၕ༠ãݠąȾЏתv͠ܥаȓƠִ̏Λ¼΍ċ˩ł˯ʎɽŐ˟ŲȵʬǕɶÒdž͍Žș࡙͐ᡌщǞDzϪש֕၁ᠽ࠽ᝑ͑޷ϙ׻ࢥϹƕɁˬ͏§߻ĎƷČॹmɫùΉɔɝЭĒΟρˋ'],
'encodeOffsets': [[
43807,
16741
]]
}
},
{
'type': 'Feature',
'id': 'SDN',
'properties': { 'name': 'Sudan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@śhdмĵ̀џͨĵ؄ĶبϳÌÍȇԍ©Ȭʕðԍңңл؅џđ۹Ӫͅǥđʓџǃ…ǥ࠵@řǦ؃†̡ƝɳîѝӬƟɲ؃ŗɱϵɏݣ˿ǁʳğå ̅ʎÃʼƌΔE΄ӛՀĩάZȰ̱ʜUӦǭ͖̍µĎ̰ɒΖħΐˢʴǫȞɞ԰ϨئܦÏ¥ ZΚॲH@း@Ὂ@ῼ@˔ࠗȁƳŪࡻ্̰͌ȷҠ̳ыӑأƏ˅ʳĉ֑α௿ĚͳƅܟͿࠟԓзέٛč΃Љɽʝ࢟Dij'],
'encodeOffsets': [[
34779,
9692
]]
}
},
{
'type': 'Feature',
'id': 'SDS',
'properties': { 'name': 'South Sudan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Xٽűʯѿq˷ӏԨÑюХƨͳϦșӼࣳ֫օԫԇԫϭסFگȟՕȊ΋ɭ݉֐ȥάҵDZϱÆɣƕϗĸԗۚƉˊعͪɅԌΕζ֟ѬS˘ҡͼ֯͠ʴĠ̀ǂɐݤɲ϶؄ŘƠɱўӫɴí̢ƞ؄…Śǥ࠶@†ǦѠDŽĒʔ͆ǦۺөѠĒм؆ҤҤïԎȫʖԎªÎȈϴËĵاĶ؃ѠͧĶ˿cлŜg'],
'encodeOffsets': [[
34779,
9692
]]
}
},
{
'type': 'Feature',
'id': 'SEN',
'properties': { 'name': 'Senegal' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@΍ٺн̚φDŽРמȦќ˾ːкïШǾҶVДʙ֎ɝԘأֈֽžԹǔӓ̾ɿî͗ʽŧ³қâÙģȃk׿ȲЛV༇–ɥħ˥‚ѻƋƏ٢ވkȬŞƮR̸ȘήǯκcζȌǝʐˡƙʻJͧȸˉ_ȍȥࣵy'],
'encodeOffsets': [[
-17114,
13922
]]
}
},
{
'type': 'Feature',
'id': 'SLB',
'properties': { 'name': 'Solomon Islands' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ɾ˿חN͉ԬԈȯǜ‰'],
['@@͝mԧĎǫżÀͮֈƁ˜ǭƎə'],
['@@ųƹحܰǫԈ˺@̠ڥʹЗ'],
['@@–ǛڅΦҟ̠̿˪ŰĐϮȫېϭȢˉ'],
['@@Ǘ³οȒ·Ί¨ƖԈΡͰ˛']
],
'encodeOffsets': [
[[
166010,
-10734
]],
[[
164713,
-10109
]],
[[
165561,
-9830
]],
[[
163713,
-8537
]],
[[
161320,
-7524
]]
]
}
},
{
'type': 'Feature',
'id': 'SLE',
'properties': { 'name': 'Sierra Leone' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɧØ؁ͺѩ҈Ƨ̬Ĺت҆τĬɺƞǸɶpȜǂڦCɺ̛ǼˁʓƈɗṶɴ´ϹϹϛҗ«ʓȩˏ'],
'encodeOffsets': [[
-11713,
6949
]]
}
},
{
'type': 'Feature',
'id': 'SLV',
'properties': { 'name': 'El Salvador' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ġȡӡ^̡Ą΍ǘұÀʃǶ~Ů˾ɄǀĢ«IJȠ¾ʜëǸǙʪƇŒœτĴǤÑŘĝÏͳ'],
'encodeOffsets': [[
-89900,
13706
]]
}
},
{
'type': 'Feature',
'id': '-99',
'properties': { 'name': 'Somaliland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ϛԩד۫۹Mᩧা͍̜̳К̳ҨǾ̖̲҈˚ƹǒΏϜΗкGߊɌࣴĴ݌ʼиÆ̚ƶӎˆKaE΋Aࡑ@ѫ'],
'encodeOffsets': [[
50113,
9679
]]
}
},
{
'type': 'Feature',
'id': 'SOM',
'properties': { 'name': 'Somalia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ѼĎЊ˾͈FpɵýӧHѳǯ̣ʁࣥЙयԱ੷ܝ௷ܓवধ଩ࡁڹష࠯޳ٕँৱȗѷȍȣӽۚWᵤܾ॒ɰˆբfݠפબšᛜᡄה۬ϜԪ@ѬBࡒFΌLbːhϰŰ'],
'encodeOffsets': [[
50923,
11857
]]
}
},
{
'type': 'Feature',
'id': 'SRB',
'properties': { 'name': 'Republic of Serbia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ԡȡà΋Ӫʓ˄ȌȸĿșƗƶƥȷȏø̫Тγ͋ʿƗˋĞijƑšϳa˹µƒØĴĴĦȴšKǍƼƑ ŋƆƽÀšŠƯ±ś˧ȩÑèð͋Ǩ˟ĜūŜɟƠȢšŬЄЛ͔ɀτ̥Ë͔́ˉʈȱ͘٢ɚԾ™ҖͣĦˋ'],
'encodeOffsets': [[
21376,
46507
]]
}
},
{
'type': 'Feature',
'id': 'SUR',
'properties': { 'name': 'Suriname' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@৔ǙĞưڶÔࣚɥѩܟâֹͤӽƥίóϩɉΛӓDzЇđ͹öčʏƘǗ÷ǡҙèԡܴōӄˏBωؐƺѠ¯ȤԜɖƈݲ'],
'encodeOffsets': [[
-58518,
6117
]]
}
},
{
'type': 'Feature',
'id': 'SVK',
'properties': { 'name': 'Slovakia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@´»ΊŖш̕ӺǶЈđ؂Ţߚ͓ɷɓǏ͹dzđ࣑ʮ˟»ȟȡЁĿěÄХŽͭ}ãǙ۷Ļ̱ĠёɌċ̆äńŢȂόa˺ĔxþLj¢ÆȒȖ˜žưʢD'],
'encodeOffsets': [[
19306,
50685
]]
}
},
{
'type': 'Feature',
'id': 'SVN',
'properties': { 'name': 'Slovenia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ۜÝъȐܾtLjƘƘUǎ˳ڝɟć͹̇đHɻͣh˷ƎƷƙב†ȈúȫΨĞа'],
'encodeOffsets': [[
14138,
47626
]]
}
},
{
'type': 'Feature',
'id': 'SWE',
'properties': { 'name': 'Sweden' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ࠁוƀԥ೹ڭྱܡؓஃײףߦүޗॅ࢑ȝ͍තӋ޿৳ĆӅڗঃˉߐ۳॔ٓஐφӜּۨ˦ন՝ю½ૠղ߀࠰ä̧ͬ˺ಬஂࡀञֈײ߮GɞҶཔƉŬքԸ”૪Щ಼ֱv಑˴͛ฃʃ'],
'encodeOffsets': [[
22716,
67302
]]
}
},
{
'type': 'Feature',
'id': 'SWZ',
'properties': { 'name': 'Swaziland' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ǡύӭěԅҖS̄ɰ̀ĂʔʐÒшƵŰϕðω'],
'encodeOffsets': [[
32842,
-27375
]]
}
},
{
'type': 'Feature',
'id': 'SYR',
'properties': { 'name': 'Syria' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@࿩ࣅऩͬgNŖŶ_ΈȸҠҜ̈́Əͤϗ¨ÿٞȶΌɤȀɤȀ°Ҹ˞Ǐऎɺ҂ƿۖFॴ̀Ґaक़žїԽҡȹĂؗͅ৫ᇵ࢓'],
'encodeOffsets': [[
39724,
34180
]]
}
},
{
'type': 'Feature',
'id': 'TCD',
'properties': { 'name': 'Chad' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĎЄաnDզΓ̶δ૊ੴߌ¬ન͖ၼǼΰΓ˾_ˌ̽ɔȷರࡔҠ…ྑ…ྏ¦ ܥÐϧإɝԯǬȝˡʳĨΏɑΕč̯̎¶Ǯ͕Vӥ̲ʛYȯՏƛэͽ؉ࣹ߅ϳ߹¾ʁûĊ̏ѫ̋Σ͟੓͏ȽȐƓhƹɍۛÙƀɪ˅ׄşΐλƜӷӪǼІϦċʂÐҸSқކŒ֐É֐ͭՠ'],
'encodeOffsets': [[
14844,
13169
]]
}
},
{
'type': 'Feature',
'id': 'TGO',
'properties': { 'name': 'Togo' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ڱdzȇ̎ɡՔãкȆݴɁ̬ăڎD؎ΕѠÖˀ݂kŅѵʲʝ̈̋ŽЭǜǥኝȺׅ'],
'encodeOffsets': [[
1911,
6290
]]
}
},
{
'type': 'Feature',
'id': 'THA',
'properties': { 'name': 'Thailand' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ݭϬܗeŬڈ݉Káऋґ௯˙ݏÌ؋ն΀ދưܭҶӓԚĭѤѧ˝·ևĵßќۇςƣƭͧ͒ƝжҁӄПЌƏӳǃҲĠԾʚ߬ТࡸҤ޶͟ތ`϶ĩҸ֕ښȩф̄ƺ̮ܶ·ֆՓؘН݆ΠƴϦࣦצœӬθӔȘθʷ´ԍ֨ȷࢭpݫࢰԆʤƧӰzǜَ̊ÍٖڽÀࠥںܷ›܅˙ϛ޿ŦગDž՟ۧȤ১'],
'encodeOffsets': [[
105047,
12480
]]
}
},
{
'type': 'Feature',
'id': 'TJK',
'properties': { 'name': 'Tajikistan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̭ʷࣳƖāӛ࣬Þਢ˗འŶɈާˠĐԜȓ‡͛ŴӍࡿBׁØԻϕύĉ̉ǯͩˠþ۸ʩ¢ĞʲғȐα̇ė͹Żūԇj˕ϩ˯nj؋ˑʱĺӀࡘǹض؟ȨɔφۮŸЌҬˌբ૲ȜǩϵŤɹΎv'],
'encodeOffsets': [[
72719,
41211
]]
}
},
{
'type': 'Feature',
'id': 'TKM',
'properties': { 'name': 'Turkmenistan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ñۼطŠॣݔڣĠगюׯþσƽ֙|ׯӓ݇NjƻרŪ࢞ٽ˶Ɏֺ֏¸Ȇ۾ߊȵ݈ˎؓԎʉӔڱɋď؛ʿհψ˨ॖǪ֨ɻךڅњ¤ॆ\\Əцܖ̂۾ӦଆѹĜڡ͐ǣࣦžˮƳаࡽ०ׇոЃ࢞Щ૤Ϋwԥʩ€Ѕɤſ̙۽NjǙڥӁʭڏŵǫϟهŏࡩ͈'],
'encodeOffsets': [[
62680,
36506
]]
}
},
{
'type': 'Feature',
'id': 'TLS',
'properties': { 'name': 'East Timor' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@IJȤܢȌז†ˀŀ͆Ľ̯ɫ࢕ο۳ʋeʬďǔ'],
'encodeOffsets': [[
127968,
-9106
]]
}
},
{
'type': 'Feature',
'id': 'TTO',
'properties': { 'name': 'Trinidad and Tobago' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ӚŊǮ‡‘صۭġƯúʒɲiͪ'],
'encodeOffsets': [[
-63160,
11019
]]
}
},
{
'type': 'Feature',
'id': 'TUN',
'properties': { 'name': 'Tunisia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ΩພԭͺQȰۉԄóنԮҶȢۚƃߠǠќࣶͺךĵ}ы܊̲ÒljпЫMϱ̆ȽōܫփхDŽқѤaɄЍ͊ſ³٥Хʋʵˏֽ͓ĘΑïΟЧț'],
'encodeOffsets': [[
9710,
31035
]]
}
},
{
'type': 'Feature',
'id': 'TUR',
'properties': { 'name': 'Turkey' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@஺͗ঐżܤõলѬࣆ¢ߴЭƜ̑ăУزȻͨʕֻʇˀ५ǏʻҠڧЕƙ̏Ɋ঍ňίŽॗŽҏbॳ̿ەEҁǀऍɹ˝ǐ¯ҷɣǿɣǿ̱Ϡ͈͂ԟí۱ȖֿәౣĥڹҊࣟ†ȗΑׇij߻҄ࣻeӽ࠶ؗҰЦٸՓВठߨಒ’Μྀٔŏ৞հ঒ʄർlุף'],
['@@۫ҏ˃Ϻ\\ǦȦĦʺՂХɞࡦ˄ܤőĴ͓ܼ˓Ƶȵি±Ωʷ']
],
'encodeOffsets': [
[[
37800,
42328
]],
[[
27845,
41668
]]
]
}
},
{
'type': 'Feature',
'id': 'TZA',
'properties': { 'name': 'United Republic of Tanzania' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƚġᵂႋÌӣ஼࠿ϱਙ¸Ӊՠ̩~ɓɳԓ¶ʭÇГ̌Ճΐ̰ࠡǿڝӣࣿ͛ԋb̙ʥבsɕŃঢ়ʂكåɽଢ˵ϺǛɶࠗƾӉʨՕƘͯƘΗɈґ੖ӣҺǗӤČѨƯޞΎ ̨̦͜ѬȺǮS˘ǷȐ·ͨʐł¶Ӷͫӄ̎Ķऄ[ႎà'],
'encodeOffsets': [[
34718,
-972
]]
}
},
{
'type': 'Feature',
'id': 'UGA',
'properties': { 'name': 'Uganda' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ः\\̍ĵԇʷȯĐPوȜ͎²ڬǰϸ͎Ѭ͔ɠ˒̘͵Ŗ¼চΌɮՖȉڰȠעEԬϮЊ׍İсτ९̧ؓЯ֋ʉͽTࢹႍß'],
'encodeOffsets': [[
32631,
-1052
]]
}
},
{
'type': 'Feature',
'id': 'UKR',
'properties': { 'name': 'Ukraine' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@̾“ɄȒʮ¥ࢌĆ՞Ӈȿǝêʻڠ£̘ηkǑ੪̏٢Ƅ԰ϿӮVఊ˙XʙͿѯȆҩƃ˩߻Õџɻύڡã֑˕޽«ܣ̻¸ԹЪȭࡨ¼Ǐ̛ँơଛӟұǠȄЂࣽʘƨLjߪ˪ʑȔಯɆË̼ީĻ̷ҧٱةϟƠЁƉϑƺɂĞƦ˾ɲˎÑƮǬäĊśӸ{ɞØƽĎÐŲ̉ɈŧΘ̩ƐÒ˶ϝɦΉŽأʾ֑ĉȧŭΟ@Ƀȟاă˹ŹϷȴ՟HԳĢγǵÍɤұɮǐͺɸɔȀµɑϘބۦиİĜɾхܼДҢɪٲnࡖßबȫڎi͂ŧ̀Ʀɚȝݸ¢ͮąÄцʶȂܞº'],
'encodeOffsets': [[
32549,
53353
]]
}
},
{
'type': 'Feature',
'id': 'URY',
'properties': { 'name': 'Uruguay' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ղĚࡆٯ̺|ࡺ՟ڈҫӠֱχЉɸӇεՇॉұاǚғěޥΰ֫ԟҬÞլǾȈS࠸ɤࡺȾڦ'],
'encodeOffsets': [[
-59008,
-30941
]]
}
},
{
'type': 'Feature',
'id': 'USA',
'properties': { 'name': 'United States of America' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ũƕȽŤ|ɾƓ̨¦ĤƤƎÍǔ¸þÜe͐ƙƬñƌőɊ̍q¯͟ǵˏſ'],
['@@˭ÑƟǮīèQÀĈî̘āɘŹëĵ'],
['@@ĝ҉|Úĸа•'],
['@@­µÓŻˆŃȒ’ɤŚêÃʐ˥'],
['@@ıĉ˱ƴªÖŸĈȘijȝ'],
['@@Ƭңʼƛז½࡬ƅࠂʹڼŊਖɓ˞Tݨʄ߂̧ࠒ͗ں˩ٶˏĈəȢĉ½ĉɦǎĔ¦ȣǜƅɴ@ŬĹĽƫ࢖ЁǶށǚܳʗӹЁҥȁ̍mēĦť˸Ɓɂ@ঊ҆ࡾƀસмfĐ÷ʰƉǒϜƆࠜHޘAˎ͞ŀàࢶ؄ϜƸ౦N໾BĎȺː¦Φž̖Ϣʲٺٚي˨ə֜ƜώʏAଧռӅƢ˝࣋Пࡷ̃ࢱʝѻӿƛȋSѽˤѽΒsė̬ʦȇãʇ֥ƋЗhةƥλ¥ӥ¥۫ʏఀǂʠǃ୳ʥ՗C|ĺʭɷʚǹ׽ؑ٧×Ɏȁª˟ɀǪҍȼƭ^ͅˏ͛ҿڡûʺֲѕ͎įۦljεǴՑևƀׂ˓˜ߛʊÍĖ̃ŠࡁՕدࢇʝցӱнÁэ̱ţ˭इձӁЍЅӽŻׯƪ׍ˬܗώשLεЊঅ֥—͛ȿԡʣŃЯĺƁς͋ȖѻܢϹٞű͢Ǥ֐ɽҦٻ۲͟źࡑϡƭ¦СϼՃȺोŁݗĤٙÍΏſƲɟaͽǴǓLJō̵Ů́ǃ؍€طѺܻĿ؏ȚԹÏۻȝއح࠳γҝБȕϗUׅ¨ЕDŽ˹͝{׭ȂٽʺɽЄȁטӷӐ̃ӰуֺףͲۉgՉڑۣʦѡʪȽҦ˧Ѯӿτїˈ̩̖ป@C΋ڗ@ဩOቿפ౓ТĀǒ੩ĝॕÝƙіխӚϻĴğʌһ¦̝ɪޭĊɉƌĹҢࠁࡊ۩ୠˆȚχˤٯ۴řۆ҃ҞȀۢ…ܜˍ٢͠ߊĸނĺނƱૼˇܘʓ϶ĸǐ௒˷҂ߋȺɜƇې˷ێᛸ@᠂@ࠜ@ᢢ@៚@ᡀ@ᡄ@᭰@ᮞBაAF͔˴J'],
['@@࠽͋ѕɐŽЀބ̘҆Ÿ֐ÉΤʻܫЍ'],
['@@ԧŽսƾԛɮࠦƞښùĂ͑'],
['@@԰DžԾĒڸɛ࠲őéĝُDZٕǾ͋Ʋݍµȧôº̈́'],
['@@؊ϛώnjහ»¹ȕ౾ƛࡨČᄚ˅ྤā٨ʼn૦Ǝౢʧࣲŝ@@MᷱIⷍࠠ{ࠌɵהρݜցࠈҺࡈ˖Ҁѡ֤·ޒϙՂ׽࡮य़ේ՗xՋұЙҥ͂ݍˌʃܺએںҍߎ߯Ä೷rটʌ჉ࢎߩDŽ฽̜୑í࿻ϬৃΨटǯǦ׏ҫÁঁǫ݉˱झdzťӶϚࠚࣀʶɱɂੱҵֵ֑௅ױؚСߏ׿ࣗΗࡁʱȻωಽѡ˅ϿছΫֽÞ޷ɻ࡝˹ۧ˫෹ʉſƘऀϾࠔʸࣆҠਬĨвΈ୘ԊȈǚب̒ƢْђӸॹʫ˓Ơҕ̧շюɧ̝̽м࠿ͳԩBïԄƲ̮ե̚થLJ܁ЀַȬIӈ٩Ϊ͘ӘۆҸ̚њںÖ־ƇڴМ؎ï٘ʼƻϨҹưج͖ԩWࢻǽʯȃڏȄஏĥ௷ȬΛ͸੟Ӧ୾ΘመШ۔@ŕнᄢŽڽԶਕ͌ױр߫ΨଽˈҺѲ๰‚ਗ਼ϦȨФ࡬ЎࠊĪཪώޜÉಐ҄ౚǭ']
],
'encodeOffsets': [
[[
-159275,
19542
]],
[[
-159825,
21140
]],
[[
-160520,
21686
]],
[[
-161436,
21834
]],
[[
-163169,
22510
]],
[[
-97093,
50575
]],
[[
-156678,
58487
]],
[[
-169553,
61348
]],
[[
-175853,
65314
]],
[[
-158789,
72856
]]
]
}
},
{
'type': 'Feature',
'id': 'UZB',
'properties': { 'name': 'Uzbekistan' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@xԦૣά࢝ЪշЄ॥׈Яࡾ˭ƴࣥ͏ǤěڢଅѺ۽ӥܕ́Ɛхॅ[ᶾᓘӺƾïದ׻یͅߤݵঢŪ෸à৔ؗÙࡅЦMǢۍ੬ɲЉ̺Lπ׺૎הӖƺʠĉ۵խئ́ײȾ়ѷ੽؁ٕĊ΍uţɺǪ϶૱țˋաЋҫۭ ɓυؠȧǺصҿࡗهǰҳN'],
'encodeOffsets': [[
68116,
38260
]]
}
},
{
'type': 'Feature',
'id': 'VEN',
'properties': { 'name': 'Venezuela' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@yȣӱĭ˜ϡYѭυӥ͆ڙδÆȌ؈ʻ̒§َਸ਼΀řІ̎ˆ̞ןל_մҵ˧ݮQ࣌ĔӖϕٞĻҼʾXɄਨ¼৖\\܉ʛ˼Їڦ×ِЯƆڧѬn͢ȣڕӱó̫˾̷ȽƽԫƉjϱɫɱّ֪Őʁ̭͍ऱ̽׿Žʏȣڛɀثņƿýϔɑ‘֝ŜՉ܆ï°ǭ׷ʅĭΣΉƏسȝNjʱٷÅҧѼʯ࠺ɟ̧̌Ȅюм…ȊʅʠǛ֒à׼Ȉ˰ƲҎ̓Ơӏĩ؁®ͻęסܢӥńઉăȧ̊ȷê‡ǬĴ̶áͺȃȂŅϮѡÈɸӮĺ׶ʔ̸͘ʌɈрդƖ'],
'encodeOffsets': [[
-73043,
12059
]]
}
},
{
'type': 'Feature',
'id': 'VNM',
'properties': { 'name': 'Vietnam' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@૭ܗ۫ߍȁ׍٠ࢭ޺ળނԱԞګϪ།ŕ๓۫փ१եۇ۫਷ޱ̧ՠʀ֬دӌܬ͸ࢦÔσԚප٨ļ৖ț֖ƶࡀɃצٍאՋ݌ۥ঴৓Ԋʊ̠՞ɘ͙ܺਙPϕކӭڐҊȴڢIࠈĬܒ҄К̿ސƵƃӛАͿࡎɓ'],
'encodeOffsets': [[
110644,
22070
]]
}
},
{
'type': 'Feature',
'id': 'VUT',
'properties': { 'name': 'Vanuatu' },
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ˣō˭ςŒɤՆӗ'],
['@@ƌڱɥŀǩ­ťɴi٢Дʵ']
],
'encodeOffsets': [
[[
171874,
-16861
]],
[[
171119,
-15292
]]
]
}
},
{
'type': 'Feature',
'id': 'PSE',
'properties': { 'name': 'West Bank' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@ԣŭʙЃŕ˜ɜɌŚɁĦǬ̤֔ś'],
'encodeOffsets': [[
36399,
33172
]]
}
},
{
'type': 'Feature',
'id': 'YEM',
'properties': { 'name': 'Yemen' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@؉ɥNjύo˹࠷Οഇϻݩףυ±ʥºӭΑ՗lj۷©ɃµǿɛəÕŻɇеlˍœ׉¨ɓӬzҠƍʜǑتʋΊǚ¤đϨĸNJ™ξςˌđΠɞЮΊɓɬúॺnƸċ߼č͐¨ɂ˫ϺƖ׼ࢦ޸Ϛᝒ͒ڀ൳˞ח'],
'encodeOffsets': [[
54384,
17051
]]
}
},
{
'type': 'Feature',
'id': 'ZAF',
'properties': { 'name': 'South Africa' },
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@ǏŧΣяɻћӇ׻ोࢁףԋًϣ࢛͙ѓ«ŇɷԛŰеDž࣫NJԙĹΏ¬ࡿͩܓƃԱͅϡoΣ̚˳fαϒŸśŏɦLӰ˙֞˔ƴs٤ս޼х܈AF׽તДдͪɯƘΫϘÓՈǃҌÖݤіB᷌ɨűӾߙûԟȈ̏׼ĒрϒЊʨȶДЦȚΠķВɽۂ£՞ȜĐʾƨДҚäʨ͂˪֔ݮغஒؤ΂UОƛ˲Ķ҂ċД஁ɔׯƫऩî̟чƶʏÑāʓɯ̿T̃ԆҕӮĜǢώْQȿؑıۥɑϛֵщ',
'@@νʶϻǟҕ҃͡Տـ٧̜ČƺˎҴƀƜ˜ʴФ̅ʪ'
],
'encodeOffsets': [
[
32278,
-29959
],
[
29674,
-29650
]
]
}
},
{
'type': 'Feature',
'id': 'ZMB',
'properties': { 'name': 'Zambia' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ІϏɊ܋ƝɩǙڻLjۡ˃̇ʭޭѶɓᢇۗĂׯٍřӍͯĹ̛̅ßܵۓҭխ˳o˗ĬऱĠƯÚOêͧȎկ¶ۋȑչԾ֣یžᦶშYí̂Ű̀ƧЀĪТėʺ̂q¶ʽϾrՖûˬϡڨŝԤˆȌѯ٠ş̴ΧΈҥ٠Që࣠ɱƳח͞ɧƬļࡈƬসȉψʈ՚ɤĶ଀ƚͦđΘɇͰƗՖƗӊʧ'],
'encodeOffsets': [[
33546,
-9452
]]
}
},
{
'type': 'Feature',
'id': 'ZWE',
'properties': { 'name': 'Zimbabwe' },
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ҁČ˱ĵНƜ΁VՙϞٯźʙՒC̒έĞ्ई˃ӢǛƮ͓ڤलğ˘ī˴pҮծܶ۔̜àĺ̆ӎͰَŚÆ̻۬hϴǯǺȻАÓѦˑF੟Ǐ׋—عƊʝħӵŵùɛ؅ࢫ॓'],
'encodeOffsets': [[
31941,
-22785
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/xiang_gang_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [{
'type': 'Feature',
'id': '8100',
'properties': {
'name': '香港',
'cp': [
114.2784,
22.3057
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@™@}ScTʟ@cWuJÁ–]„l¦RLj¼BĄà˜ ŽH@TOHCTDDDHDNAT@PEHDDNJLX@BABALHFF@DKHADBBLDHHFBLEJB@GDBBFBADDB@@KFAFBBJJA@BB@@FFDDADFF@FADDDBJC@AFBD@@DDD@DAA@D@DB@DHHBFJBBFEHDFAN@DGDC@DLCBDDCFDlAFBFCBEF@BC@GDAB@FD@DZJ‚X´HĐMja@Ý`p_PCZ@lLnRGSDMFK|a\\Y}­ƒ§™Mën'],
'encodeOffsets': [[
117078,
22678
]]
}
}],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/xin_jiang_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '6528',
'properties': {
'name': '巴音郭楞蒙古自治州',
'cp': [
88.1653,
39.6002
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@˜@ÈÒĊanwŎV„™Ȯ¦ͪŃĢ„ÜōȂçČéƐżLɆóĊ‚ĊaʊŁ±¯²Um»ˌmÈ»V™ʠţWÑůǓ郙ôƑƒğÆīŎī@Ƿ™wô™˺LÞ¯ƨVǪуšĢ™ȘV°wĢŽôk°¯ƒ»΀@Ȃ»ĸŽǔ@΀ƒ͔ôôLɆó̐ÝɜLɲōͪƒƨóŤK@ī@IU܃ÛmȻţǩÝ˹ÛljťǓǫō@Ɲ²¯VçōKͿŁΗÇţ»ƽ™ɅƑLÓŏÅÅɱV@ÝĊU¯ÑĊĭÞLšÞŎJ±̃XȣˌōlƒUÈ¯ŎKÆƅ°™XÑܱnŗġV¯™óaUƒƧUōŁ„Ñ™±„çɲ¥lĉkğ°ƒk¥˜ƒnğţL¯ÝÝUƽĬ΁lķ°@„ō„XÿݯV»ŹLʉÞɱŤĉó°ÝJ™¦ÝKÝ£ţܙÈĉ@ƒxǩUċƑ@ky͓¹™`U²ĉVġ»ğa¯¥ť@ĉ™‚ó@ŻÛÛJƒw¯nó¯ġWƽʩķÝɛwĉĕݼȭÞķō@ó£Å΀ƑŽ¯ôȯÞ¯Ȱ™ÆōèĉXǼó@ݚnºƒĸ„ÞVƜĸȚUʶõˀĵĖɱŎÝĖVࢰӒѢ°˘nϚVˌ™ÈmɼĵŦW¤öʊõʔ@°ÈXVŽ™ènŎȁb¯ǫĉ„±Èğ`ġwōÔğ»mVVŽ„Ý¥ó@™ĸķô@ššbX„ĶmV²²`Þ_˜˜ɴbͪÈ°„ÞWĸÈŌmބškɲŽÈUÆ»n¼ǬVķĸźô¯°n¦ɄǜÈ'],
'encodeOffsets': [[
86986,
44534
]]
}
},
{
'type': 'Feature',
'id': '6532',
'properties': {
'name': '和田地区',
'cp': [
81.167,
36.9855
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƨ¥šèź٨ΘƑᩄbUࢯÞĕɲōĶĕöʿVʵķșUƛƒÝ„ķm¹Þ™ô@È»ĊWŎçšÅ°ȯȰÝ°óƒÆͿĉ»̽çnƒmɱĵƧºóU™™ƽ@±wóL¯°̻L±Æ¯Vƴķb¯VÇ¥ğ²Ǖbk¥ÇKlÅɱġ@у™óK@™ÇaÝXğţxĉČǫķê¯K@уaŹ„ƑKƒ¼¯Vóaónġw™óÞéU™ġbóĉğÇl¹™aUóğKW„Vůn›ÇŋƑ›ķnʇ»óxĉw™çÇ°Åw™°ċ„XŽ™„ób±ƒkÈÇJ—ƒm²ţx@ÒݎšŦǺn„ó¼n°ÇbUÒ±¼XĸĠłƽXmwĉºƒzÈÜmnxmx²ĖmҚbnŽƧêUºĊêÆVóĖóUĉ¼ÅĬƑ°ɆƆŻŚlłÞLš¼nĠƒ¼@ޙšÞź@ŎÞ°VšɄɴжϼِ͈Ŏ„'],
'encodeOffsets': [[
81293,
39764
]]
}
},
{
'type': 'Feature',
'id': '6522',
'properties': {
'name': '哈密地区',
'cp': [
93.7793,
42.9236
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@WnŐÆĶLĢ¦ţºź„lxÅĸƽŚ‚Ʉ—Į˜è@ô²ÞUĔƐńV°¯ĸX¦Ɛm̐bƒ»Ɇa΀šĢ™ƐLˤ™ȘÑnƒІljĸÿn¯ĶaŎ¯ĢĕȘ¯°΂œla¯¥™ǕǔwˤӱlťО̻nŻmɃĕċţUw°WUóƨÅţķ°ýV±óÅǓéʉ¯ƽŁƒéōǖȁÝƏůǕw˹ǫȗǓƧǕVý™é@ĬţLƧôͩ„ɱŎɛK̏ÞɅôóK@²@°ōؚ¼lŦ¯ŰóƜÛlV¼ķ¼ƒ°kȰ™Ű„ĠƒǬ™ŚÝŎmĖ`@ÇÜn„'],
'encodeOffsets': [[
93387,
44539
]]
}
},
{
'type': 'Feature',
'id': '6529',
'properties': {
'name': '阿克苏地区',
'cp': [
82.9797,
41.0229
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@VƚxˌŎÞŎƒ°n„ȂÒ°²VĊ¯VğƾˍǬƨÞÞKÈÞĊVźôɆÞĢèŌôWČ²ŤVÞĸʶbl‚¯ôn_VÆĸlmÞnVź_ĸ¼Ȯmǖ„šéĸW°°„ĸJ„kʠ¼Æw°¤ÈƒlxɆzČºĶI²ÆǔUš°ô@Þ¦‚ƒUnUĠ¼ŎÓĢxĠ_²ÇĊƒǬ°ŽȂamōšçUÇW@¯öʓõʉX£ĶťnɻšÇUˋmϙ¯˗ӑѡᩃaΗƒœɜ°xWƴUxɃÒˣ¤Ʌwğ„ʉōóÝŹ±°ȗ@¯„ƃ²¼',
'@@ō™гwȁ¥Ƨ°ŹÑķV™¼ÞêĊ»‚lĵšm¦ÅW@ĀôÈźaɜxÈbÞÆĶIОŘnIÇŃÛÝĊÑĠƏ'
],
'encodeOffsets': [
[
80022,
41294
],
[
83914,
41474
]
]
}
},
{
'type': 'Feature',
'id': '6543',
'properties': {
'name': '阿勒泰地区',
'cp': [
88.2971,
47.0929
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ɲˣĊIÈ¥‚ÅU±Ċýkō°ƒĉƽó»ĶƽXóʵʵ™ȯƑÅȁɅ¯ĉ@ÇሗK֛@@ˤV֜ʵрƒǬVĸƑŎ@ƆϯÑóŽķ@ʇ»ķ¦έmlÈĸĊX¼WźÛÞÝѸ‚ĢČþ„ĀĊôάVö¼ĊUƨ°°èŎČUÜƐóôVôôŽ²êȘlˌç°`n²ǬŽĊaš™ƒÛ°±kğmm»š@°ÝɆÛÅÇVaݍVm͔ğôÝÈb‚„@„ƒ™n¯š™ÜUĢÑĊ@źīżWŤÈǖWôŁÆI²ÓƨL@ŽĊX„mmÑÆ»ȰÑkƒĶō@ý°m—¯'],
'encodeOffsets': [[
92656,
48460
]]
}
},
{
'type': 'Feature',
'id': '6531',
'properties': {
'name': '喀什地区',
'cp': [
77.168,
37.8534
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@Č@°ƒĠ„ôÓô@Ŏĉ@Ƴĸ@Ť£ĢlVôWVóřXĉŤêÞ@ƐÒĢÑlèÈV@šĠIk°ÆŘ@ÈÈĀ@ǶťÒğ@š„@ÒĉlŻ_@šƧĖÅĬōÆ@bźÞnƒƒlVœÝĬšWƼʇ„ƒÝÅ@ÇÅÈwWóĉ±ğz‚ĬČƨƂÝIĉݯbÇÑĉƒ¯ʈV°xUŰĊ¤ƪ_ôÓɚI@lȚXȮ™ŎlɴȘ՘š„¦ɲÆʈ_ɴŽźŽôÞʊŎĠƒɆxˤ£ɄÑVwXƳ¯w›ɛŹ٧™çƧ¦ōƒُ͇еϻɃɳU™Ý¯@ōÝŹš™@݄»mğ™»ÝKkŁżřɅƅƒ¯ÆīĊ»ôVôĕÅUĉéV¹ƨém™anѱĕnwmwnÇۄyĉ¹ŹlŏkĵèķmōÞġKñÔċKÅèĉzƒŽ„ômxȗÿƿI@þÅČÝKÝ°@¼ÈVºš@ÅĢšÆUċłn„ÝÆǕČĵJm£ÝJ¦@ĊƒxV°ƏLċ¼ǩ™@™m@ÅĢómÇÆğ¹Çš™ÆšĖÞKšx„wô¦ÆÑÆL²ÆƾŽU„Ž±ŚÅŻĖ@ĬŤÈñ„@ǔÇx„Èǃ',
'@@VÇ™ţ°ğUĠ¯mk¯ó¥ķIġÿƏbƒ„ĉa±ÒĸĀlKU„_m»nwšŽ„m@ÈŤ¦ĉbÞ°±Þżł̦°ĢŁVé'
],
'encodeOffsets': [
[
76624,
39196
],
[
81507,
40877
]
]
}
},
{
'type': 'Feature',
'id': '6542',
'properties': {
'name': '塔城地区',
'cp': [
86.6272,
45.8514
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': [
'@@ήnĸ¥ʈ¼ĸ@ôϰÒ@ƅƒōUķƑǫʶпU֛܃LګK@΋ĸ@Æ£ÞġÅĠċšLV݄»™@Å»Ýnm¯š»nŻĊ@nķŃ@¯ómóÛÝǟ¯aÝóȭ¥ƒšōUmxĉbÇї@›bUº¯X¯ÆƧbVÒĉnǕw¯°ƑŽV„—ŽÇ@kx±Uƒšɱn™ŽÅKƒ„¯ƒĠǠU°ɜL@°ƒxnĬ‚ĀŋŎÇLƒŽğšϱÞέƜkôÅĀǕłƒĸĊŤUŰĢ°„¦ȂϰÜɨ°x@°żǠÆƈČVĠ»ČL°ÇšbĊÑ̐óÞlĶwބɆVÞwǬxǪţȼÜLŐĶˢ@',
'@@óKĵĀV͈ĉłƾNJÆŤƒzXl°ƒÆL²¼źŽôÈĢǔ™¦l„ô°ɜÞʊĠğŃm»ʵƳƑʝȗīV¥¯ĉ°Ñ@ŃÅI™»ĉmğn™ƒašƒċƨbš™Vğ—w›ġ¯@Uōa™ĉÝJğÑÆŎkŎÞĀlźƒ¦'
],
'encodeOffsets': [
[
87593,
48184
],
[
86884,
45760
]
]
}
},
{
'type': 'Feature',
'id': '6523',
'properties': {
'name': '昌吉回族自治州',
'cp': [
89.6814,
44.4507
],
'childNum': 7
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@መL@È°ĊȂɆƒÆĊ£„ťôWÓɆbĢÅŎƒÆ¦ČÑW¥°ķU¯ƏŃVē±Ý@ó—ç˜ĭɃƾřÆķkwŹƒŤ¹ġ¥ĵKŏÅXmˍщwǓ¤Ƒ@wóōVķ£ɱšġôÛa±Òȁ„óèţIVŽƽ¼k¤ó¹ġJmx—»ÝUƒ²™@ÅƃĸǫŎ„ĊmŎǬ՘'],
['@@Þô°bÞǠôÜôn@°ĸń˜Ƕkłƒ¼UޙKğȂÆÝĢŤķ@@ΌڬL܄K@ˣȂ˭lĉńW¥ĵVÆý@ŃÞēUŃȗƅ@ŹƩǕĉ»k»Ç™VğóřX™ŻKƏŽċêȁèÛŎġƒͩń']
],
'encodeOffsets': [
[[
90113,
46080
]],
[[
87638,
44579
]]
]
}
},
{
'type': 'Feature',
'id': '6530',
'properties': {
'name': '克孜勒苏柯尔克孜自治州',
'cp': [
74.6301,
39.5233
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ˎǫĠƽ°UUĉ¯±ȁÑmƒ„¯Ýōˋō™wUű»ÅƑ°ƒȘ@²¯ɳʇ`ɱŃ¥՗™ɳȗōkȭšșW@kəJóÔƩ`ĉ£Vů¯wU°ʇĊ„ÈÒ°aĊÞÞJŁċƧīĠyĊ²XôÇxÈÆÆ@„ÞʈƒÅ»™XÞīU›Ƒkm„ŹÝ@aŎÅÆīƨĕ@™ż`Ċk@љƒĠ@ŦÑ@ǵÇÿ@ÇÅŗl¯ğJ@™ÇUkçġÒƏÑÝ@ţéWĊôŚUŽóXUġkţ¤ķ@@ƴōĊó@óÔğƒ¯„ċ@@Қ¤kôˣŰ͓„k»ƒKX¯ċwƧôğɐšÒôIVƙš¯UķǬķšnŽ™¼ôb°ÒȰVVÈÞ°ƒĸó¤V¼°„V°²êƒlĢ҂Uƨ¦ôȰƴĊVV¼ǖIċĊ„ÞɜéšnČW˸Ǹša„řÈw±īšçĸ¤ĊšôšwšŽĸUĢ¦˜éǖĬ„Āô¼lÞkÒ°x°ƆÞx„šÆV²ǔ»„b°wގȘ¥°n„šŎV@°„„ʠè‚ŰȂb'],
'encodeOffsets': [[
80269,
42396
]]
}
},
{
'type': 'Feature',
'id': '6521',
'properties': {
'name': '吐鲁番地区',
'cp': [
89.6375,
42.4127
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ôK„ĉǪa²¼lÜô@ʠê°Ĭ™ôȂƒ²ÑÜbĢóɲ™ĸ¤ŎUô@xƒŽǔ£ъxˎmƒÈÛ@‚_nĕÞōšř„ǫƒğšůlȯ„¯ĸ»U»Ükôƛ°ůkť™»Ŏŗ@¯@±͓óͿ„Ǔ@ķȁ¼Ϳ@Ƒ¼¯°ólġ¯xȗUġšƑ™ǩÒƧUÝ°˹Kóššx@ǸōĬÅĬƑĠ󃄚ǔêÆ°XÒʟŤUšÇ¼ˋnn¼±V²°ȂUŌݜbʟǔɅô@żǬaҎÈ'],
'encodeOffsets': [[
90248,
44371
]]
}
},
{
'type': 'Feature',
'id': '6540',
'properties': {
'name': '伊犁哈萨克自治州',
'cp': [
82.5513,
43.5498
],
'childNum': 10
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ĉ„ÆŘȁ̐mÞ¯ĀX°±¼@ƾ¯ƴ°ŎÝþŋ¦WÜÞbȂĉźUœÇmwVUȂóô@ȰÝ΀nÆJn™ƾ™ʠ™ŌLČóǪ¯œ¥ǔaǖšŌaôÝĢLšx„ƒÆLšɲm„™²VlwÈ@˜Uƒƒ°¯ǖxĊmUÑƨa°Å°WV¹œa›ÇɃÈm¥°¯ŹóĸķǫUm»Å¼ÇVɱ™l݃ŋnķÇÝX¯ƒͩÇɳa——Ý`±_U±ĵnWƒ™a@™ĸóšķ™¯ǓV±ÅĵJċ¹ɅykwDŽ¯£Åxʟ»ƒlķI¯ƒX¯ķ‚™êǕƒȭnķ»Ź`±„kÞ@Žš„Ýô@Þ°xšŤŎIƨÆUxōš¯²ǔĬǬlUŚ'],
['@@ÞĀlźƒ¦¯ĸŤKޙšƒċƨbš™Vğ—w›ġ¯@ţƽJ']
],
'encodeOffsets': [
[[
82722,
44337
]],
[[
86817,
45456
]]
]
}
},
{
'type': 'Feature',
'id': '6527',
'properties': {
'name': '博尔塔拉蒙古自治州',
'cp': [
81.8481,
44.6979
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ήƛϲÝĠ™„ÈKŌōÿmī„w@¯ɛKV¯ğǟ°Ƒ™wġKóÞŋbǕ™Ǔb›¦ǩ°ċôŋKʟšƽšmšÅImŽͿŽȯÞó@ȁôUVnx›ÈŹVȁĊÝabŻ£¯°l„óxȂŤĸkĊšÞyĊêĊmĢxV„ƨÈŽĠX„ŽΘÆĠÔź‚Ɇţ°LXƾŤŤb'],
'encodeOffsets': [[
84555,
46311
]]
}
},
{
'type': 'Feature',
'id': '6501',
'properties': {
'name': '乌鲁木齐市',
'cp': [
87.9236,
43.5883
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šŽWŽôŚUĠȚl¼Ċ¼ƪǖ@źȘƆ@ýlܚXVŘޙš¦V¼kĖó҃èkĊȁˮ֜@ǫ՗nōƒĉǬō„ķÆŚ@„±ÞV˜¼nwĢIôºl£ƾ»UŤJôçšó¯īʟéó@kÛ±»ǩbƒĊóLҍÇǫb@ŻɆóʠǓ›aŋÞȁVʉłĉbĉɅô'],
'encodeOffsets': [[
88887,
44146
]]
}
},
{
'type': 'Feature',
'id': '6502',
'properties': {
'name': '克拉玛依市',
'cp': [
85.2869,
45.5054
],
'childNum': 2
},
'geometry': {
'type': 'MultiPolygon',
'coordinates': [
['@@ɜÞʊĊýVaŃm»ʵƳƑʝȗīV¥¯ĉ°Ñ@ŃÅI™»ĉmğn™ƒaݚţL°ķóKĵĀV͈ĉłƾNJÆŤƒzXl°ƒÆL²¼źŽôÈĢǔ™¦l„ô°'],
['@@ƾIŤ@UUwōa™ĉÝJğÑÆŎkŎ']
],
'encodeOffsets': [
[[
87424,
47245
]],
[[
86817,
45456
]]
]
}
},
{
'type': 'Feature',
'id': '659002',
'properties': {
'name': '阿拉尔市',
'cp': [
81.2769,
40.6549
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nIÇŃÛÝĊÑĠƏō™гwȁ¥Ƨ°ŹÑķV™¼ÞêĊ»‚lĵšm¦ÅW@ĀôÈźaɜxÈbÞÆĶIОŘ'],
'encodeOffsets': [[
83824,
41929
]]
}
},
{
'type': 'Feature',
'id': '659003',
'properties': {
'name': '图木舒克市',
'cp': [
79.1345,
39.8749
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@VéVÇ™ţ°ğUĠ¯mk¯ó¥ķIġÿƏbƒ„ĉa±ÒĸĀlKU„_m»nwšŽ„m@ÈŤ¦ĉbÞ°±Þżł̦°ĢŁ'],
'encodeOffsets': [[
81496,
40962
]]
}
},
{
'type': 'Feature',
'id': '659004',
'properties': {
'name': '五家渠市',
'cp': [
87.5391,
44.3024
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„çôÑlĕU»™¥ÝšUŗ™WkÛ@þVńÝĔ@ńÅþĶUX¦Æƒ'],
'encodeOffsets': [[
89674,
45636
]]
}
},
{
'type': 'Feature',
'id': '659001',
'properties': {
'name': '石河子市',
'cp': [
86.0229,
44.2914
],
'childNum': 1
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lŁ—ǵm‚ĉ@mż™¼n°ÞmƼš@'],
'encodeOffsets': [[
88178,
45529
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/xi_zang_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '5424',
'properties': {
'name': '那曲地区',
'cp': [
88.1982,
33.3215
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ƨʔĸbܺÞwnxźbÞ°ô@„ĶŽĸIȼĊJŎÈôUšÝƒ¤ǔLސŎ@ĢŽȘblƒôL„ÇźçȤôLš¥ÞIÞ¯Ķxʊťƨ™ƿÑĉXVķŦ¯ȂKÇǕšÑ¯IUš£¯Óƿ£VĕōÞÿÆwƒƑ„£ǖxÞĕ±ÇÝaUÑȃU¯‚UōÈ݃wWŁĵ™±Ý„óĢÿ°IÞ±mÅĢ¯mÿ„¥°UnÑŤĢĕĶwǬŻͪwŎ¼źÇĢ„ĠĕˎŁ°óƨ¼Èa‚m@¥°wǔ„ǖ°ŽƨÇŤœšġƨ„ŎŃôbÈÛŎĊ°@Ġw²ÑÞJƃÆb²ƒ°êĊUނlȲƒV„ÈKĊÒĸĉ›»ÅôťUÅǃk¯@ǂÑklǁÅl™Ģ™VÑóƒ@°@„ÛĸƒV¯ƒÇĊ™n¯Uĕšƽ¯m›¯b™È@Ò°Ĭƒbĵ›¼„‚kxķýÇJk£ÝaUÑÅóĶǟkÓʉnĉƒÝ¼Ƒ„ó»Þmn£m™Č¯@ƒȮÿV¯ĸƒ™k@Ýówƒ»ğ„ġ±ǓLō„ƒšV¼Əèķĉ™è±b@Òţ„UÑóakƒl£™Ó@¯L@™ÇlUóȁš¯aġÈÅĕÝLķ¯Ė¯@WĬ—x‚ÒÈnW°ţôU²ǓÓġ²V°¯ôƒǔÝL—ċšk™š»Ý»Ýš¯ÞƒVƒwۄÝÇōͩÈĉċ»ĉm¯£W¥ţKkóġƏW@¯±kōŽÈ›b@җšÇaƒÆ¯a™„ƒkóŽÛƒÇ¦Ýa¯šÝ™ĉ@ǻۄmƒǓxķƛ¯lVĀÅÞġb™™ÇJUÅV™ĖƑW™zō»ōšƒW™n@è¯ÞóVkwƩnkźÇބҙޯƒƒýğÇUxÆÈnè±bĉÝ»ÈуwšwÞ@m»ÈV@ýÇ°ķ™xƒa„ݯXċ¥ƒÈóW@ôkxlnxVÈóĊkŤġ¼@°¯ŰƑL̻۱ŎÝV—Þ›VƒÇÞŎÇakƞ‚š@èğŎĸżšƾ°ÒšLÞôĠKȰĖźVÈÒĠ„¤™VôšŽU„ÈþťL@ôǬÞlÜÈnÇÒUŚ™@šĊƨW°™°Xƒ‚@ČÇþ„ƴĉÒķ¦@ŽĢôWĀôłUÞĢǬ™ź°¼š@ƒôV°„bUÆnzm¤ƽĸƒÈ'],
'encodeOffsets': [[
88133,
36721
]]
}
},
{
'type': 'Feature',
'id': '5425',
'properties': {
'name': '阿里地区',
'cp': [
82.3645,
32.7667
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„Çƾķn£myVŃaU¯„ó™@¯»šŹġǫVÝóŁXÿġó@ĸ¥ĊуƳÈý@ċ„Wš¯X¯ĉƧ‚™š@VřÈÑÇmkÛǫÝ@óŦKÇýVƒ™U󚏃£ğÇÑŹUȯĕğLÝó™K¯Ñ™ƽķŻĠō@灙lƝÈbƍÈ݂„œU˜ÝÞU²ō̼ůƒK°ů@¯UK±—ĊƧbōÇmçÈġƒóšÅób™™źóš¥kīƯól™ç™KôĵUƒÅ„VŃķ¥nÅŏm¯¹Å‚™»@ÑǍóxÝkʇȤU¤ķb@ƒ¯ĊÇx¯ĸĉKm°šĀk¦l„„KnĬȀƾÛ¦WÆŐmNJĉ°ōUţ¤UšŎ°šŎKÞłÆ„Ǔ¦ƒÞ™‚™„ř¯bmUÝl¯Um™ğl¯£șwŎǫaÝnĉĶƒk@¯™K™šō»ĉn™aÞ»ťnkml™ĸ¥UŚŻkÑťƒĉV™ôó°LôīĠU„ÿĉǕÅz±Kƒ¤„²ō¤¯Ė¯UÝ¥Vĵ™óÈťÝwķșÑk¤ó„™ƒWýĵĕ™„VĠƒV󍃎Ǔ„ķ°k±VU±ţ¦UǟÝřJVљ¥XUċUŎlÛƆǕÆȗƆ¯wŏÞÅ@™šĉl݁óŽƒÒ™nUôńlxólÝôێ±™™LÛôÝL@‚ġ¯X¯ÇUżóa󤛼XÒġŎóLk¦‚ôżĸĠ™¼™KġƆô¦„ÆƑÔĉĶ¯ImÒ°¦n°¯Þl˜ÝČn„ƒÒšKĠޚĕkƒlýƾťœšôI‚ĖŤÒnƜm¼¯lnżóÞ@Ůó¦™ôƽĖċŚn°Ý°ôÈUƜƒblÞóŽ@Žǖô°UÈƆ°X„þôŽô‚lѢšŽ²Ėm¦°š@¤™XŽĊblܚzkºƒĖmX„šŎWVšóÞn°lĠxȚa°»żLźƒ„b@Æ°XĠÝȚxĊĕŤaȚ‚°È@„„@èŤ¦Ü¼œW˜ÞkŽÈ@V°lŤkŎ±²¦ƐUšlj°aÈÑŎbĢƒŎbÆ¥ÞIȘlššôVÈU‚™šb„kɲĶn„mnXb̼òƾĖŎ@ĢȂÑôÓĠĖʊšĊÔ'],
'encodeOffsets': [[
88133,
36721
]]
}
},
{
'type': 'Feature',
'id': '5423',
'properties': {
'name': '日喀则地区',
'cp': [
86.2427,
29.5093
],
'childNum': 18
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ĶĖXþš„ôƒl£šÒĸÇÞxÇŦšôUĶÞ¦°V°ĕŎ£ƒ±„£²LÆyĊǖƒĀğVóĬ¯KóôUš‚ĊŦ„lҙżVÆķ¦kšlnŦmݼšbĊmŎ¼š™šL@°„lĊĵÞmǬbƍȚx°¤Ġknš°VÞkVn°aƒŚš‚š„Ýǔ¥ÅƒÝŁōL¯™ōV™Ť£ŎVĊ¯nljƏXÅÜ¥ǿƽmīƒLkƒl¥™ÿn¯ĊL°ķÈw°ĉ@ƑĸaV£ʈȣÞlôwȎ@Қ¼Æ°ºŐnmÆĸ¦UńƃV„óĶšLšèôkÅ°lĬ™¦Źôššôa™Æ„ôÇĢnèŎÈƨa˜ĉ²‚VLĢ»lţôĉUǂwkmlw@óôX„ÇȦ°WƒÞ„b‚wĸšÈ¯@þÇUn¼Ý@™x„xÇńÞ¼ĊŽ²amçÅÇVwĠȄþ°„šÝƒÑÈÝlŹƪmlxôU°Ý@çšm„XŎ™Ŏ¼šyƒXšĕÆUVÈIššĢaÆÝUÿ°kĸƜǔwn„܃ȼĊ@ޚ°™Þbȥ܄ô„lšƒ°b„ÅÈb˜™@ќa‚ǯUU¯Vġš»ƒ™¯aV¯Ç°Å™mnÑŤçǬVǬ™±ĉ¯¥Vĕ¯Ýk£˜ō—w@±ġÛ°ÇVїƒ@ۘa@ČL™Ƴ™„ƒÇa¯¤ÝIĵ¼U¥ƿōķÅţŻókÝóĕ‚¥¯™U»Æ£X¯ġŃÛkÝ°V°ó¼¯èWôÞĖ„ȎƒŽkĀƧĀówm¥¯JŹÝJݙōVVŁaݐƑ@ƒ˜ğŭǂ¯_ƒ˜ĵ—›VnxŃón›ƒĵxÇĖĉVÝÈğV™Ò󃯐±Żĉ£ķÆÅL™Ljĉý˜ţۃ¯VƒnV¤ÝÈ@°ÅÞݤ™ŰğŁm¦ÝxóKƒ¥ɱÈUĠôêVôÛ¼ÇWÝçĵaō¦óĖƧlÇĢƑŽnŎDŽV¼¼‚ºÛ@m¦ƽ„ĉmm¯ÝKÛç¯bŏłĬ™bƒ¼ÅLmŽ„xť°ÅU™šÝXkŽÝmĉ¦W„¯K„ÒknÝaV„Ýè¯KɅńÝKnÞ¯¼'],
'encodeOffsets': [[
84117,
30927
]]
}
},
{
'type': 'Feature',
'id': '5426',
'properties': {
'name': '林芝地区',
'cp': [
95.4602,
29.1138
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚VÈłVôÈk@š°K@ŽšÔk¤l„ôbVÒŤƒ@ѲašçĸĊƐçU»„™ŎƒǔKĢ²Ġƒ„¼ôx@ޚlƨĬ„Ul¯ÈLV‚šÞJ„°Ünʊ„wÜbXê‚VÞ¯°ššanaU°wƼɴÑWÑ°mÈýÈam¥Þ£Ť@„¥ôblÞĢ„ź¥ôxÈÅmݚ™ƒĕŃV»ĉōŤōnóƒ»ÈīķIUƒĠÑ°ġĸLÞ¯VÒƂ@Ābš¼WôÈ@V¼ôóŤKÈÑU»šwVǫżnWÒÈx™¼‚lŦ£ĊōŤx²¯@ƒÆƒU¯šçÆ@„¤°£„é°k°lšůÈó@¯ŤÇÈĉƒkkÿó¥ÝXķљÜ@ÒóŚÝ¯°ĉówÇ±¦ÅJUÒĉĀķw¯°mĖ¯„±akxÝÅnƒ™»lуK@¯lU™¯UVѯóĊ¯mōğVǓƅƒÞƒWÝÈÛ@ƿô¯ÜġzÅþ¯ólmôʇġĊÅUͿřŏȁˋŁóÇˡōƧƒÇb™w°Ķôk¦šÒƒnUþġҙÔkǔķèó@ƒ²@ŘōńĵyƒzġaݤÅIƒ¤Ƀť¦ğѯ¤ķbóš¯ó±ŽU²°¤ČÜVnÈƂ„ŚŎ°ôĢ„þÆzèVĀǎĀǘƒXŹÑ¯¤ówċķk¦šłUÒġzÇ@ƒ™ÆÝx@²Þ@Ƥ„Uô¦Uš°x„U'],
'encodeOffsets': [[
94737,
30809
]]
}
},
{
'type': 'Feature',
'id': '5421',
'properties': {
'name': '昌都地区',
'cp': [
97.0203,
30.7068
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@™ŽVĖm°ĉš„ÈU°ķ„ƒÜ¯@@ô„UÒġškš‚ÆkÈlŽÒ@Èl°È„VÆóŦƂœ¼‚a„ÅĢ™Ʉwnōw@¥Ŏ¦°ŹÞmVš°wnÿƒw„wÝw@¯šmÞŗ°wĠ˜ĸkÞğlĔ²¦°@„ĕĸwVóšal@nĢÇĊn°@¦šŽźUXçǔůĸVš™ÆK„ÈÝĠš²ÅĔô@lšŽÈ_m˜„zǖl„šaU¼ôwV°¯¦‚ĬÈa„l@Čǎ„¼™„nŽ˜I„xô»ɜ@ƨ¥ɆŁ„ŃǪȁkƛƨȍʊȡóĭ›@—ÈÇVƒůރĸƅmēƨť™ÅÈʉVǵ°ġVŭÅɧ°ÿnɛš£mƒķ²ŃóÑUĉ°mÇ»¯@mxUĀ¯èţ°ȁÝç„ġU¯ÆÇţÈ@°Çô™Ű¯k¯lƒê¯¤ƒ£Å@™èV°Å„@„±°ţwĉŎť¤kš»ÇwXÑŻmUǬ™xV¼ÇÒţLóôU»Ç@X󙻂a@ÿŁUÑÝ°ķK¯ĢğÒV„ĸJÇĬ„¼môţŎĊŎU¼Æ„„Ė™šnÞÇÆówŹ¦ġƒkÝóaƒ¦ţ@ݤn¦ÇbÇþ¯nXÒɳÒÅ»¯xVmb™b¯™Ý°UWéÛaƒxʉÛmƒ¯ÝI™‚UÇKk°ƒVƧīķ„U°ȭĀ@„ċ°nšm¤Ýnô¼ƒƒÞ»Ċ„ʊmlÔĵǠÆôVÒÞbl¤ÈIĸþlwƒœ»ĶŽ„a¯ī@њǰanœƾ°'],
'encodeOffsets': [[
97302,
31917
]]
}
},
{
'type': 'Feature',
'id': '5422',
'properties': {
'name': '山南地区',
'cp': [
92.2083,
28.3392
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°ÞUĖ°¦²ĊôÇÜLǖĀɜŽȘŰÞLĸźêÞ@UÜUŤ°ɞ¯Ü„°WŦĀmŎ„¦ĢyVљŁl¥Čĸôx°£źÒ„Wȗ‚ÿȍUÿ‚çÅyƒýóġō¯ƒřŁmÇÛUċŽ¯£V±²°ôô™ĸa°£ĠÒŦ¥ɄŽ„£ÆJÞ£Ģb„yĶzŎŃ@ŗ„±ô@ĸçlǓšÓĢÑVý„m™Ñl¥ĵó‚¯̻̥™ƛǫÝһÇƧĉyţ¼ҍēVĶĉŎ°ĸmšÞVÝĸ™ÒÛaċ„ó™ŹĖƒèÈÈl¼k¤ÝX@`ސŏ¼Æō¼ÇçĉKUÝÝ£ğ¤@¦ġl¯Òġĉ¯óš™móxÝÞğVšƴċK@—b@ܘ„UÒ¯ÈĢÜ@²˜x—Ŏl¤'],
'encodeOffsets': [[
92363,
29672
]]
}
},
{
'type': 'Feature',
'id': '5401',
'properties': {
'name': '拉萨市',
'cp': [
91.1865,
30.1465
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ŏ²l@°‚XĢƐlôŤLX¦°¤ĊnČ¼ÇĊŎͪÞÈ܃„x„U°Ýޙ޼™¼lšČ™˜ŽÞK„Ǔ°óU¯Ģ±ǔÔV±ŤóX¯ÇmÑ˜wXī°@°ĕĸÞKÆĖĢÇ°bȂ™ÇŁUƒV¯wV™ó¥ƒVÅ£Ý@@±ÞwšÅ‚„È@ƒ¥nōťÿ¯Xۃɝ°ţ¯ÛVVÝ@ŹéķÝKȗůɛǕÿÛKóÈǫšǫUţèmҚn¯Æ°ÈU‚°b„š™¼UĢV°°V'],
'encodeOffsets': [[
92059,
30696
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/yun_nan_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '5308',
'properties': {
'name': '普洱市',
'cp': [
100.7446,
23.4229
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@U‚ô²‚a@Ž²²Ķ¥œV°šĶ²bl¤kVxl‚@œ°‚Ś²@˜„„y„@ô¦¯„@xƒxVxU„VššbVšÜm¼Ŏ„„ĢmºXXWÆ@ĀœšmŽmXU°ÅÒm¼Þx°w„@°‚XêĠ°»nV°U„l@k„@V±ôī@£‚ƒČŃÆ£„KÞý@¥‚k@y„a@—nWV„UVƒšwƒmƒ£Jƒknm@wmkn‚X„˜šX„¥mUUlUnbš¯°ŽnkƒVInlIUw°n™mk@@mlanXlanmšk@wVWUw™_@éĠašnmUaÜ£ƒmXƒ¥¯@@„óUmݯ¯ÞÝlKnxô£š»„»Ġ„J°aV„UÝÿV¥ÛbƒI@wmŽón¯yÛL@ƒWkŎmș`IWa¯K@¯mUnmaXm™bmak„¯ŽƒĢ™ÒÝm¯mV¯KÇb¯KۜWW™X@a™V™knċLUWV™kXóW@k™a@ƒób¯Uƒwmb¥UUlaU¥U£maķšƒKXkƒmÝ@kwmѯk±ċbUUVakaġ¦ƒƒkL@`ƒœ™a¯xƒm™Åƒ™LUWƒ@ċnŎUV°LkL@b°°@¤š²ƒ‚šnôôk„l°kè›ÒÈzV¤È„WôôƒnV@„ƒ¦@¼Ux'],
'encodeOffsets': [[
101903,
23637
]]
}
},
{
'type': 'Feature',
'id': '5325',
'properties': {
'name': '红河哈尼族彝族自治州',
'cp': [
103.0408,
23.6041
],
'childNum': 13
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@°°nÞôV@ƒ°@„¦WŽ„nÛ¤Vbmn™ğb@êš`VxUX@xš„ƏÞUnn˜WÞĸĢƒšÈ@ŽÇè@zÛÜWšÅêlš²„˜KnV¯ĖĊx@bk@@„°JÆ£Èbl„nnm°nlUkVUUwVm„Kn„‚nVŽÞxVLX¥laX@@xl@VzȎVmšk@b°šÈĸmŽV¦`W„XšƒbUb‚bX¼°x@ašVVkn@lþnXUlVxŤÅ„y‚IUƒka‚IŎĊ@lXx@b„z@‚ô„ƒ¥„_V@l‚n@„ôy@al_l`nmƒÈ»@kƒmXwWK™U¯»™a™Å@wƒmUÝKUa™UUƒ™wWƒ@w²»@kƃV£—mm£VKkÑV@@»nwƒ¥™ƒ@kƙnllIVlnLVakalknJšWmnaUaVÑVVލn¥m@ƒ„¯Uÿl™@™™™VçƒaXaV¯UyVLVkš@nJlšXLlŽkxlbla²Òl@nVJVkšx„KlkUaVķÝÑU@Åm¯@±™Uó°ğńķĠmU™Ñ@ǯ¯Å¼@nml@°¯¯`@w™£@¯Çƒk@ƒ»nmċ¯U»™I™Ž¯LÇĶÛn@bó°™U›šwmŽ¯„™Umǯa„™ƒ™ƒI@ykIƒVUŽ¯bƒIğŽƒ¼™¼ó¤mwkLÝÞ'],
'encodeOffsets': [[
104243,
23429
]]
}
},
{
'type': 'Feature',
'id': '5326',
'properties': {
'name': '文山壮族苗族自治州',
'cp': [
104.8865,
23.5712
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@šwô„š@²¯maUmôUÆxš@Xš˜bÞInlVUVw„JVaU„K°¥„xmÞXnlKlnna°@ĊČ„ÆwUmnkl@°ƒƒ£nyn@VV@Vak™ƒ@@kÞ݄bmx°Vnw°klÞInĖÞVlKl™@Xa°„„KlV„U@šJnx‚U@ÈĢbUKlm@ak_‚wšanWUk°ƒl»„k@Wk@lwU_ƒ@UalóU¥ƒÇnƒ™kJWƒ@mVXx±bƒK@nV±a@™Åa™£ÝK²ƒWknamKknǏk¯ƒaV™™V¯ĀƒU™„™Ò¥ƒI@mm¯¯xōW@@`k@ó»ƒUU¯lm£ÅWlĵ„w@mmwÅmWU@y±U—xmwU„¯Uƒ¥Ý¥¯£m@kŽÇVUV°VbklƒL™wUlUIm‚k@±ÑkbkalwkWKk™mI™@UlUKVzU°Wb„bU蚚@škšVĀƒ°@„n‚m¦ÝŽUUUÒVbmbXn™‚mIkllbUbmKUkkJmkŚ@lš„„¦mx@¼U@lÒULn¤˜nU¤Å„@l±¼@xX„šxV„šVVbÞLVŽ„n@xšÆšb°¼šV'],
'encodeOffsets': [[
106504,
25037
]]
}
},
{
'type': 'Feature',
'id': '5303',
'properties': {
'name': '曲靖市',
'cp': [
103.9417,
25.7025
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ȦlKÞĕUV¯Um¯„ÇVUnVVUƒĉn™ĊÇƾLn°°È„JÆw„@lbÞa„¦V„XJ°¯W¯„aÞJVkUša„ƒ@lKnÅmWUk¯a¯»@m±@уkkbWWX_WÓU»_l™kÑm@U»m@l@IWċn¯l@VanV„UV™UVwVx„KȄVmUē‚@„ƒn@VÝÆL„w„VVwnVlmkUVÑÇ°ka@k™ÿÝaÞUl£™›—ċĕX±±ĉƒa@UnVnalónk@wl™UVmkÝJ—aW™™@ÅwóVVnnb±°™@óƒ™xXLWx„n@lǼn„m‚k_k`@bózƒ‚m@kU@ƒ`„¦óƒ@nWš@ÜÅXWw@ƒyƒb¦@ÒlnUb@x™lܐk‚@²Ç@Uƒ¯bmy@kV@bƒb„¦U`lLVx@b—Ll¼Þ¤@„°VVބU@WސUb›J@nnš@lnnm„šxUŽƒUUbƒK@šÇwklkUƒVWakn@ŽlbU@@„ULVxkKUn‚°¯Ò@¼™„kmƒ¦m@kl™Ȱ@lU„l¦„@Vl°wšnnþĊUÆbUx™b„ŽV„šĖU°„a‚nnašV„al@@b'],
'encodeOffsets': [[
106099,
27653
]]
}
},
{
'type': 'Feature',
'id': '5323',
'properties': {
'name': '楚雄彝族自治州',
'cp': [
101.6016,
25.3619
],
'childNum': 10
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@mҁXU`Wnšš™@Xl±¦š„Uxnbl°knmKUx„„ƒxVôUx°¼ôÒȄ°JlnÞKĠœW°¦ƒ„Vx²JVwš_°¥@UV@@wnymknK¯I@‚™²b°ƒš£V¥šwU‚V„¤nLškÆJÈwôô°„l»Č¯ƒġVƒUU@@ƒ°ƒƒÝXl@U»°Å„@U„¯@w±¯VmUUlm@m™„ÑnIVyUwmak£Vwm±—@Çw@nƒ@UxkwlÇnL‚mkř@±Žk™ka@kóJV¯Ç»U£lw¯™Xalbl¥¯UXƒ@a˜™UaÈL@ÇVIVƒkaU¯mm™akLWkUJ¯Umxnšƒ@ƒkUx¯xƒ„mWÅīÝkkbƒŤƒbkxWmXwWk¯wƒKkƒƒLŤċń„@¤óĬU²ƒ@@lƒk¯VmU¯¼@xV@k°l°kbUš°nm‚VnUš@°„š„UVèރÆbUÒÞnU¦›V—¼lô„@Vl'],
'encodeOffsets': [[
103433,
26196
]]
}
},
{
'type': 'Feature',
'id': '5329',
'properties': {
'name': '大理白族自治州',
'cp': [
99.9536,
25.6805
],
'childNum': 12
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lbœKVIUa˜@²m@b™xôÒÜxXLmbnšl@š„„K°šš¼k„Uô‚xôlV¦nJ„Uš™Ænšm„@šx„ÆwšbXšÆôô„LUVwôK@wlmšaVwœ@WknmƒIUmlnJla@_™@kÝmKUašÑm¯Xw°aUaVl»²JV„bÆJkôĶĀ²VVk„mšbVwUó„wƒƒVwnLlmk¯maVw™ƒ²¥Wkš@™™XmV_‚WnÑUkƒ@k󘻜UV¥ÝmVÑÅa݄UçƒVƒ™@¯V™Umn¯mV™lak¯l¯U@@wğŽW鯁ƒ@¯xÝw¯š¯Jċa¯U¥mLU¤„bÞȤƒbÇLWUwmIUVW¼kbš`U„Vb¯L±ĊÛkƒÿÝKkwƒKţê™UĉþƒÈƒV¯ÞVbUŽ°KVšk²Ý‚mI—ƒmV@kƒm™UkšVxm„¯KXÈķJU¦V°ULWxšL@môƒšb@bkx±LnVUŽVLnkÜWnwlLŃmW@kkJU_ƒV„šWĊ„Þ'],
'encodeOffsets': [[
101408,
26770
]]
}
},
{
'type': 'Feature',
'id': '5309',
'properties': {
'name': '临沧市',
'cp': [
99.613,
24.0546
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@‚xĢ„l`²X°ŽV„šx@x°Þ°KXašğUњW‚bnIl`X²°b„xl°„„šV@xVxk¦mb„l@xšXV‚ÆzX¤™Æ˜k°„kx@lźêlaX»VUnJVx‚XÈK„aÝȣƒaV£nKV¦°‚Čb°I°™n»ÆÑV¯nWn›™@ÿXÅWWn¹ƒġōƒn»‚ÛU™™aU™VƒUw„w@w°ƒó¥ƒ@ƒz—ƒ±@ř›¯@kUwlk£±aĵŽ¯™›Uĵ¦±±@bó±VÝ@ó¤ƒw¯I@mńóm±XŽ¯IólƒK@š°Ullb™zkKlln@@ԙºƒUmVk²ôҙx™ŎUVóLƒb„ŽmÈnŽmbnl‚a„x@z„@Ǝ„¦kš'],
'encodeOffsets': [[
101251,
24734
]]
}
},
{
'type': 'Feature',
'id': '5334',
'properties': {
'name': '迪庆藏族自治州',
'cp': [
99.4592,
27.9327
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@W™Xwƒ™@akk@y›—k°īX¥›Uóķ¯w@n»UaVaUۃ¯ƒmV¼k‚™Þċô@n¯xÛÒm„V‚¯Ô@xƒ‚@šk™wm™Åa@ƒUa‚݁¯VŃyV„a@ÿšn»ÝVmank™mmÞÅôƒ@n£±›ğzÇmU¦™Vm„nÜmbn@°nV@xmzÅ@mºV¦k°ln¤š¼õô„n@xkƃIUxUš@Ťƒ¦VšmVkmkXW¤XzVx@ƚx™¼ƒÞ¯b@lVš™ĸގV„m¼XŽm¦V„ŽÞ@Ǝš¹Vón¥ÆKn„‚KX¯x@èĊȱłXšaÆxnlV@UÛlȻkğV¥„m²ljmÅÞĕƒƛm°„ÆmX¤mznƃŽV¦ÞVVb°bnÞWbnŽ°l@V„È@„‚VĵĊ±@ó„InxÆw„¥@£Þ›W¯ĸ£UƒUK‚ƒk±akkkbmWmÈķ„aÆÇU—ȃÆW@wmknmU¯'],
'encodeOffsets': [[
102702,
28401
]]
}
},
{
'type': 'Feature',
'id': '5306',
'properties': {
'name': '昭通市',
'cp': [
104.0955,
27.6031
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@mƒnK@wmƒUř¥mšóXǓŏmX@Ž—VƒmL@xţ™nk@mlUšŻÒğŋ@ƒL@mmLkm™š@b™XŎW¼ka¯lÇŹ¯aÇ»™ÝÝ_@m„@@a™@UklwUm@ak@ƒb™UmbmƒbV¯™ĕUƒƒšaVwÅaĉVmý™m¯xUkƒ@k¥VƒUXƒ¤VÈm`@„—ńÇÜ@Ākn‚ĔkƞÆĠ„™Þš‚U„VôƆÞI@ŽUxƦn„l@ĊĊnxUÒ°¦Vb¯WUnWŽIml@xn„Ubô¤‚¼ÈxlI„»šKVš„@ÈԂJkšUĖ±ÆVb@nœ„VÜVUVƒšL„wĠl„kn„Ġ@nx°¥Æ„²mUwƒ@m™mÅUl¯UњÑUm„Lll„Il±š@VkwƒW@w°@U»™kUóI°ƒ„»ĢтL„™š`nUĠ²lm„bôV@n„JUxƦX¦l@š‚ŎUƒV„@lV„KVřV£UaÞU™ƒnW@¯VU@ó™'],
'encodeOffsets': [[
107787,
28244
]]
}
},
{
'type': 'Feature',
'id': '5301',
'properties': {
'name': '昆明市',
'cp': [
102.9199,
25.4663
],
'childNum': 11
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@n@Vk‚VUn²°@xƒ°Vƒ@¯ÆV¼k@WŽ„Þ¯„@„@‚VVU„„Ģċ°k¼V„Ċxœ¤Ōœx°mVkƒÑȏšL‚°„x°Xœ°VmĊLVxUĖ°bX¦VW@kšȯlkn@„¥lnšƒ@»°Ñ¯VmlLUwVK@ƒV@ka@lmXb„UlVlkÈx@™„LVa„VV™wnƒmm@km™@mœIVaݏ@XƒVUݯU@ƒÝ£k»˜K@aUwkKV_ƒ¥„a@alU@nz°aV„È@@±lÛšk@wVakm@т¥„a„z‚@XxÆW@ÛX™@m@ƒy@aWw@kōĉJlbV„JƒzţÆUwVkmWkým@Ul™U@b¯wVºƒU™VUêšĠƒXUaUbVĊUŽWXUmkK™™WnUUU™V™ƒƒVV™Ý@kk±‚™¯ƒƒLkƒš±WkXlVklƒ@ƒwXbmLƒ›VUIVmk@Ubma@kkaVKUƒ™kmlXLWn™J¯ÒĊ°@zkºlLUŤn@@n›ô@lƁnmKkÈlxVw„@@mÈx˜@n²Uxl¤nbVxUzmJƒÒnš'],
'encodeOffsets': [[
104828,
25999
]]
}
},
{
'type': 'Feature',
'id': '5307',
'properties': {
'name': '丽江市',
'cp': [
100.448,
26.955
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l@™„@w°ÓUnƒÜÑ°w@mČóšÝlU»n°„„VÜUbVbm¼@Ž°xôĸœVW¦¯Ĭlœ˜@zll@b„šWxXš‚a„X@ÆĠÆaXwl@XaƦn¼˜Jn@mnKW¯È»V¯°ak™VanXVwl@VyUĕVU„bÈīlaUk°ƒk¯lƒ²V˜Ukƛô@ƒ„I@mVwĊa„™ƒVaka„™ÆbUŽVLšaXIWKUw™ƒ„aWÑÅKUaVk°ƒ@Uw„ƒ¯¥›XğÝLkm¯Iǃóѯ»™aƒnUl±UĵÿlóÅIƒaU‚±Ik¼UŽVb¯bWxn°™ÒVbnLlޚ@@`kbmIkŽVn„JmnXl›@Ux™bkn@xóLUxVŽƒKóóŐW™™aÅxƒŽ™wƒ@™nÅm™šƒV™„ƒôX„ƒLlVU¤ƒb¦m¼™Ž@ĀƒbU‚„zUƂ°ÞVb@„Æbnššx'],
'encodeOffsets': [[
101937,
28227
]]
}
},
{
'type': 'Feature',
'id': '5328',
'properties': {
'name': '西双版纳傣族自治州',
'cp': [
100.8984,
21.8628
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l²°ŽnÒlxÞ@„nWl„Lĸ™nbV¤V¦kbVV‚¦na„x°Vôa@„šb@lôXlWUšVXČKlmššU@bšWXXܛ°LÈa°LnU°‚ÞnšÑ„ġ°lƒnbšaƒ¯¯KWƒœó@kmK@UšĉV@k°„VV¹„a@y‚_ċl_nÓlL@anI@ƒóWl£VU—ƒl™kĕl™šKVw„U@™kVƒam¯ÅL@bƒ‚Ýk@Vn„UbÇbÝwÅ@ċ¥¯lk‚¼ÅŽ™Ò°b@¦nlUn@ŽÇV„mƁbWôU@ÝÅōm™¯ƒaU™™mk™WWw—@±ƒ™n¯U™è™a™Lƒ¯mƒL™škwƒl@°mnÈÒ¯šów@V™xƒĀU¤°Įƒ°Xl'],
'encodeOffsets': [[
102376,
22579
]]
}
},
{
'type': 'Feature',
'id': '5305',
'properties': {
'name': '保山市',
'cp': [
99.0637,
24.9884
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@X°„Il‚@¦ƒŽÈ¼m¼ÞaÞÅl„ÈxV¼šlVôÈÆlLޣȺlkUƒ‚ƒUw„¯UĕVwĊ@n¦mlnVĸIWÇ°LnƒUwl™šV„n@lnU˜„nJށl±U™¯LVUa°Ý„U„ÇĊýšVŤé„LlxÞL„ĀÜl²ĉ°KUaVƒ™_Źé@klw¯ƒlÅ—šW£ÅyU™W@wƒknal¥Uw@w™Uƒƒk¯ƒw¯aW±k_mJa™XVҙĠWb¯L¯Ý@w™wUƒ¯±Wk_ġƒwƒwōKmb@¤„bk°lĖƒô„UJƒšVnÅlťUš¯°VbnbWxX„m„ÞššWUĀ™L™yWzÛKmbUxVKkn݃kŽVšĀċ¤Ux„@Ž¯Žm@ƒ¦'],
'encodeOffsets': [[
100440,
25943
]]
}
},
{
'type': 'Feature',
'id': '5304',
'properties': {
'name': '玉溪市',
'cp': [
101.9312,
23.8898
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l„„L°xXlWxXnlw„a„ţlaÞlÆĬnX„ƒ°wVw„l„@m™nw°VVIXllKšbnnV°lbU„UJ@ÈÇKVb—š@bW„°Vk¦kaWb°škxV¤È¼U°ôI@llblš²š@‚@œó@mm@VţkKl¹@yĉ¯°ÑšIXmWKnkšlV„ULlb@lnbVal@UnVJœU‚„nKWa„x„@lkkUlW²X„™‚l„K°„šl²@lšÞUŽ„U‚„UšVšVVXmššlLVnXWVUĉVaVb„W™ğVéšU„VU¹W»aVa„aW™Xƒ‚_U¥nÇķ¯™@a™lUnǍUyk@@wW@kbW¦UKÝwUmmƒƒLUnVxUVVlk¯mmnƒmkÇaŤ¯I@ƒl@@aĉw°ĕmU—L±ƒk™ÆéX™ÜÛ@yÈç@™Çġ„Ýķ—XmmÝVՙƒ™lmnkbmWkb@nl@nŽmš¯VxkJmUJ„ml¯™°makVVnVƒ¦™Wƒ—Wmnl@xmn„l‚I„¤„n™xU„ƒVUŽmX@˜ƒb@zl@¦Ýþ'],
'encodeOffsets': [[
103703,
24874
]]
}
},
{
'type': 'Feature',
'id': '5333',
'properties': {
'name': '怒江傈僳族自治州',
'cp': [
99.1516,
26.5594
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@WyX£lWlnnUU™„¥@ţV™Vw„JlÅ@wƒmö󙻂£kml¯U¥n¹Æ@ny@wmU@¯mnamÛnƒšUV¥ÈnĠy²œm¤„@ÆónݚnmlnbÞU‚¥„aV£kU„KWƒ„óšƒmIU¥ókwVólƒ™»¯™ƒL™ƒk@m™naWKÛwóњw@a±n—@VbUJ›LkaƒÝXĉƒ™„UV`lI@lnXÆƑkKmxÛXmlUKVmU²Klw@a™aó„@n™KXwVKU¯V¥mUnkm¥ĉ@UxVĖƒ°Vx„V„klmޙkKWĀkVWšnl°Lnm@°ŽUxlV@nk¦™JVÈ°ŽVÒ@nX°@ÆlUômlnôƒ²nxmłnVV„¯x@Èm°XblVUšl°@xkXU¤WXX‚W„Xƃ„mkÅJmށw±bƒxUīkKmÅVUĖÝèV„kx@š›lX„lnk¤ƒLkŽ‚Ėk¦‚xUššL°‚¯Ė@LnK@b°xVI„¥Ua°Ñ@»nm@¹‚KŎÞÈWln²n'],
'encodeOffsets': [[
101071,
28891
]]
}
},
{
'type': 'Feature',
'id': '5331',
'properties': {
'name': '德宏傣族景颇族自治州',
'cp': [
98.1299,
24.5874
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„¥n@°@ƒVwČ£™ÿUlÞ„lmULVwnaÜLXyšzšKVÿ™XݙnƒWƒXwmaUa°¯V™ŦŽÆkUm„™VIƒ„ókĕl¯ƒa@£nama™@¯m¯œó@óyţbġkÅm±ÛammVkƒLwU`Wk@VƒkUmŃlUUKmbkkUVUwƒ¦óŽ°¼šbn°ô¦lºƒz@xšŽ¯„™@UŽ°nƒšU¤ţU„°VƆ@ÈmlnzÞl°¦Æa„xUxƒLkxWƒn@‚š²ŰšW„™‚@°ÈXl°Llx'],
'encodeOffsets': [[
100440,
25943
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/util/mapData/geoJson/zhe_jiang_geo', [], function () {
return {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'id': '3311',
'properties': {
'name': '丽水市',
'cp': [
119.5642,
28.1854
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@V‚bVl@Xn‚UXƒKVŽ@¦nxlUXV‚n„KVmnL‚UV@bn¤lLXK˜²„`nnlJXIVJ‚I„Vnn°KnnVll@VLXWV@UkVaVK„zV@„ƒšVVaUK@U»VUl@@WnUUƒ@wVLn@Vwl@XW°LVbn@VU‚@X„l`@XnKVbkl@XVJlUnlV„„xlL@lnXl„@VšUnV°°„@a„UVLXblWVXn@VVUV@Lš¤VLV„U‚VbnalLUUVX_laVa„WVzXKV@@a@KUmImmXama@kU@yVIUK‚aVa@kXK@aWU@VIUmW@kkVm„Uš@VwUa@K@k@Uƒ`@kUKVk@UV@VaUm²Vy@klUUWUkVmUa@_ƒKVaXa›XmƒU@mUlWkaUXƒ@mmkL@w™JƒnVVÅbWKXa™@@I@aƒJUUÇ@V„UL™W@akLmb@K@a™XXw@mƒVmUVkUy@£@aU@@VkUWm@kUKƒXUWU_mW@wkkmJUUkLWWUXƒW@IkJ@k@mW_kӃ_Ul™Lƒm@I@aUa¯m@kƒa¯LUJƒ@mVVxUb™a@LUKkXƒbm@Uak@@a@Um`ƒIUbUJ@nUVW@@LnVV@lšUbVlUX@`š@blXklW„Ušm„Xlm¦U@@V¯bml@š@nUb@llnn@VbX@lV@ŽUVULmU@JVn„bVbkb™VWxU@@nUVk@'],
'encodeOffsets': [[
121546,
28992
]]
}
},
{
'type': 'Feature',
'id': '3301',
'properties': {
'name': '杭州市',
'cp': [
119.5313,
29.8773
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@X@l„°KXXlW„b@²„`šššb‚I„šX`l@„@bWl@n@VnLUV@V„@°¦@šl@XVlU@š@xVbUb@Vkb@‚@XVJVz™J@Lޚ@VmLUxUJ@LU„Vx‚b„xXUl@VaÈw„b‚aÞa@Vl@XUVx@V@V„LlbnV„al@lb„Vnn‚LnKnL@VlbVJXalIšb@KUU@mVInJ˜„U„Vl@xUšVLnUš@UÞaV@lkV@UanK„L@UlKVUnbÆmn@@nUlVnVJl@@UXU„L@WVIVJVxVLXV@IÜKnbn@V¥V@@I@ƒƒ„y°b@UUwnk°ÆƨVlUšçXm›£aƒÇ™IkVƒ@WV@@aWIUWUIkb@WW@UnƒK@UU@kaWVkƒVIVVnU@UWVUV@VmVkKkWIkVWaULU`UImJUImm—U@ƒƒwmwUV™IUWVkUamaU@mV—kƒb@KVU@aVU@anKULVJ‚U@kÛU™JUV›kkƒVakU@ƒaVwkW@UWkXmWaULUaUK@XƒJUUmƒVU@UVƒUkJ@ImwmKU@k„@lU„W@@akKm„kamIkWl_UwVm@UkaVUUaƒ@UamakbWlkL@aUalU@mkL@U@U™lmK@XkKm@Ýakb@xƒnXbƒ`ƒnUUU@›™U@™wU@@ƒmKkkƒV¯U@lULUbVbUb@V‚a@L™ºÝb@bLmK™x@VUL@bk@mxULWl'],
'encodeOffsets': [[
121185,
30184
]]
}
},
{
'type': 'Feature',
'id': '3303',
'properties': {
'name': '温州市',
'cp': [
120.498,
27.8119
],
'childNum': 9
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@ll@xnXV`VX„WVL@lXnlV@UV@@b@¤VzUlnV„U@nWxšW@b@LnalK@bšXVKUƒÈ@VV„I@b@Jš@WbXLÆaUU„mšI@xlKnn„@VWlbkXV‚@n„VWnœ‚WbUb„L@`VbUnVlVXkV@lUz±‚VnUbU@@VUlVL@l„_@V@l@LVbV@XLV`VÈlxn@lU@aœaVV‚k„@XJ@nl@@LU`°LVb„L°a@a„UVy@anI@a„a‚nV@²wÜJX@VšVV°k„na@WVk„aWwU@m@™ƒkƒaUĕ™ÝšÝŤnÈa„aóI›»@±X™WkUķ@kV±kw™ƒUkWw„™UƒÝ»ÛkɳlImaUaWóXÿǬk‚UnWVmmk™KţnŏÞğl™„UlUx@XWb„V@JkXƒ°mb@VULVxUVk@@LWWk@WIkšƒUkJmUkVmI@yƒ@Ua™kLm‚U@mUUUkaVk™@mK@UlUU@UmKmbUUUJ@n@KVLUL@VkJWXX`mnULWlkL@JVLVb@°kxkU@LVŽ™V@„VLV`UL@VUX'],
'encodeOffsets': [[
122502,
28334
]]
}
},
{
'type': 'Feature',
'id': '3302',
'properties': {
'name': '宁波市',
'cp': [
121.5967,
29.6466
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@Ċ¦ĸĀ°‚nXÞVšKškƨƑźÿ°»n„@wô¥ÜbœU°ÆXÞWóçĉݱIUƒÈ¥@U°wÆ»²mm_@aXƒVKÞVlk@akk›̅@£X»VwƏXWa¯aȗb™KƽۃĊ™xƒLóŽk@ƒƒƒ@¯nƒKUL@xkL›ÑkWULUUmJUXVŽU@mŽUX¯@V`mbXbV@@nn¤WXšx@škJ@nVVUVl²UbÝVUVk@Wx@V@„ƒVXzmlaƒL@VlLU`„XUVVVUnl@VbnJlnUVVnƒlUKkbmnn„VxlJnxmbU@UL@KUV™X@xmb@lk@mnVVUš™è'],
'encodeOffsets': [[
123784,
30977
]]
}
},
{
'type': 'Feature',
'id': '3309',
'properties': {
'name': '舟山市',
'cp': [
122.2559,
30.2234
],
'childNum': 3
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@l΢ƒʠþÆVĢLĊƒǬXĊ܄XôV„ÑÆw„ƒlšƏÈóVĭVǓ@ƒĉwɛkmK@ĉXīWaĉUĵÝmƒ¯ĉƒwĉ±±nż¯x@VǦV„²JĊÞôèÝXÅW¯›VÛaó¦@xƒŽmŽ¯¼ŹĀ'],
'encodeOffsets': [[
124437,
30983
]]
}
},
{
'type': 'Feature',
'id': '3310',
'properties': {
'name': '台州市',
'cp': [
121.1353,
28.6688
],
'childNum': 7
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@lV„IVWVz@bXJl@Xal@°„nLll@nVxnV„K@UJVbƒ¦°„k`UIWJXnƚ@bUJ„Xl@lb„Wn@UzVV@bVVšmVnnJVXna‚bšKUKnUVVUnVLlKVLXa„Jm£@mU@WanaU_°@VWnV@UVWnIVVVKlXœÒlK@wVK„L°m„@„„l@ô„Kšw„ĉƾůUƒl£@»UƒVk„m@ƅUƒƒaÛIŏmUk@m„w@a™£ƒWk@ţšƒIm±@ankôUlaU™Uw¯ƒōaƒbÇbţm™ÞšÞVĖ„b„l@š@n‚VXxƒbUl@XmbƒŽ¯lUUU™W@ÛI±xU@mƒb@bmJ@bUzƒV@b¯bƒKUa¯KV_@Kk@@mWIƒ@lUU›b@bkVm@kwUÇU_WKU@Ux™@ƒVUnllX@Vn‚J@UXV@bWL@lUbbVLUJ@z‚V@lnbWbnnnJVŽ@L'],
'encodeOffsets': [[
123312,
29526
]]
}
},
{
'type': 'Feature',
'id': '3307',
'properties': {
'name': '金华市',
'cp': [
120.0037,
29.1028
],
'childNum': 8
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@nbVb„@VbUVlb@VUnVxk`lXnJlbnƒlL@bX@Vƒ@klƒV@nLnx@JlI„V‚U@VUVn„VV„I@WVLVbVKXbWnXl@VlXUx„b@ŽlVUbl„œlVUšIÜVnalKX@@bV@@aUUlUƒwUw„@naWW„UVaUUšaVb„LlxXJVk°ƒUƒlkU¥@k„a@LVlXLVlšVWznVn@lxšJl_@WX_@mVa„a@alU@kVVna„KVLlK„b@UUaVašbnUWmXU@k@yVI@ařWmXIVJl_¯ƒ„¥UaVI@ƒLmUUw@mkkmK¯ƒk@Wbk@WI@aUyUXƒJkU@bU@WLUyƒXUbkbW`UVVkKmbUaVUƒUK™£@KVUUUm@UWkXWaUKƒV@b¯ƒ¯mU™V@UkƒmW@kkKƒwUƒmkkVUI@WlkUamL@Wk_Wƒ@UVm@Ua¯KWXk@Uxm@UK@xV„mV@Xk@UVV¼@‚VLUb™Uƒ„U@ƒyULUbVlU@@XlVUVVbƒU@lXXVW@XUVl@@VUVƒÈn@VVU„@lVa@„U„mL@`X@`WL@VUX@lUL@xlx'],
'encodeOffsets': [[
122119,
29948
]]
}
},
{
'type': 'Feature',
'id': '3308',
'properties': {
'name': '衢州市',
'cp': [
118.6853,
28.8666
],
'childNum': 5
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@XkVKnwl@@aVK@UšwnL‚K@aÞaš¹@Kb@UVaUaVaVK@k°V„UllnL@„V@šxV@œšV@VV„m„_Wa„m@wlaÞbn@lL@WnLšk@V@VlK@nkVVb@blKXklakw@wVK@kVW@UXK@_‚W@_nKVƒ@ƒUb@kVƒUUm@„ÇVU@Uk@VU@WUXWW@k„VUaVUkU@WWXUKk@Ukmm¯LmmƒUJUIWJkImmƒ_—±WLkKm£@aVUmKUnƒLmWUkVmw@¥U„LVWm@WUka@UmmLmm@@bUX™@@WUIm@UVUK@UVUUU™VVJmb@b„Xn‚mVƒ¼nnn¦mJUVƒL„V@VW@UzUlVnUbl`UnVl@XU@kl@bmÈUx™Vk@@J@„ƒ¼W@ÅaVVnzmVƒ„@WJk@kWJ@ƒlXbWbXxmVnšlLXb@°lKVXnWšbWV„„X„mbV@Xl‚bšI@Kn@@x@šVLlm'],
'encodeOffsets': [[
121185,
30184
]]
}
},
{
'type': 'Feature',
'id': '3306',
'properties': {
'name': '绍兴市',
'cp': [
120.564,
29.7565
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@„x@„˜VnnVJnIVJV_VKXblUXJlŽlLUŽUnU@UVVX@ŽmVUUUJl„XUlbV@@V„LVmX@@XlaVJVXXJ@b‚@XU„@lUšJ„È‚bœ¤Ō„JšçV™UUnml@@kna@wšWVU@LVKV@namwkIUwmƒnmlaVL„kUmVUkmmIUak@VmUUVUƒWV_kK@U„K‚bnkWy„U@ƒ@UXwl@VUÞUVak±VUUU@mlI@™™wXWƒIWbUKkLUKVmUUmVVL™LambUWmIUm™nUU@aUUVym@ƒXkak@ƒW@z@lWVXnmV™aUbVb@VƒakLUKƒLmbUU@lkV@bƒbUb@nW`@Xk`™Ikwm@mUXy™UUkWKUk@Kƒb@lV¦klV„¯„UlWIkwƒKUa™bVVUbƒVXXmbƒ@Vx„xkVVV@bU@@aW@kLmb@lVUIVKmL@bUV@bUV@L„a˜lnUV@nbVbUlVXšJVUnx'],
'encodeOffsets': [[
122997,
30561
]]
}
},
{
'type': 'Feature',
'id': '3304',
'properties': {
'name': '嘉兴市',
'cp': [
120.9155,
30.6354
],
'childNum': 6
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@@blIX@@VÜVUnn@l‚k„lKnI°Þl`²LVKVbnbVaVLUVn@W¦@VkVVb„@VI„`@blLnL‚aX@„VVb@U‚@XlVa„@@kVaUKV»U_lWXUƒƒ@alb„k@VllnLVKn@@UVIUw@y°IVVXU@VV@lw„m@wVkƾaœJ‚LkΡƧƒ™l™LÝUmW¯ķÿĉ¥ƒIŋŽWn™èkVƧU¯ÅmlVx@V¯aƒz„Ž@„@JU@U¦m@@šnVmn@V„LV‚'],
'encodeOffsets': [[
123233,
31382
]]
}
},
{
'type': 'Feature',
'id': '3305',
'properties': {
'name': '湖州市',
'cp': [
119.8608,
30.7782
],
'childNum': 4
},
'geometry': {
'type': 'Polygon',
'coordinates': ['@@kLlƒkm@VmÛU@UW@kJ@aUƒK@UnmmU@™maÛL@JWUUKUwUIUJ@XƒKWV@Vk@UIUmVk@mm@ÅnmaUVkL@VƒKmLVbU@klU@ÝbV™@mVUKV™@wUkVƒ—ƒmIUJ@nVV@L™akJWbUIka@UmKmLKmmƒUUVk@@nmLX`WXUV@Ž@nUl™kmlU@Ub„„ƒxVVšIlV„Žšnn„@@n˜„UҚ@„°n@@xmb@„VbnV@šš„@b@`@L@L@x@blVklVbnnV@‚aXb°VlU@W„b°U„LXWVUV™„™VwÈwÜ»ĸaĠnUVw²X@V@lVU@wlaUUVm@knUV›'],
'encodeOffsets': [[
123379,
31500
]]
}
}
],
'UTF8Encoding': true
};
});define('echarts/chart/gauge', [
'require',
'../component/base',
'./base',
'../util/shape/GaugePointer',
'zrender/shape/Text',
'zrender/shape/Line',
'zrender/shape/Rectangle',
'zrender/shape/Circle',
'zrender/shape/Sector',
'../config',
'../util/ecData',
'../util/accMath',
'zrender/tool/util',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var GaugePointerShape = require('../util/shape/GaugePointer');
var TextShape = require('zrender/shape/Text');
var LineShape = require('zrender/shape/Line');
var RectangleShape = require('zrender/shape/Rectangle');
var CircleShape = require('zrender/shape/Circle');
var SectorShape = require('zrender/shape/Sector');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var accMath = require('../util/accMath');
var zrUtil = require('zrender/tool/util');
function Gauge(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
Gauge.prototype = {
type: ecConfig.CHART_TYPE_GAUGE,
_buildShape: function () {
var series = this.series;
this._paramsMap = {};
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === ecConfig.CHART_TYPE_GAUGE) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
this._buildSingleGauge(i);
this.buildMark(i);
}
}
this.addShapeList();
},
_buildSingleGauge: function (seriesIndex) {
var serie = this.series[seriesIndex];
this._paramsMap[seriesIndex] = {
center: this.parseCenter(this.zr, serie.center),
radius: this.parseRadius(this.zr, serie.radius),
startAngle: serie.startAngle.toFixed(2) - 0,
endAngle: serie.endAngle.toFixed(2) - 0
};
this._paramsMap[seriesIndex].totalAngle = this._paramsMap[seriesIndex].startAngle - this._paramsMap[seriesIndex].endAngle;
this._colorMap(seriesIndex);
this._buildAxisLine(seriesIndex);
this._buildSplitLine(seriesIndex);
this._buildAxisTick(seriesIndex);
this._buildAxisLabel(seriesIndex);
this._buildPointer(seriesIndex);
this._buildTitle(seriesIndex);
this._buildDetail(seriesIndex);
},
_buildAxisLine: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.axisLine.show) {
return;
}
var min = serie.min;
var total = serie.max - min;
var params = this._paramsMap[seriesIndex];
var center = params.center;
var startAngle = params.startAngle;
var totalAngle = params.totalAngle;
var colorArray = params.colorArray;
var lineStyle = serie.axisLine.lineStyle;
var lineWidth = this.parsePercent(lineStyle.width, params.radius[1]);
var r = params.radius[1];
var r0 = r - lineWidth;
var sectorShape;
var lastAngle = startAngle;
var newAngle;
for (var i = 0, l = colorArray.length; i < l; i++) {
newAngle = startAngle - totalAngle * (colorArray[i][0] - min) / total;
sectorShape = this._getSector(center, r0, r, newAngle, lastAngle, colorArray[i][1], lineStyle);
lastAngle = newAngle;
sectorShape._animationAdd = 'r';
ecData.set(sectorShape, 'seriesIndex', seriesIndex);
ecData.set(sectorShape, 'dataIndex', i);
this.shapeList.push(sectorShape);
}
},
_buildSplitLine: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.splitLine.show) {
return;
}
var params = this._paramsMap[seriesIndex];
var splitNumber = serie.splitNumber;
var min = serie.min;
var total = serie.max - min;
var splitLine = serie.splitLine;
var length = this.parsePercent(splitLine.length, params.radius[1]);
var lineStyle = splitLine.lineStyle;
var color = lineStyle.color;
var center = params.center;
var startAngle = params.startAngle * Math.PI / 180;
var totalAngle = params.totalAngle * Math.PI / 180;
var r = params.radius[1];
var r0 = r - length;
var angle;
var sinAngle;
var cosAngle;
for (var i = 0; i <= splitNumber; i++) {
angle = startAngle - totalAngle / splitNumber * i;
sinAngle = Math.sin(angle);
cosAngle = Math.cos(angle);
this.shapeList.push(new LineShape({
zlevel: this._zlevelBase + 1,
hoverable: false,
style: {
xStart: center[0] + cosAngle * r,
yStart: center[1] - sinAngle * r,
xEnd: center[0] + cosAngle * r0,
yEnd: center[1] - sinAngle * r0,
strokeColor: color === 'auto' ? this._getColor(seriesIndex, min + total / splitNumber * i) : color,
lineType: lineStyle.type,
lineWidth: lineStyle.width,
shadowColor: lineStyle.shadowColor,
shadowBlur: lineStyle.shadowBlur,
shadowOffsetX: lineStyle.shadowOffsetX,
shadowOffsetY: lineStyle.shadowOffsetY
}
}));
}
},
_buildAxisTick: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.axisTick.show) {
return;
}
var params = this._paramsMap[seriesIndex];
var splitNumber = serie.splitNumber;
var min = serie.min;
var total = serie.max - min;
var axisTick = serie.axisTick;
var tickSplit = axisTick.splitNumber;
var length = this.parsePercent(axisTick.length, params.radius[1]);
var lineStyle = axisTick.lineStyle;
var color = lineStyle.color;
var center = params.center;
var startAngle = params.startAngle * Math.PI / 180;
var totalAngle = params.totalAngle * Math.PI / 180;
var r = params.radius[1];
var r0 = r - length;
var angle;
var sinAngle;
var cosAngle;
for (var i = 0, l = splitNumber * tickSplit; i <= l; i++) {
if (i % tickSplit === 0) {
continue;
}
angle = startAngle - totalAngle / l * i;
sinAngle = Math.sin(angle);
cosAngle = Math.cos(angle);
this.shapeList.push(new LineShape({
zlevel: this._zlevelBase + 1,
hoverable: false,
style: {
xStart: center[0] + cosAngle * r,
yStart: center[1] - sinAngle * r,
xEnd: center[0] + cosAngle * r0,
yEnd: center[1] - sinAngle * r0,
strokeColor: color === 'auto' ? this._getColor(seriesIndex, min + total / l * i) : color,
lineType: lineStyle.type,
lineWidth: lineStyle.width,
shadowColor: lineStyle.shadowColor,
shadowBlur: lineStyle.shadowBlur,
shadowOffsetX: lineStyle.shadowOffsetX,
shadowOffsetY: lineStyle.shadowOffsetY
}
}));
}
},
_buildAxisLabel: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.axisLabel.show) {
return;
}
var splitNumber = serie.splitNumber;
var min = serie.min;
var total = serie.max - min;
var textStyle = serie.axisLabel.textStyle;
var textFont = this.getFont(textStyle);
var color = textStyle.color;
var params = this._paramsMap[seriesIndex];
var center = params.center;
var startAngle = params.startAngle;
var totalAngle = params.totalAngle;
var r0 = params.radius[1] - this.parsePercent(serie.splitLine.length, params.radius[1]) - 10;
var angle;
var sinAngle;
var cosAngle;
var value;
for (var i = 0; i <= splitNumber; i++) {
value = accMath.accAdd(min, accMath.accMul(accMath.accDiv(total, splitNumber), i));
angle = startAngle - totalAngle / splitNumber * i;
sinAngle = Math.sin(angle * Math.PI / 180);
cosAngle = Math.cos(angle * Math.PI / 180);
angle = (angle + 360) % 360;
this.shapeList.push(new TextShape({
zlevel: this._zlevelBase + 1,
hoverable: false,
style: {
x: center[0] + cosAngle * r0,
y: center[1] - sinAngle * r0,
color: color === 'auto' ? this._getColor(seriesIndex, value) : color,
text: this._getLabelText(serie.axisLabel.formatter, value),
textAlign: angle >= 110 && angle <= 250 ? 'left' : angle <= 70 || angle >= 290 ? 'right' : 'center',
textBaseline: angle >= 10 && angle <= 170 ? 'top' : angle >= 190 && angle <= 350 ? 'bottom' : 'middle',
textFont: textFont,
shadowColor: textStyle.shadowColor,
shadowBlur: textStyle.shadowBlur,
shadowOffsetX: textStyle.shadowOffsetX,
shadowOffsetY: textStyle.shadowOffsetY
}
}));
}
},
_buildPointer: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.pointer.show) {
return;
}
var total = serie.max - serie.min;
var pointer = serie.pointer;
var params = this._paramsMap[seriesIndex];
var length = this.parsePercent(pointer.length, params.radius[1]);
var width = this.parsePercent(pointer.width, params.radius[1]);
var center = params.center;
var value = this._getValue(seriesIndex);
value = value < serie.max ? value : serie.max;
var angle = (params.startAngle - params.totalAngle / total * (value - serie.min)) * Math.PI / 180;
var color = pointer.color === 'auto' ? this._getColor(seriesIndex, value) : pointer.color;
var pointShape = new GaugePointerShape({
zlevel: this._zlevelBase + 1,
style: {
x: center[0],
y: center[1],
r: length,
startAngle: params.startAngle * Math.PI / 180,
angle: angle,
color: color,
width: width,
shadowColor: pointer.shadowColor,
shadowBlur: pointer.shadowBlur,
shadowOffsetX: pointer.shadowOffsetX,
shadowOffsetY: pointer.shadowOffsetY
},
highlightStyle: {
brushType: 'fill',
width: width > 2 ? 2 : width / 2,
color: '#fff'
}
});
ecData.pack(pointShape, this.series[seriesIndex], seriesIndex, this.series[seriesIndex].data[0], 0, this.series[seriesIndex].data[0].name, value);
this.shapeList.push(pointShape);
this.shapeList.push(new CircleShape({
zlevel: this._zlevelBase + 2,
hoverable: false,
style: {
x: center[0],
y: center[1],
r: pointer.width / 2.5,
color: '#fff'
}
}));
},
_buildTitle: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.title.show) {
return;
}
var data = serie.data[0];
var name = data.name != null ? data.name : '';
if (name !== '') {
var title = serie.title;
var offsetCenter = title.offsetCenter;
var textStyle = title.textStyle;
var textColor = textStyle.color;
var params = this._paramsMap[seriesIndex];
var x = params.center[0] + this.parsePercent(offsetCenter[0], params.radius[1]);
var y = params.center[1] + this.parsePercent(offsetCenter[1], params.radius[1]);
this.shapeList.push(new TextShape({
zlevel: this._zlevelBase + (Math.abs(x - params.center[0]) + Math.abs(y - params.center[1])) < textStyle.fontSize * 2 ? 2 : 1,
hoverable: false,
style: {
x: x,
y: y,
color: textColor === 'auto' ? this._getColor(seriesIndex) : textColor,
text: name,
textAlign: 'center',
textFont: this.getFont(textStyle),
shadowColor: textStyle.shadowColor,
shadowBlur: textStyle.shadowBlur,
shadowOffsetX: textStyle.shadowOffsetX,
shadowOffsetY: textStyle.shadowOffsetY
}
}));
}
},
_buildDetail: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (!serie.detail.show) {
return;
}
var detail = serie.detail;
var offsetCenter = detail.offsetCenter;
var color = detail.backgroundColor;
var textStyle = detail.textStyle;
var textColor = textStyle.color;
var params = this._paramsMap[seriesIndex];
var value = this._getValue(seriesIndex);
var x = params.center[0] - detail.width / 2 + this.parsePercent(offsetCenter[0], params.radius[1]);
var y = params.center[1] + this.parsePercent(offsetCenter[1], params.radius[1]);
this.shapeList.push(new RectangleShape({
zlevel: this._zlevelBase + (Math.abs(x + detail.width / 2 - params.center[0]) + Math.abs(y + detail.height / 2 - params.center[1])) < textStyle.fontSize ? 2 : 1,
hoverable: false,
style: {
x: x,
y: y,
width: detail.width,
height: detail.height,
brushType: 'both',
color: color === 'auto' ? this._getColor(seriesIndex, value) : color,
lineWidth: detail.borderWidth,
strokeColor: detail.borderColor,
shadowColor: detail.shadowColor,
shadowBlur: detail.shadowBlur,
shadowOffsetX: detail.shadowOffsetX,
shadowOffsetY: detail.shadowOffsetY,
text: this._getLabelText(detail.formatter, value),
textFont: this.getFont(textStyle),
textPosition: 'inside',
textColor: textColor === 'auto' ? this._getColor(seriesIndex, value) : textColor
}
}));
},
_getValue: function (seriesIndex) {
var data = this.series[seriesIndex].data[0];
return data.value != null ? data.value : data;
},
_colorMap: function (seriesIndex) {
var serie = this.series[seriesIndex];
var min = serie.min;
var total = serie.max - min;
var color = serie.axisLine.lineStyle.color;
if (!(color instanceof Array)) {
color = [[
1,
color
]];
}
var colorArray = [];
for (var i = 0, l = color.length; i < l; i++) {
colorArray.push([
color[i][0] * total + min,
color[i][1]
]);
}
this._paramsMap[seriesIndex].colorArray = colorArray;
},
_getColor: function (seriesIndex, value) {
if (value == null) {
value = this._getValue(seriesIndex);
}
var colorArray = this._paramsMap[seriesIndex].colorArray;
for (var i = 0, l = colorArray.length; i < l; i++) {
if (colorArray[i][0] >= value) {
return colorArray[i][1];
}
}
return colorArray[colorArray.length - 1][1];
},
_getSector: function (center, r0, r, startAngle, endAngle, color, lineStyle) {
return new SectorShape({
zlevel: this._zlevelBase,
hoverable: false,
style: {
x: center[0],
y: center[1],
r0: r0,
r: r,
startAngle: startAngle,
endAngle: endAngle,
brushType: 'fill',
color: color,
shadowColor: lineStyle.shadowColor,
shadowBlur: lineStyle.shadowBlur,
shadowOffsetX: lineStyle.shadowOffsetX,
shadowOffsetY: lineStyle.shadowOffsetY
}
});
},
_getLabelText: function (formatter, value) {
if (formatter) {
if (typeof formatter === 'function') {
return formatter.call(this.myChart, value);
} else if (typeof formatter === 'string') {
return formatter.replace('{value}', value);
}
}
return value;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
}
};
zrUtil.inherits(Gauge, ChartBase);
zrUtil.inherits(Gauge, ComponentBase);
require('../chart').define('gauge', Gauge);
return Gauge;
});define('echarts/util/shape/GaugePointer', [
'require',
'zrender/shape/Base',
'zrender/tool/util',
'./normalIsCover'
], function (require) {
var Base = require('zrender/shape/Base');
var zrUtil = require('zrender/tool/util');
function GaugePointer(options) {
Base.call(this, options);
}
GaugePointer.prototype = {
type: 'gauge-pointer',
buildPath: function (ctx, style) {
var r = style.r;
var width = style.width;
var angle = style.angle;
var x = style.x - Math.cos(angle) * width * (width >= r / 3 ? 1 : 2);
var y = style.y + Math.sin(angle) * width * (width >= r / 3 ? 1 : 2);
angle = style.angle - Math.PI / 2;
ctx.moveTo(x, y);
ctx.lineTo(style.x + Math.cos(angle) * width, style.y - Math.sin(angle) * width);
ctx.lineTo(style.x + Math.cos(style.angle) * r, style.y - Math.sin(style.angle) * r);
ctx.lineTo(style.x - Math.cos(angle) * width, style.y + Math.sin(angle) * width);
ctx.lineTo(x, y);
return;
},
getRect: function (style) {
if (style.__rect) {
return style.__rect;
}
var width = style.width * 2;
var xStart = style.x;
var yStart = style.y;
var xEnd = xStart + Math.cos(style.angle) * style.r;
var yEnd = yStart - Math.sin(style.angle) * style.r;
style.__rect = {
x: Math.min(xStart, xEnd) - width,
y: Math.min(yStart, yEnd) - width,
width: Math.abs(xStart - xEnd) + width,
height: Math.abs(yStart - yEnd) + width
};
return style.__rect;
},
isCover: require('./normalIsCover')
};
zrUtil.inherits(GaugePointer, Base);
return GaugePointer;
});define('echarts/chart/funnel', [
'require',
'../component/base',
'./base',
'zrender/shape/Text',
'zrender/shape/Line',
'zrender/shape/Polygon',
'../config',
'../util/ecData',
'../util/number',
'zrender/tool/util',
'zrender/tool/color',
'zrender/tool/area',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var TextShape = require('zrender/shape/Text');
var LineShape = require('zrender/shape/Line');
var PolygonShape = require('zrender/shape/Polygon');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var number = require('../util/number');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
var zrArea = require('zrender/tool/area');
function Funnel(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
this.refresh(option);
}
Funnel.prototype = {
type: ecConfig.CHART_TYPE_FUNNEL,
_buildShape: function () {
var series = this.series;
var legend = this.component.legend;
this._paramsMap = {};
this._selected = {};
this.selectedMap = {};
var serieName;
for (var i = 0, l = series.length; i < l; i++) {
if (series[i].type === ecConfig.CHART_TYPE_FUNNEL) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
serieName = series[i].name || '';
this.selectedMap[serieName] = legend ? legend.isSelected(serieName) : true;
if (!this.selectedMap[serieName]) {
continue;
}
this._buildSingleFunnel(i);
this.buildMark(i);
}
}
this.addShapeList();
},
_buildSingleFunnel: function (seriesIndex) {
var legend = this.component.legend;
var serie = this.series[seriesIndex];
var data = this._mapData(seriesIndex);
var location = this._getLocation(seriesIndex);
this._paramsMap[seriesIndex] = {
location: location,
data: data
};
var itemName;
var total = 0;
var selectedData = [];
for (var i = 0, l = data.length; i < l; i++) {
itemName = data[i].name;
if (legend) {
this.selectedMap[itemName] = legend.isSelected(itemName);
} else {
this.selectedMap[itemName] = true;
}
if (this.selectedMap[itemName] && !isNaN(data[i].value)) {
selectedData.push(data[i]);
total++;
}
}
if (total === 0) {
return;
}
var funnelCase = this._buildFunnelCase(seriesIndex);
var align = serie.funnelAlign;
var gap = serie.gap;
var height = total > 1 ? (location.height - (total - 1) * gap) / total : location.height;
var width;
var lastY = location.y;
var lastWidth = serie.sort === 'descending' ? this._getItemWidth(seriesIndex, selectedData[0].value) : number.parsePercent(serie.minSize, location.width);
var next = serie.sort === 'descending' ? 1 : 0;
var centerX = location.centerX;
var pointList = [];
var x;
var polygon;
var lastPolygon;
for (var i = 0, l = selectedData.length; i < l; i++) {
itemName = selectedData[i].name;
if (this.selectedMap[itemName] && !isNaN(selectedData[i].value)) {
width = i <= l - 2 ? this._getItemWidth(seriesIndex, selectedData[i + next].value) : serie.sort === 'descending' ? number.parsePercent(serie.minSize, location.width) : number.parsePercent(serie.maxSize, location.width);
switch (align) {
case 'left':
x = location.x;
break;
case 'right':
x = location.x + location.width - lastWidth;
break;
default:
x = centerX - lastWidth / 2;
}
polygon = this._buildItem(seriesIndex, selectedData[i]._index, legend ? legend.getColor(itemName) : this.zr.getColor(selectedData[i]._index), x, lastY, lastWidth, width, height, align);
lastY += height + gap;
lastPolygon = polygon.style.pointList;
pointList.unshift([
lastPolygon[0][0] - 10,
lastPolygon[0][1]
]);
pointList.push([
lastPolygon[1][0] + 10,
lastPolygon[1][1]
]);
if (i === 0) {
if (lastWidth === 0) {
lastPolygon = pointList.pop();
align == 'center' && (pointList[0][0] += 10);
align == 'right' && (pointList[0][0] = lastPolygon[0]);
pointList[0][1] -= align == 'center' ? 10 : 15;
if (l == 1) {
lastPolygon = polygon.style.pointList;
}
} else {
pointList[pointList.length - 1][1] -= 5;
pointList[0][1] -= 5;
}
}
lastWidth = width;
}
}
if (funnelCase) {
pointList.unshift([
lastPolygon[3][0] - 10,
lastPolygon[3][1]
]);
pointList.push([
lastPolygon[2][0] + 10,
lastPolygon[2][1]
]);
if (lastWidth === 0) {
lastPolygon = pointList.pop();
align == 'center' && (pointList[0][0] += 10);
align == 'right' && (pointList[0][0] = lastPolygon[0]);
pointList[0][1] += align == 'center' ? 10 : 15;
} else {
pointList[pointList.length - 1][1] += 5;
pointList[0][1] += 5;
}
funnelCase.style.pointList = pointList;
}
},
_buildFunnelCase: function (seriesIndex) {
var serie = this.series[seriesIndex];
if (this.deepQuery([
serie,
this.option
], 'calculable')) {
var location = this._paramsMap[seriesIndex].location;
var gap = 10;
var funnelCase = {
hoverable: false,
style: {
pointListd: [
[
location.x - gap,
location.y - gap
],
[
location.x + location.width + gap,
location.y - gap
],
[
location.x + location.width + gap,
location.y + location.height + gap
],
[
location.x - gap,
location.y + location.height + gap
]
],
brushType: 'stroke',
lineWidth: 1,
strokeColor: serie.calculableHolderColor || this.ecTheme.calculableHolderColor
}
};
ecData.pack(funnelCase, serie, seriesIndex, undefined, -1);
this.setCalculable(funnelCase);
funnelCase = new PolygonShape(funnelCase);
this.shapeList.push(funnelCase);
return funnelCase;
}
},
_getLocation: function (seriesIndex) {
var gridOption = this.series[seriesIndex];
var zrWidth = this.zr.getWidth();
var zrHeight = this.zr.getHeight();
var x = this.parsePercent(gridOption.x, zrWidth);
var y = this.parsePercent(gridOption.y, zrHeight);
var width;
if (gridOption.width == null) {
width = zrWidth - x - this.parsePercent(gridOption.x2, zrWidth);
} else {
width = this.parsePercent(gridOption.width, zrWidth);
}
var height;
if (gridOption.height == null) {
height = zrHeight - y - this.parsePercent(gridOption.y2, zrHeight);
} else {
height = this.parsePercent(gridOption.height, zrHeight);
}
return {
x: x,
y: y,
width: width,
height: height,
centerX: x + width / 2
};
},
_mapData: function (seriesIndex) {
var serie = this.series[seriesIndex];
var funnelData = zrUtil.clone(serie.data);
for (var i = 0, l = funnelData.length; i < l; i++) {
funnelData[i]._index = i;
}
function numDescending(a, b) {
if (a.value === '-') {
return 1;
} else if (b.value === '-') {
return -1;
}
return b.value - a.value;
}
function numAscending(a, b) {
return -numDescending(a, b);
}
if (serie.sort != 'none') {
funnelData.sort(serie.sort === 'descending' ? numDescending : numAscending);
}
return funnelData;
},
_buildItem: function (seriesIndex, dataIndex, defaultColor, x, y, topWidth, bottomWidth, height, align) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var polygon = this.getPolygon(seriesIndex, dataIndex, defaultColor, x, y, topWidth, bottomWidth, height, align);
ecData.pack(polygon, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, series[seriesIndex].data[dataIndex].name);
this.shapeList.push(polygon);
var label = this.getLabel(seriesIndex, dataIndex, defaultColor, x, y, topWidth, bottomWidth, height, align);
ecData.pack(label, series[seriesIndex], seriesIndex, series[seriesIndex].data[dataIndex], dataIndex, series[seriesIndex].data[dataIndex].name);
this.shapeList.push(label);
if (!this._needLabel(serie, data, false)) {
label.invisible = true;
}
var labelLine = this.getLabelLine(seriesIndex, dataIndex, defaultColor, x, y, topWidth, bottomWidth, height, align);
this.shapeList.push(labelLine);
if (!this._needLabelLine(serie, data, false)) {
labelLine.invisible = true;
}
var polygonHoverConnect = [];
var labelHoverConnect = [];
if (this._needLabelLine(serie, data, true)) {
polygonHoverConnect.push(labelLine.id);
labelHoverConnect.push(labelLine.id);
}
if (this._needLabel(serie, data, true)) {
polygonHoverConnect.push(label.id);
labelHoverConnect.push(polygon.id);
}
polygon.hoverConnect = polygonHoverConnect;
label.hoverConnect = labelHoverConnect;
return polygon;
},
_getItemWidth: function (seriesIndex, value) {
var serie = this.series[seriesIndex];
var location = this._paramsMap[seriesIndex].location;
var min = serie.min;
var max = serie.max;
var minSize = number.parsePercent(serie.minSize, location.width);
var maxSize = number.parsePercent(serie.maxSize, location.width);
return value * (maxSize - minSize) / (max - min);
},
getPolygon: function (seriesIndex, dataIndex, defaultColor, xLT, y, topWidth, bottomWidth, height, align) {
var serie = this.series[seriesIndex];
var data = serie.data[dataIndex];
var queryTarget = [
data,
serie
];
var normal = this.deepMerge(queryTarget, 'itemStyle.normal') || {};
var emphasis = this.deepMerge(queryTarget, 'itemStyle.emphasis') || {};
var normalColor = this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data) || defaultColor;
var emphasisColor = this.getItemStyleColor(emphasis.color, seriesIndex, dataIndex, data) || (typeof normalColor === 'string' ? zrColor.lift(normalColor, -0.2) : normalColor);
var xLB;
switch (align) {
case 'left':
xLB = xLT;
break;
case 'right':
xLB = xLT + (topWidth - bottomWidth);
break;
default:
xLB = xLT + (topWidth - bottomWidth) / 2;
break;
}
var polygon = {
zlevel: this._zlevelBase,
clickable: this.deepQuery(queryTarget, 'clickable'),
style: {
pointList: [
[
xLT,
y
],
[
xLT + topWidth,
y
],
[
xLB + bottomWidth,
y + height
],
[
xLB,
y + height
]
],
brushType: 'both',
color: normalColor,
lineWidth: normal.borderWidth,
strokeColor: normal.borderColor
},
highlightStyle: {
color: emphasisColor,
lineWidth: emphasis.borderWidth,
strokeColor: emphasis.borderColor
}
};
if (this.deepQuery([
data,
serie,
this.option
], 'calculable')) {
this.setCalculable(polygon);
polygon.draggable = true;
}
return new PolygonShape(polygon);
},
getLabel: function (seriesIndex, dataIndex, defaultColor, x, y, topWidth, bottomWidth, height, align) {
var serie = this.series[seriesIndex];
var data = serie.data[dataIndex];
var location = this._paramsMap[seriesIndex].location;
var itemStyle = zrUtil.merge(zrUtil.clone(data.itemStyle) || {}, serie.itemStyle);
var status = 'normal';
var labelControl = itemStyle[status].label;
var textStyle = labelControl.textStyle || {};
var lineLength = itemStyle[status].labelLine.length;
var text = this.getLabelText(seriesIndex, dataIndex, status);
var textFont = this.getFont(textStyle);
var textAlign;
var textColor = defaultColor;
labelControl.position = labelControl.position || itemStyle.normal.label.position;
if (labelControl.position === 'inner' || labelControl.position === 'inside' || labelControl.position === 'center') {
textAlign = align;
textColor = Math.max(topWidth, bottomWidth) / 2 > zrArea.getTextWidth(text, textFont) ? '#fff' : zrColor.reverse(defaultColor);
} else if (labelControl.position === 'left') {
textAlign = 'right';
} else {
textAlign = 'left';
}
var textShape = {
zlevel: this._zlevelBase + 1,
style: {
x: this._getLabelPoint(labelControl.position, x, location, topWidth, bottomWidth, lineLength, align),
y: y + height / 2,
color: textStyle.color || textColor,
text: text,
textAlign: textStyle.align || textAlign,
textBaseline: textStyle.baseline || 'middle',
textFont: textFont
}
};
status = 'emphasis';
labelControl = itemStyle[status].label || labelControl;
textStyle = labelControl.textStyle || textStyle;
lineLength = itemStyle[status].labelLine.length || lineLength;
labelControl.position = labelControl.position || itemStyle.normal.label.position;
text = this.getLabelText(seriesIndex, dataIndex, status);
textFont = this.getFont(textStyle);
textColor = defaultColor;
if (labelControl.position === 'inner' || labelControl.position === 'inside' || labelControl.position === 'center') {
textAlign = align;
textColor = Math.max(topWidth, bottomWidth) / 2 > zrArea.getTextWidth(text, textFont) ? '#fff' : zrColor.reverse(defaultColor);
} else if (labelControl.position === 'left') {
textAlign = 'right';
} else {
textAlign = 'left';
}
textShape.highlightStyle = {
x: this._getLabelPoint(labelControl.position, x, location, topWidth, bottomWidth, lineLength, align),
color: textStyle.color || textColor,
text: text,
textAlign: textStyle.align || textAlign,
textFont: textFont,
brushType: 'fill'
};
return new TextShape(textShape);
},
getLabelText: function (seriesIndex, dataIndex, status) {
var series = this.series;
var serie = series[seriesIndex];
var data = serie.data[dataIndex];
var formatter = this.deepQuery([
data,
serie
], 'itemStyle.' + status + '.label.formatter');
if (formatter) {
if (typeof formatter === 'function') {
return formatter.call(this.myChart, serie.name, data.name, data.value);
} else if (typeof formatter === 'string') {
formatter = formatter.replace('{a}', '{a0}').replace('{b}', '{b0}').replace('{c}', '{c0}');
formatter = formatter.replace('{a0}', serie.name).replace('{b0}', data.name).replace('{c0}', data.value);
return formatter;
}
} else {
return data.name;
}
},
getLabelLine: function (seriesIndex, dataIndex, defaultColor, x, y, topWidth, bottomWidth, height, align) {
var serie = this.series[seriesIndex];
var data = serie.data[dataIndex];
var location = this._paramsMap[seriesIndex].location;
var itemStyle = zrUtil.merge(zrUtil.clone(data.itemStyle) || {}, serie.itemStyle);
var status = 'normal';
var labelLineControl = itemStyle[status].labelLine;
var lineLength = itemStyle[status].labelLine.length;
var lineStyle = labelLineControl.lineStyle || {};
var labelControl = itemStyle[status].label;
labelControl.position = labelControl.position || itemStyle.normal.label.position;
var lineShape = {
zlevel: this._zlevelBase + 1,
hoverable: false,
style: {
xStart: this._getLabelLineStartPoint(x, location, topWidth, bottomWidth, align),
yStart: y + height / 2,
xEnd: this._getLabelPoint(labelControl.position, x, location, topWidth, bottomWidth, lineLength, align),
yEnd: y + height / 2,
strokeColor: lineStyle.color || defaultColor,
lineType: lineStyle.type,
lineWidth: lineStyle.width
}
};
status = 'emphasis';
labelLineControl = itemStyle[status].labelLine || labelLineControl;
lineLength = itemStyle[status].labelLine.length || lineLength;
lineStyle = labelLineControl.lineStyle || lineStyle;
labelControl = itemStyle[status].label || labelControl;
labelControl.position = labelControl.position;
lineShape.highlightStyle = {
xEnd: this._getLabelPoint(labelControl.position, x, location, topWidth, bottomWidth, lineLength, align),
strokeColor: lineStyle.color || defaultColor,
lineType: lineStyle.type,
lineWidth: lineStyle.width
};
return new LineShape(lineShape);
},
_getLabelPoint: function (position, x, location, topWidth, bottomWidth, lineLength, align) {
position = position === 'inner' || position === 'inside' ? 'center' : position;
switch (position) {
case 'center':
return align == 'center' ? x + topWidth / 2 : align == 'left' ? x + 10 : x + topWidth - 10;
case 'left':
if (lineLength === 'auto') {
return location.x - 10;
} else {
return align == 'center' ? location.centerX - Math.max(topWidth, bottomWidth) / 2 - lineLength : align == 'right' ? x - (topWidth < bottomWidth ? bottomWidth - topWidth : 0) - lineLength : location.x - lineLength;
}
break;
default:
if (lineLength === 'auto') {
return location.x + location.width + 10;
} else {
return align == 'center' ? location.centerX + Math.max(topWidth, bottomWidth) / 2 + lineLength : align == 'right' ? location.x + location.width + lineLength : x + Math.max(topWidth, bottomWidth) + lineLength;
}
}
},
_getLabelLineStartPoint: function (x, location, topWidth, bottomWidth, align) {
return align == 'center' ? location.centerX : topWidth < bottomWidth ? x + Math.min(topWidth, bottomWidth) / 2 : x + Math.max(topWidth, bottomWidth) / 2;
},
_needLabel: function (serie, data, isEmphasis) {
return this.deepQuery([
data,
serie
], 'itemStyle.' + (isEmphasis ? 'emphasis' : 'normal') + '.label.show');
},
_needLabelLine: function (serie, data, isEmphasis) {
return this.deepQuery([
data,
serie
], 'itemStyle.' + (isEmphasis ? 'emphasis' : 'normal') + '.labelLine.show');
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
}
};
zrUtil.inherits(Funnel, ChartBase);
zrUtil.inherits(Funnel, ComponentBase);
require('../chart').define('funnel', Funnel);
return Funnel;
});define('echarts/chart/eventRiver', [
'require',
'../component/base',
'./base',
'../layout/eventRiver',
'zrender/shape/Polygon',
'../component/axis',
'../component/grid',
'../component/dataZoom',
'../config',
'../util/ecData',
'../util/date',
'zrender/tool/util',
'zrender/tool/color',
'../chart'
], function (require) {
var ComponentBase = require('../component/base');
var ChartBase = require('./base');
var eventRiverLayout = require('../layout/eventRiver');
var PolygonShape = require('zrender/shape/Polygon');
require('../component/axis');
require('../component/grid');
require('../component/dataZoom');
var ecConfig = require('../config');
var ecData = require('../util/ecData');
var ecDate = require('../util/date');
var zrUtil = require('zrender/tool/util');
var zrColor = require('zrender/tool/color');
function EventRiver(ecTheme, messageCenter, zr, option, myChart) {
ComponentBase.call(this, ecTheme, messageCenter, zr, option, myChart);
ChartBase.call(this);
var self = this;
self._ondragend = function () {
self.isDragend = true;
};
this.refresh(option);
}
EventRiver.prototype = {
type: ecConfig.CHART_TYPE_EVENTRIVER,
_buildShape: function () {
var series = this.series;
this.selectedMap = {};
this._dataPreprocessing();
var legend = this.component.legend;
var eventRiverSeries = [];
for (var i = 0; i < series.length; i++) {
if (series[i].type === this.type) {
series[i] = this.reformOption(series[i]);
this.legendHoverLink = series[i].legendHoverLink || this.legendHoverLink;
var serieName = series[i].name || '';
this.selectedMap[serieName] = legend ? legend.isSelected(serieName) : true;
if (!this.selectedMap[serieName]) {
continue;
}
this.buildMark(i);
eventRiverSeries.push(this.series[i]);
}
}
eventRiverLayout(eventRiverSeries, this._intervalX, this.component.grid.getArea());
this._drawEventRiver();
this.addShapeList();
},
_dataPreprocessing: function () {
var series = this.series;
var xAxis;
var evolutionList;
for (var i = 0, iLen = series.length; i < iLen; i++) {
if (series[i].type === this.type) {
xAxis = this.component.xAxis.getAxis(series[i].xAxisIndex || 0);
for (var j = 0, jLen = series[i].eventList.length; j < jLen; j++) {
evolutionList = series[i].eventList[j].evolution;
for (var k = 0, kLen = evolutionList.length; k < kLen; k++) {
evolutionList[k].timeScale = xAxis.getCoord(ecDate.getNewDate(evolutionList[k].time) - 0);
evolutionList[k].valueScale = Math.pow(evolutionList[k].value, 0.8);
}
}
}
}
this._intervalX = Math.round(this.component.grid.getWidth() / 40);
},
_drawEventRiver: function () {
var series = this.series;
for (var i = 0; i < series.length; i++) {
var serieName = series[i].name || '';
if (series[i].type === this.type && this.selectedMap[serieName]) {
for (var j = 0; j < series[i].eventList.length; j++) {
this._drawEventBubble(series[i].eventList[j], i, j);
}
}
}
},
_drawEventBubble: function (oneEvent, seriesIndex, dataIndex) {
var series = this.series;
var serie = series[seriesIndex];
var serieName = serie.name || '';
var data = serie.eventList[dataIndex];
var queryTarget = [
data,
serie
];
var legend = this.component.legend;
var defaultColor = legend ? legend.getColor(serieName) : this.zr.getColor(seriesIndex);
var normal = this.deepMerge(queryTarget, 'itemStyle.normal') || {};
var emphasis = this.deepMerge(queryTarget, 'itemStyle.emphasis') || {};
var normalColor = this.getItemStyleColor(normal.color, seriesIndex, dataIndex, data) || defaultColor;
var emphasisColor = this.getItemStyleColor(emphasis.color, seriesIndex, dataIndex, data) || (typeof normalColor === 'string' ? zrColor.lift(normalColor, -0.2) : normalColor);
var pts = this._calculateControlPoints(oneEvent);
var eventBubbleShape = {
zlevel: this._zlevelBase,
clickable: this.deepQuery(queryTarget, 'clickable'),
style: {
pointList: pts,
smooth: 'spline',
brushType: 'both',
lineJoin: 'round',
color: normalColor,
lineWidth: normal.borderWidth,
strokeColor: normal.borderColor
},
highlightStyle: {
color: emphasisColor,
lineWidth: emphasis.borderWidth,
strokeColor: emphasis.borderColor
},
draggable: 'vertical',
ondragend: this._ondragend
};
eventBubbleShape = new PolygonShape(eventBubbleShape);
this.addLabel(eventBubbleShape, serie, data, oneEvent.name);
ecData.pack(eventBubbleShape, series[seriesIndex], seriesIndex, series[seriesIndex].eventList[dataIndex], dataIndex, series[seriesIndex].eventList[dataIndex].name);
this.shapeList.push(eventBubbleShape);
},
_calculateControlPoints: function (oneEvent) {
var intervalX = this._intervalX;
var posY = oneEvent.y;
var evolution = oneEvent.evolution;
var n = evolution.length;
if (n < 1) {
return;
}
var time = [];
var value = [];
for (var i = 0; i < n; i++) {
time.push(evolution[i].timeScale);
value.push(evolution[i].valueScale);
}
var pts = [];
pts.push([
time[0],
posY
]);
var i = 0;
for (i = 0; i < n - 1; i++) {
pts.push([
(time[i] + time[i + 1]) / 2,
value[i] / -2 + posY
]);
}
pts.push([
(time[i] + (time[i] + intervalX)) / 2,
value[i] / -2 + posY
]);
pts.push([
time[i] + intervalX,
posY
]);
pts.push([
(time[i] + (time[i] + intervalX)) / 2,
value[i] / 2 + posY
]);
for (i = n - 1; i > 0; i--) {
pts.push([
(time[i] + time[i - 1]) / 2,
value[i - 1] / 2 + posY
]);
}
return pts;
},
ondragend: function (param, status) {
if (!this.isDragend || !param.target) {
return;
}
status.dragOut = true;
status.dragIn = true;
status.needRefresh = false;
this.isDragend = false;
},
refresh: function (newOption) {
if (newOption) {
this.option = newOption;
this.series = newOption.series;
}
this.backupShapeList();
this._buildShape();
}
};
zrUtil.inherits(EventRiver, ChartBase);
zrUtil.inherits(EventRiver, ComponentBase);
require('../chart').define('eventRiver', EventRiver);
return EventRiver;
});define('echarts/layout/eventRiver', ['require'], function (require) {
function eventRiverLayout(series, intervalX, area) {
var space = 5;
var scale = intervalX;
function importanceSort(a, b) {
var x = a.importance;
var y = b.importance;
return x > y ? -1 : x < y ? 1 : 0;
}
function indexOf(array, value) {
if (array.indexOf) {
return array.indexOf(value);
}
for (var i = 0, len = array.length; i < len; i++) {
if (array[i] === value) {
return i;
}
}
return -1;
}
for (var i = 0; i < series.length; i++) {
for (var j = 0; j < series[i].eventList.length; j++) {
if (series[i].eventList[j].weight == null) {
series[i].eventList[j].weight = 1;
}
var importance = 0;
for (var k = 0; k < series[i].eventList[j].evolution.length; k++) {
importance += series[i].eventList[j].evolution[k].valueScale;
}
series[i].eventList[j].importance = importance * series[i].eventList[j].weight;
}
series[i].eventList.sort(importanceSort);
}
for (var i = 0; i < series.length; i++) {
if (series[i].weight == null) {
series[i].weight = 1;
}
var importance = 0;
for (var j = 0; j < series[i].eventList.length; j++) {
importance += series[i].eventList[j].weight;
}
series[i].importance = importance * series[i].weight;
}
series.sort(importanceSort);
var minTime = Number.MAX_VALUE;
var maxTime = 0;
for (var i = 0; i < series.length; i++) {
for (var j = 0; j < series[i].eventList.length; j++) {
for (var k = 0; k < series[i].eventList[j].evolution.length; k++) {
var time = series[i].eventList[j].evolution[k].timeScale;
minTime = Math.min(minTime, time);
maxTime = Math.max(maxTime, time);
}
}
}
var root = segmentTreeBuild(Math.floor(minTime), Math.ceil(maxTime));
var totalMaxY = 0;
for (var i = 0; i < series.length; i++) {
for (var j = 0; j < series[i].eventList.length; j++) {
var e = series[i].eventList[j];
e.time = [];
e.value = [];
for (var k = 0; k < series[i].eventList[j].evolution.length; k++) {
e.time.push(series[i].eventList[j].evolution[k].timeScale);
e.value.push(series[i].eventList[j].evolution[k].valueScale);
}
var mxIndex = indexOf(e.value, Math.max.apply(Math, e.value));
var maxY = segmentTreeQuery(root, e.time[mxIndex], e.time[mxIndex + 1]);
var k = 0;
e.y = maxY + e.value[mxIndex] / 2 + space;
for (k = 0; k < e.time.length - 1; k++) {
var curMaxY = segmentTreeQuery(root, e.time[k], e.time[k + 1]);
if (e.y - e.value[k] / 2 - space < curMaxY) {
e.y = curMaxY + e.value[k] / 2 + space;
}
}
var curMaxY = segmentTreeQuery(root, e.time[k], e.time[k] + scale);
if (e.y - e.value[k] / 2 - space < curMaxY) {
e.y = curMaxY + e.value[k] / 2 + space;
}
series[i].y = e.y;
totalMaxY = Math.max(totalMaxY, e.y + e.value[mxIndex] / 2);
for (k = 0; k < e.time.length - 1; k++) {
segmentTreeInsert(root, e.time[k], e.time[k + 1], e.y + e.value[k] / 2);
}
segmentTreeInsert(root, e.time[k], e.time[k] + scale, e.y + e.value[k] / 2);
}
}
scaleY(series, area, totalMaxY, space);
}
function scaleY(series, area, maxY, space) {
var yBase = area.y;
var yScale = (area.height - space) / maxY;
for (var i = 0; i < series.length; i++) {
series[i].y = series[i].y * yScale + yBase;
var eventList = series[i].eventList;
for (var j = 0; j < eventList.length; j++) {
eventList[j].y = eventList[j].y * yScale + yBase;
var evolutionList = eventList[j].evolution;
for (var k = 0; k < evolutionList.length; k++) {
evolutionList[k].valueScale *= yScale * 1;
}
}
}
}
function segmentTreeBuild(left, right) {
var root = {
'left': left,
'right': right,
'leftChild': null,
'rightChild': null,
'maxValue': 0
};
if (left + 1 < right) {
var mid = Math.round((left + right) / 2);
root.leftChild = segmentTreeBuild(left, mid);
root.rightChild = segmentTreeBuild(mid, right);
}
return root;
}
function segmentTreeQuery(root, left, right) {
if (right - left < 1) {
return 0;
}
var mid = Math.round((root.left + root.right) / 2);
var result = 0;
if (left == root.left && right == root.right) {
result = root.maxValue;
} else if (right <= mid && root.leftChild != null) {
result = segmentTreeQuery(root.leftChild, left, right);
} else if (left >= mid && root.rightChild != null) {
result = segmentTreeQuery(root.rightChild, left, right);
} else {
var leftValue = 0;
var rightValue = 0;
if (root.leftChild != null) {
leftValue = segmentTreeQuery(root.leftChild, left, mid);
}
if (root.rightChild != null) {
rightValue = segmentTreeQuery(root.rightChild, mid, right);
}
result = leftValue > rightValue ? leftValue : rightValue;
}
return result;
}
function segmentTreeInsert(root, left, right, value) {
if (root == null) {
return;
}
var mid = Math.round((root.left + root.right) / 2);
root.maxValue = root.maxValue > value ? root.maxValue : value;
if (Math.floor(left * 10) == Math.floor(root.left * 10) && Math.floor(right * 10) == Math.floor(root.right * 10)) {
return;
} else if (right <= mid) {
segmentTreeInsert(root.leftChild, left, right, value);
} else if (left >= mid) {
segmentTreeInsert(root.rightChild, left, right, value);
} else {
segmentTreeInsert(root.leftChild, left, mid, value);
segmentTreeInsert(root.rightChild, mid, right, value);
}
}
return eventRiverLayout;
});
var zrender = require('zrender');
zrender.tool = {
color : require('zrender/tool/color'),
math : require('zrender/tool/math'),
util : require('zrender/tool/util'),
vector : require('zrender/tool/vector'),
area : require('zrender/tool/area'),
event : require('zrender/tool/event')
}
zrender.animation = {
Animation : require('zrender/animation/Animation'),
Cip : require('zrender/animation/Clip'),
easing : require('zrender/animation/easing')
}
var echarts = require('echarts');
echarts.config = require('echarts/config');
echarts.util = {
mapData : {
params : require('echarts/util/mapData/params')
}
}
require("echarts/chart/gauge");
require("echarts/chart/funnel");
require("echarts/chart/scatter");
require("echarts/chart/k");
require("echarts/chart/radar");
require("echarts/chart/chord");
require("echarts/chart/force");
require("echarts/chart/line");
require("echarts/chart/bar");
require("echarts/chart/pie");
require("echarts/chart/eventRiver");
require("echarts/chart/map");
require("echarts/chart/island");
_global['echarts'] = echarts;
_global['zrender'] = zrender;
})(window);