echarts 4.5.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/echarts-en.common.js +1790 -774
- package/dist/echarts-en.common.min.js +1 -1
- package/dist/echarts-en.js +2029 -849
- package/dist/echarts-en.js.map +1 -1
- package/dist/echarts-en.min.js +1 -1
- package/dist/echarts-en.simple.js +1676 -691
- package/dist/echarts-en.simple.min.js +1 -1
- package/dist/echarts.common.js +1790 -774
- package/dist/echarts.common.min.js +1 -1
- package/dist/echarts.js +2029 -849
- package/dist/echarts.js.map +1 -1
- package/dist/echarts.min.js +1 -1
- package/dist/echarts.simple.js +1676 -691
- package/dist/echarts.simple.min.js +1 -1
- package/lib/chart/bar/BarView.js +11 -1
- package/lib/chart/bar/BaseBarSeries.js +3 -1
- package/lib/chart/effectScatter/EffectScatterSeries.js +3 -1
- package/lib/chart/funnel/FunnelSeries.js +15 -5
- package/lib/chart/gauge/GaugeSeries.js +0 -2
- package/lib/chart/graph/GraphSeries.js +9 -4
- package/lib/chart/graph/GraphView.js +28 -8
- package/lib/chart/heatmap/HeatmapView.js +4 -4
- package/lib/chart/helper/createListFromArray.js +14 -8
- package/lib/chart/helper/whiskerBoxCommon.js +22 -16
- package/lib/chart/line/LineSeries.js +3 -1
- package/lib/chart/line/LineView.js +8 -2
- package/lib/chart/map/MapSeries.js +8 -1
- package/lib/chart/pie/PieSeries.js +27 -6
- package/lib/chart/pie/PieView.js +1 -1
- package/lib/chart/pie/labelLayout.js +102 -19
- package/lib/chart/pie/pieLayout.js +19 -7
- package/lib/chart/radar/RadarSeries.js +3 -3
- package/lib/chart/sankey/SankeyView.js +28 -9
- package/lib/chart/scatter/ScatterSeries.js +3 -1
- package/lib/chart/themeRiver/ThemeRiverSeries.js +3 -3
- package/lib/chart/tree/TreeSeries.js +15 -1
- package/lib/component/axis/AngleAxisView.js +64 -7
- package/lib/component/axis/AxisBuilder.js +63 -24
- package/lib/component/axis/CartesianAxisView.js +55 -11
- package/lib/component/axis/RadiusAxisView.js +36 -4
- package/lib/component/dataZoom/SliderZoomView.js +4 -10
- package/lib/component/helper/BrushController.js +33 -43
- package/lib/component/legend/LegendModel.js +3 -3
- package/lib/component/legend/LegendView.js +17 -13
- package/lib/component/toolbox/ToolboxView.js +5 -1
- package/lib/component/toolbox/feature/MagicType.js +19 -14
- package/lib/coord/Axis.js +30 -2
- package/lib/coord/axisDefault.js +21 -2
- package/lib/data/DataDimensionInfo.js +157 -0
- package/lib/data/List.js +25 -19
- package/lib/data/Tree.js +2 -1
- package/lib/data/helper/completeDimensions.js +43 -32
- package/lib/data/helper/createDimensions.js +2 -0
- package/lib/data/helper/sourceHelper.js +214 -114
- package/lib/echarts.js +2 -2
- package/lib/layout/barGrid.js +2 -3
- package/lib/model/Series.js +3 -3
- package/lib/model/referHelper.js +40 -12
- package/lib/scale/Interval.js +87 -2
- package/lib/scale/Log.js +9 -2
- package/lib/scale/helper.js +1 -43
- package/lib/theme/dark.js +3 -0
- package/lib/util/graphic.js +1 -2
- package/lib/visual/LegendVisualProvider.js +75 -0
- package/lib/visual/dataColor.js +2 -12
- package/lib/visual/seriesColor.js +15 -7
- package/map/json/province/tianjin.json +1 -1
- package/package.json +3 -2
- package/src/chart/bar/BarView.js +12 -2
- package/src/chart/bar/BaseBarSeries.js +1 -1
- package/src/chart/effectScatter/EffectScatterSeries.js +1 -1
- package/src/chart/funnel/FunnelSeries.js +11 -4
- package/src/chart/gauge/GaugeSeries.js +0 -1
- package/src/chart/graph/GraphSeries.js +8 -3
- package/src/chart/graph/GraphView.js +26 -8
- package/src/chart/heatmap/HeatmapView.js +4 -4
- package/src/chart/helper/createListFromArray.js +13 -8
- package/src/chart/helper/whiskerBoxCommon.js +21 -16
- package/src/chart/line/LineSeries.js +1 -1
- package/src/chart/line/LineView.js +6 -1
- package/src/chart/map/MapSeries.js +5 -1
- package/src/chart/pie/PieSeries.js +26 -5
- package/src/chart/pie/PieView.js +1 -1
- package/src/chart/pie/labelLayout.js +114 -22
- package/src/chart/pie/pieLayout.js +20 -7
- package/src/chart/radar/RadarSeries.js +5 -3
- package/src/chart/sankey/SankeyView.js +26 -9
- package/src/chart/scatter/ScatterSeries.js +1 -1
- package/src/chart/themeRiver/ThemeRiverSeries.js +4 -3
- package/src/chart/tree/TreeSeries.js +12 -1
- package/src/component/axis/AngleAxisView.js +75 -7
- package/src/component/axis/AxisBuilder.js +78 -33
- package/src/component/axis/CartesianAxisView.js +58 -11
- package/src/component/axis/RadiusAxisView.js +37 -4
- package/src/component/dataZoom/SliderZoomView.js +4 -9
- package/src/component/helper/BrushController.js +40 -47
- package/src/component/legend/LegendModel.js +3 -3
- package/src/component/legend/LegendView.js +18 -12
- package/src/component/toolbox/ToolboxView.js +5 -0
- package/src/component/toolbox/feature/MagicType.js +18 -13
- package/src/coord/Axis.js +29 -2
- package/src/coord/axisDefault.js +25 -1
- package/src/data/DataDimensionInfo.js +135 -0
- package/src/data/List.js +29 -16
- package/src/data/Tree.js +3 -1
- package/src/data/helper/completeDimensions.js +49 -30
- package/src/data/helper/createDimensions.js +2 -0
- package/src/data/helper/sourceHelper.js +216 -124
- package/src/echarts.js +2 -2
- package/src/layout/barGrid.js +6 -3
- package/src/model/Series.js +3 -3
- package/src/model/referHelper.js +34 -11
- package/src/scale/Interval.js +84 -4
- package/src/scale/Log.js +9 -2
- package/src/scale/helper.js +1 -39
- package/src/theme/dark.js +3 -0
- package/src/util/graphic.js +1 -2
- package/src/visual/LegendVisualProvider.js +55 -0
- package/src/visual/dataColor.js +0 -13
- package/src/visual/seriesColor.js +13 -7
- package/theme/azul.js +163 -0
- package/theme/bee-inspired.js +178 -0
- package/theme/blue.js +178 -0
- package/theme/caravan.js +178 -0
- package/theme/carp.js +163 -0
- package/theme/cool.js +180 -0
- package/theme/dark-blue.js +168 -0
- package/theme/dark-bold.js +168 -0
- package/theme/dark-digerati.js +168 -0
- package/theme/dark-fresh-cut.js +168 -0
- package/theme/dark-mushroom.js +168 -0
- package/theme/dark.js +69 -62
- package/theme/eduardo.js +178 -0
- package/theme/forest.js +163 -0
- package/theme/fresh-cut.js +163 -0
- package/theme/fruit.js +178 -0
- package/theme/gray.js +220 -0
- package/theme/green.js +222 -0
- package/theme/helianthus.js +263 -0
- package/theme/infographic.js +72 -57
- package/theme/inspired.js +163 -0
- package/theme/jazz.js +163 -0
- package/theme/london.js +163 -0
- package/theme/macarons.js +80 -57
- package/theme/macarons2.js +251 -0
- package/theme/mint.js +155 -0
- package/theme/red-velvet.js +163 -0
- package/theme/red.js +225 -0
- package/theme/roma.js +55 -22
- package/theme/royal.js +163 -0
- package/theme/sakura.js +140 -0
- package/theme/shine.js +52 -45
- package/theme/tech-blue.js +180 -0
- package/theme/vintage.js +37 -23
package/lib/scale/Interval.js
CHANGED
|
@@ -97,10 +97,95 @@ var IntervalScale = Scale.extend({
|
|
|
97
97
|
},
|
|
98
98
|
|
|
99
99
|
/**
|
|
100
|
+
* @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.
|
|
100
101
|
* @return {Array.<number>}
|
|
101
102
|
*/
|
|
102
|
-
getTicks: function () {
|
|
103
|
-
|
|
103
|
+
getTicks: function (expandToNicedExtent) {
|
|
104
|
+
var interval = this._interval;
|
|
105
|
+
var extent = this._extent;
|
|
106
|
+
var niceTickExtent = this._niceExtent;
|
|
107
|
+
var intervalPrecision = this._intervalPrecision;
|
|
108
|
+
var ticks = []; // If interval is 0, return [];
|
|
109
|
+
|
|
110
|
+
if (!interval) {
|
|
111
|
+
return ticks;
|
|
112
|
+
} // Consider this case: using dataZoom toolbox, zoom and zoom.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
var safeLimit = 10000;
|
|
116
|
+
|
|
117
|
+
if (extent[0] < niceTickExtent[0]) {
|
|
118
|
+
if (expandToNicedExtent) {
|
|
119
|
+
ticks.push(roundNumber(niceTickExtent[0] - interval));
|
|
120
|
+
} else {
|
|
121
|
+
ticks.push(extent[0]);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
var tick = niceTickExtent[0];
|
|
126
|
+
|
|
127
|
+
while (tick <= niceTickExtent[1]) {
|
|
128
|
+
ticks.push(tick); // Avoid rounding error
|
|
129
|
+
|
|
130
|
+
tick = roundNumber(tick + interval, intervalPrecision);
|
|
131
|
+
|
|
132
|
+
if (tick === ticks[ticks.length - 1]) {
|
|
133
|
+
// Consider out of safe float point, e.g.,
|
|
134
|
+
// -3711126.9907707 + 2e-10 === -3711126.9907707
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (ticks.length > safeLimit) {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
} // Consider this case: the last item of ticks is smaller
|
|
142
|
+
// than niceTickExtent[1] and niceTickExtent[1] === extent[1].
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
var lastNiceTick = ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1];
|
|
146
|
+
|
|
147
|
+
if (extent[1] > lastNiceTick) {
|
|
148
|
+
if (expandToNicedExtent) {
|
|
149
|
+
ticks.push(lastNiceTick + interval);
|
|
150
|
+
} else {
|
|
151
|
+
ticks.push(extent[1]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return ticks;
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @param {number} [splitNumber=5]
|
|
160
|
+
* @return {Array.<Array.<number>>}
|
|
161
|
+
*/
|
|
162
|
+
getMinorTicks: function (splitNumber) {
|
|
163
|
+
var ticks = this.getTicks(true);
|
|
164
|
+
var minorTicks = [];
|
|
165
|
+
var extent = this.getExtent();
|
|
166
|
+
|
|
167
|
+
for (var i = 1; i < ticks.length; i++) {
|
|
168
|
+
var nextTick = ticks[i];
|
|
169
|
+
var prevTick = ticks[i - 1];
|
|
170
|
+
var count = 0;
|
|
171
|
+
var minorTicksGroup = [];
|
|
172
|
+
var interval = nextTick - prevTick;
|
|
173
|
+
var minorInterval = interval / splitNumber;
|
|
174
|
+
|
|
175
|
+
while (count < splitNumber - 1) {
|
|
176
|
+
var minorTick = numberUtil.round(prevTick + (count + 1) * minorInterval); // For the first and last interval. The count may be less than splitNumber.
|
|
177
|
+
|
|
178
|
+
if (minorTick > extent[0] && minorTick < extent[1]) {
|
|
179
|
+
minorTicksGroup.push(minorTick);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
count++;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
minorTicks.push(minorTicksGroup);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return minorTicks;
|
|
104
189
|
},
|
|
105
190
|
|
|
106
191
|
/**
|
package/lib/scale/Log.js
CHANGED
|
@@ -67,13 +67,14 @@ var LogScale = Scale.extend({
|
|
|
67
67
|
},
|
|
68
68
|
|
|
69
69
|
/**
|
|
70
|
+
* @param {boolean} [expandToNicedExtent=false] If expand the ticks to niced extent.
|
|
70
71
|
* @return {Array.<number>}
|
|
71
72
|
*/
|
|
72
|
-
getTicks: function () {
|
|
73
|
+
getTicks: function (expandToNicedExtent) {
|
|
73
74
|
var originalScale = this._originalScale;
|
|
74
75
|
var extent = this._extent;
|
|
75
76
|
var originalExtent = originalScale.getExtent();
|
|
76
|
-
return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {
|
|
77
|
+
return zrUtil.map(intervalScaleProto.getTicks.call(this, expandToNicedExtent), function (val) {
|
|
77
78
|
var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158
|
|
78
79
|
|
|
79
80
|
powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;
|
|
@@ -82,6 +83,12 @@ var LogScale = Scale.extend({
|
|
|
82
83
|
}, this);
|
|
83
84
|
},
|
|
84
85
|
|
|
86
|
+
/**
|
|
87
|
+
* @param {number} splitNumber
|
|
88
|
+
* @return {Array.<Array.<number>>}
|
|
89
|
+
*/
|
|
90
|
+
getMinorTicks: intervalScaleProto.getMinorTicks,
|
|
91
|
+
|
|
85
92
|
/**
|
|
86
93
|
* @param {number} val
|
|
87
94
|
* @return {string}
|
package/lib/scale/helper.js
CHANGED
|
@@ -99,48 +99,6 @@ function fixExtent(niceTickExtent, extent) {
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
function intervalScaleGetTicks(interval, extent, niceTickExtent, intervalPrecision) {
|
|
103
|
-
var ticks = []; // If interval is 0, return [];
|
|
104
|
-
|
|
105
|
-
if (!interval) {
|
|
106
|
-
return ticks;
|
|
107
|
-
} // Consider this case: using dataZoom toolbox, zoom and zoom.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var safeLimit = 10000;
|
|
111
|
-
|
|
112
|
-
if (extent[0] < niceTickExtent[0]) {
|
|
113
|
-
ticks.push(extent[0]);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
var tick = niceTickExtent[0];
|
|
117
|
-
|
|
118
|
-
while (tick <= niceTickExtent[1]) {
|
|
119
|
-
ticks.push(tick); // Avoid rounding error
|
|
120
|
-
|
|
121
|
-
tick = roundNumber(tick + interval, intervalPrecision);
|
|
122
|
-
|
|
123
|
-
if (tick === ticks[ticks.length - 1]) {
|
|
124
|
-
// Consider out of safe float point, e.g.,
|
|
125
|
-
// -3711126.9907707 + 2e-10 === -3711126.9907707
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (ticks.length > safeLimit) {
|
|
130
|
-
return [];
|
|
131
|
-
}
|
|
132
|
-
} // Consider this case: the last item of ticks is smaller
|
|
133
|
-
// than niceTickExtent[1] and niceTickExtent[1] === extent[1].
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1])) {
|
|
137
|
-
ticks.push(extent[1]);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return ticks;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
102
|
exports.intervalScaleNiceTicks = intervalScaleNiceTicks;
|
|
144
103
|
exports.getIntervalPrecision = getIntervalPrecision;
|
|
145
|
-
exports.fixExtent = fixExtent;
|
|
146
|
-
exports.intervalScaleGetTicks = intervalScaleGetTicks;
|
|
104
|
+
exports.fixExtent = fixExtent;
|
package/lib/theme/dark.js
CHANGED
package/lib/util/graphic.js
CHANGED
|
@@ -1125,8 +1125,7 @@ function rollbackDefaultTextStyle(style) {
|
|
|
1125
1125
|
}
|
|
1126
1126
|
|
|
1127
1127
|
function getFont(opt, ecModel) {
|
|
1128
|
-
|
|
1129
|
-
var gTextStyleModel = ecModel || ecModel.getModel('textStyle');
|
|
1128
|
+
var gTextStyleModel = ecModel && ecModel.getModel('textStyle');
|
|
1130
1129
|
return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle
|
|
1131
1130
|
opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));
|
|
1132
1131
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
4
|
+
* or more contributor license agreements. See the NOTICE file
|
|
5
|
+
* distributed with this work for additional information
|
|
6
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
7
|
+
* to you under the Apache License, Version 2.0 (the
|
|
8
|
+
* "License"); you may not use this file except in compliance
|
|
9
|
+
* with the License. You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing,
|
|
14
|
+
* software distributed under the License is distributed on an
|
|
15
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
16
|
+
* KIND, either express or implied. See the License for the
|
|
17
|
+
* specific language governing permissions and limitations
|
|
18
|
+
* under the License.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/*
|
|
22
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
23
|
+
* or more contributor license agreements. See the NOTICE file
|
|
24
|
+
* distributed with this work for additional information
|
|
25
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
26
|
+
* to you under the Apache License, Version 2.0 (the
|
|
27
|
+
* "License"); you may not use this file except in compliance
|
|
28
|
+
* with the License. You may obtain a copy of the License at
|
|
29
|
+
*
|
|
30
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
31
|
+
*
|
|
32
|
+
* Unless required by applicable law or agreed to in writing,
|
|
33
|
+
* software distributed under the License is distributed on an
|
|
34
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
35
|
+
* KIND, either express or implied. See the License for the
|
|
36
|
+
* specific language governing permissions and limitations
|
|
37
|
+
* under the License.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* LegendVisualProvider is an bridge that pick encoded color from data and
|
|
42
|
+
* provide to the legend component.
|
|
43
|
+
* @param {Function} getDataWithEncodedVisual Function to get data after filtered. It stores all the encoding info
|
|
44
|
+
* @param {Function} getRawData Function to get raw data before filtered.
|
|
45
|
+
*/
|
|
46
|
+
function LegendVisualProvider(getDataWithEncodedVisual, getRawData) {
|
|
47
|
+
this.getAllNames = function () {
|
|
48
|
+
var rawData = getRawData(); // We find the name from the raw data. In case it's filtered by the legend component.
|
|
49
|
+
// Normally, the name can be found in rawData, but can't be found in filtered data will display as gray.
|
|
50
|
+
|
|
51
|
+
return rawData.mapArray(rawData.getName);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
this.containName = function (name) {
|
|
55
|
+
var rawData = getRawData();
|
|
56
|
+
return rawData.indexOfName(name) >= 0;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
this.indexOfName = function (name) {
|
|
60
|
+
// Only get data when necessary.
|
|
61
|
+
// Because LegendVisualProvider constructor may be new in the stage that data is not prepared yet.
|
|
62
|
+
// Invoking Series#getData immediately will throw an error.
|
|
63
|
+
var dataWithEncodedVisual = getDataWithEncodedVisual();
|
|
64
|
+
return dataWithEncodedVisual.indexOfName(name);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
this.getItemVisual = function (dataIndex, key) {
|
|
68
|
+
// Get encoded visual properties from final filtered data.
|
|
69
|
+
var dataWithEncodedVisual = getDataWithEncodedVisual();
|
|
70
|
+
return dataWithEncodedVisual.getItemVisual(dataIndex, key);
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
var _default = LegendVisualProvider;
|
|
75
|
+
module.exports = _default;
|
package/lib/visual/dataColor.js
CHANGED
|
@@ -76,29 +76,19 @@ function _default(seriesType) {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
if (!singleDataColor) {
|
|
79
|
-
var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); //
|
|
80
|
-
|
|
81
|
-
dataAll.setItemVisual(rawIdx, 'color', color); // Data is not filtered
|
|
79
|
+
var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx) || rawIdx + '', seriesModel.__paletteScope, dataAll.count()); // Data is not filtered
|
|
82
80
|
|
|
83
81
|
if (filteredIdx != null) {
|
|
84
82
|
data.setItemVisual(filteredIdx, 'color', color);
|
|
85
83
|
}
|
|
86
|
-
} else {
|
|
87
|
-
// Set data all color for legend
|
|
88
|
-
dataAll.setItemVisual(rawIdx, 'color', singleDataColor);
|
|
89
84
|
}
|
|
90
85
|
|
|
91
86
|
if (!singleDataBorderColor) {
|
|
92
|
-
var borderColor = itemModel.get('itemStyle.borderColor'); //
|
|
93
|
-
|
|
94
|
-
dataAll.setItemVisual(rawIdx, 'borderColor', borderColor); // Data is not filtered
|
|
87
|
+
var borderColor = itemModel.get('itemStyle.borderColor'); // Data is not filtered
|
|
95
88
|
|
|
96
89
|
if (filteredIdx != null) {
|
|
97
90
|
data.setItemVisual(filteredIdx, 'borderColor', borderColor);
|
|
98
91
|
}
|
|
99
|
-
} else {
|
|
100
|
-
// Set data all borderColor for legend
|
|
101
|
-
dataAll.setItemVisual(rawIdx, 'borderColor', singleDataBorderColor);
|
|
102
92
|
}
|
|
103
93
|
});
|
|
104
94
|
}
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
|
|
21
21
|
var Gradient = require("zrender/lib/graphic/Gradient");
|
|
22
22
|
|
|
23
|
+
var _util = require("zrender/lib/core/util");
|
|
24
|
+
|
|
25
|
+
var isFunction = _util.isFunction;
|
|
26
|
+
|
|
23
27
|
/*
|
|
24
28
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
25
29
|
* or more contributor license agreements. See the NOTICE file
|
|
@@ -43,11 +47,15 @@ var _default = {
|
|
|
43
47
|
performRawSeries: true,
|
|
44
48
|
reset: function (seriesModel, ecModel) {
|
|
45
49
|
var data = seriesModel.getData();
|
|
46
|
-
var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.');
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.'); // Set in itemStyle
|
|
51
|
+
|
|
52
|
+
var color = seriesModel.get(colorAccessPath);
|
|
53
|
+
var colorCallback = isFunction(color) && !(color instanceof Gradient) ? color : null; // Default color
|
|
54
|
+
|
|
55
|
+
if (!color || colorCallback) {
|
|
56
|
+
color = seriesModel.getColorFromPalette( // TODO series count changed.
|
|
57
|
+
seriesModel.name, null, ecModel.getSeriesCount());
|
|
58
|
+
}
|
|
51
59
|
|
|
52
60
|
data.setVisual('color', color);
|
|
53
61
|
var borderColorAccessPath = (seriesModel.visualBorderColorAccessPath || 'itemStyle.borderColor').split('.');
|
|
@@ -55,9 +63,9 @@ var _default = {
|
|
|
55
63
|
data.setVisual('borderColor', borderColor); // Only visible series has each data be visual encoded
|
|
56
64
|
|
|
57
65
|
if (!ecModel.isSeriesFiltered(seriesModel)) {
|
|
58
|
-
if (
|
|
66
|
+
if (colorCallback) {
|
|
59
67
|
data.each(function (idx) {
|
|
60
|
-
data.setItemVisual(idx, 'color',
|
|
68
|
+
data.setItemVisual(idx, 'color', colorCallback(seriesModel.getDataParams(idx)));
|
|
61
69
|
});
|
|
62
70
|
} // itemStyle in each data item
|
|
63
71
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"type":"FeatureCollection","features":[{"id":"120101","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BhB`R@DA@CD@DCFCHBLDF@DABKFIJGQG@COEQM@@OASB"],"encodeOffsets":[[119992,40041]]},"properties":{"cp":[117.195907,39.118327],"name":"和平区","childNum":1}},{"id":"120102","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@XFFIE@BGGA@KVBN_]CCCLgMGE@CD@AGB@AEGMEACB@BA@BFWFACKA@DA@@DA@C@CCCDGIAKMBWLGFERWT]bADCNE@DDIDEFBHTHBD@DLMPJj@ARX@"],"encodeOffsets":[[120075,40099]]},"properties":{"cp":[117.226568,39.122125],"name":"河东区","childNum":1}},{"id":"120103","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@TAPB@@RNPF@DRHPSXSFQHEXKE@CMIFUQA@DC@CCA@CDE@CEE@FOc@@D{@ch]IGFCFE`A\\"],"encodeOffsets":[[119992,40041]]},"properties":{"cp":[117.217536,39.101897],"name":"河西区","childNum":1}},{"id":"120104","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@C@@DCBQ@AcAmBOFaDEHEgKID]ZQTINCJEdkhHDRNCB@FD@BAFDFHB@JIDANFDECCZCBA\\B@Hd@LB@CAU"],"encodeOffsets":[[120007,40074]]},"properties":{"cp":[117.164143,39.120474],"name":"南开区","childNum":1}},{"id":"120105","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@FBBAJBFDJK\\NFEFBLKBBBATP`]QOLB@AHBBEJ@DDDE@QW@BQi@OIKN@CACQECG@CFCJCCCMCGAEDCFBT@DSTQN@BFDBDCJBJAHKAIFDDXDAB"],"encodeOffsets":[[119993,40130]]},"properties":{"cp":[117.201569,39.156632],"name":"河北区","childNum":1}},{"id":"120106","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@JELBBGAIDIACEC@ARMTSKAc@@G[AABYDDDCFMECBIJC@CPHZ@LHNFFNHBCDAZBB@DEJE"],"encodeOffsets":[[119980,40125]]},"properties":{"cp":[117.163301,39.175066],"name":"红桥区","childNum":1}},{"id":"120110","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CK@QOCEAEK@KAAKAKEoRECIYK{\\Af@BMb@@WAGBC@GV@KYBUkB@@OD@AEUE@IQDAGSJEDFD@CIDAAKDE@KECOKKEABMVMRGBSGE@KDCDADDN@FCHCBGAIGUKUEcB]JULINIZGD[AU@QDMDGFQR_NODiBcDBLHJDCDDF@@CB@@CLBBDXEAEB@@ADAFBHNBFA@BHC@@DHF
NKhDD^DM`UA@LHBAHF@EJWE@RCFCCI@AFGA@BKARP_^ZXZL\\JfHNHEdEAAFBBQCAFPHRGtMBEB@NB^Cb@lECFHDPD@DNBJCFE@CEG@GTCPHBF`@JFBCHJJKRCP@JGTIAQGIDAPAVH@GCEKEEBAAVEBDADPFBBCFBBHE@WHClQPCFBTARE"],"encodeOffsets":[[120391,40118]]},"properties":{"cp":[117.313967,39.087764],"name":"东丽区","childNum":1}},{"id":"120111","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CGECABC@@EDAQMGClgD]DM^c^YHCF@VrwJBBINBHAFAHBDAN@LDDGCCA@AC@AACBAAEFKA@KDCCJCJDFGF@DCBGDQJERFHGMCLEAAGAFGMMAWE@BHQLKIBAJECCCAAGQW[DAAjS@AIYXKGGT@NBFEBABOJBDMFADGG@BGH@@AACFKGCG@FMWMDABCBAACLCIGCAE@[P¥\\]N¯MNORU^]XKF`_XIIAIkDDZF@@FMDJLmTSDaHgDBJE@@DOBDH[HFJCBCGCBIMKH[L@AAAADUBACECGHWKCHTHBHaJDLF@JNF@FNLAH\\FABPD@EF@@HELCHVF@GXBB@DJBI\\PB@BN@BHK@GBAJ\\F@AACLABBAB@DFHB@FFJCDL@BA@@DF@JEBKHB@CjHBENDH@HSFBDKEAFG\\H@DE@AF@HHBANH@BQ@CBGNFT@`LFABIN@ALDBCFRHFB`D`ANANCG[DM"],"encodeOffsets":[[119940,40092]]},"properties":{"cp":[117.012247,39.139446],"name":"西青区","childNum":1}},{"id":"120112","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ZAZEVKXSPGVEnDHCJYJMVKNEPCdAZHRJJHHBDADG@ECMBCDCLCF@THHANQPWD@DBXRJ@HAJERSJAJBDCEOCAKYBQCA@GBCDSGAGBIHSNA@KCQMCF]INaCuOSGU{zm_yENH@HDELBD@BG@AHH@CHEBCNIAAPABEFMAS@HHWLJZ@BiTBB\\CRXBHDBDDIFABLJRKAGF@BXNNEHHBBBKFNDGHQEIFCRAHCDE@EHICIDDDLCB@ELBFABBD@BBDB@DDCHKCM@CBGAEBGBMAAJIAMP|@@Cd@EPF@DFF@DCB@DDD@@CRBEVNJ@D"],"encodeOffsets":[[120108,40016]]},"properties":{"cp":[117.382549,38.989577],"name":"津南区","childNum":1}},{"id":"120113","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@PQFFJICABACCDAKGJGLHRMVMMERKHH`WBFFCRFJHHIBOK_MC@QLCDIBAMA@COCGCDEkFa@]DMAA@AFsNQHOGBERDAABEFBFcMGeG[IQGGCmgABAAKLEAEF[MILECKA@BA@CABAWCCCIFEFYACBADICIIGM@KMDgDO@UCWIDECABKM@AJEB_KS@MEAH@DARG@BMGA@GBEF@@C[GEHFBCLEAGTG@MCAFgGA@@DGAALIFE@@CB@@ACKIDIGQJ@DHD@@GAAH@FDPbB@BDEJ@BBAFBNBHDBCDBDHBEJFBBDCFANA@AFTFFARPBNLABARA@DD@BB@HFA@PXBBLDACRKEAJF@GPD@AN@BjHCGZFJUN@BA^F@FIAAFNDCF@B\\LONADtJTAFBDCPBDGPETBADNDFFDFCD@LHBBKJFALIA@DB@@BNFBGHBBEN@@DHD@FFBDAH@AHBBCLDBF@@HFBBGJ@BBAFfLLABCH@ADLFJENAHKLAFBDEH@AHBDJB@DB@B@AADEFCLBNCDMDER@BKGA@ADEZDBELH"],"encodeOffsets":[[120140,40274]]},"properties":{"cp":[117.13482,39.225555],"name":"北辰区","childNum":1}},{"id":"120114","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DKEC^QZS^QwVMAAB@CCI@@CB@H@JCBCFEDBCFF@D@H@FALIXMBIECM@ADE@OABEPA@CBCD@HEDIGEC@AC@KJ@DCH@@DFADEDAFBFALGBMFABKGAAA@CAALEJOFAFIFEB@JKDEJBDCCAEAFI@IDIDINECABGBQBCFC@AOKIHED@EKG@JDFOH@EIEDEFOC@BCEACAACAEI@AAHUXC@GD@AMDED@BEF@BBHAKADID@BGCIBEIIGCAFOAGAEF@BHBALQ@CFCNMDKAEDCFBBC@@CIAACBGG@CFEAKBGLMBIFKEBCG@ADKBeKBEAAI@AHEA@GE@CADKAABGG@CBEA@EGC@CM@AFGAAHME@AA@@CJBBKIEALGA@KDCCEEEMCBCSAOFCHOACDEASBsIBCPM[K@ADEMCBEJB@E]EABM@IVYEDHiG@ABMC@HOE@BILFDQCBAKWA@OEB@GAAC@@CQBABKBAMQOEBSEBEB@BMDEACEAFIGAACDCCAAGAMBEAAI@CF@AaACO@EBGHB@@GC@CRICE@CBAAAKBBD@B[EBIHAL@AGM@@AOAJ[IA@CAAHWM@AHJ@G^G@AF@DA@@FEBBFcJqAEDECFFABBRCHBFEDDNAHA@@`@@CHG@AT`D@AH@@PBBCJDBFABGB@@BBAB@BIFBBDJ@@FE@DHKD@JA@@FGCCDE@AZFDM\\JBCZCRKA@FGA@JHB@FBBXFBCFB@BB@CRJ@DJ@HCTF@ADB@AHEAIFKACH@CA@CLA@FBAFB@@DH@CFE@ADIEKA@FAABIB@BCG@@CC@BAOMCJGG[C@BABG\\AAAD@FL@@DJBADHB@BA@ABOCCDC@@BC@ADB@ADA@AFL@@A\\D@FFBBEB@CLB@ELB@@BAB@DBB@DEA@DD@AFCACDBHJDALF@AFFBBCPB@DB@ABBBBBD@@DDBFB@DHBCHDBLEJNMF@DKCIFCFQCBAA@@AEBAA@@EA@DOICDGD@BB@ALDA@BYLKA@BBGGA@AMHEABCC@GNLE@NC@@DAAAFEAAJKBBBF@CB@BF@AFH@@BN@ADZF@DD@@DF@DCFBEBF@@JB@EDCPA@@FI@@BF@@DDCCTH@C@TD@BB@G^FAGPECBGG@@BSAEDALG@AJA@AHC@ABC@@FEAAHB@@DB@BDF@AHHFA@DBABD@D@CBBBCBXH@DB@AFH@EHCACFCBCFA@CFDACL@BB@AFB@BCDBBA@BBBBCFBADE@B@@BCBBBD@ABE@ABAA@BLD@BHDBEGA@AD@CABEL@CJHBEHDBEJBBPDFCBEJDDBH@@FADHBMNIHFDEFFD@AJFADBBBAF@D@AHDBRDBD@RCBBJV@@BD@BDPBFEBBCDTHL@DAHBBCDBABTDCJJBGJNBAND@ADFBHE@DED@H@@@FH@X@BCBBBCB@DFZ@DMA@CFA@GMCADGAGBCNMAAIA@KXGCODOJMD@LJJC@C@KC@BCFAFDRDBAD@CD^F@DF@BFFA@FJB@DbEPEbElMTIZGAAFA@CJ@BE@@@FHA@EJA@CHBADBGPA@BG@AFBBVGHFL@BBABD@"],"encodeOffsets":[[119960,40574]]},"properties":{"cp":[117.057959,39.376925],"name":"武清区","childNum":1}},{"id":"120115","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@GBAAE@AFC@CFBNC@@HWDGVBBJ@BFBDDBFBADD@EPCFJF@FPGCE@ILH@FFCJGPL@BEDADARAHDBMFCJCJ@JEJFBDBCDIACFILA@EFEJEBIPKFBB@DBBHBALEBANKHEBEACBCFEB@CG@CDI@@LBDD@HFCJGFC@AD@DOBAFPBF@BCN@FDAJWNKJEBG@C@E@DECAEFADIDG@ADJ@DDA@BBUNx]RYT]RFDCLJBADDBGDBDHBFJJ@TBBHB@@DH@AFKBCB@HE@@BEA@D@@ADBHC@@AA@@DCB@DB@@FJ@@FD@@HH@E\\F@ADB@ARBBBFED@BD@@BCA@HD@AJE@@ACAAHDB@BH@AHCB@EAAADGB@BE@BBK@FLEBDDADA@BDNB@DJCBBIR@DBBDBFALDX@DHL@DJFA@BH@HHKJAB@DC@GFOHED@BCBAZE@ADE@AFGACEEDA@@AGAAVJ@IVB@@DB@@DHGJB@JpFBCFBEPPBBCNFBGHBPC@EHBFFRDRA^GD@JCFDJGHBLGFECCBGHBBCFBDCFB@EFGD@@BF@@DPALEDCECDEDABED@HCHJH@FDDEFDHENCLBDDDA@ERABEN@JEDDBACEJ@AINMRBJGAIDCZEJCLAFRTJHAHJHFD@@AEKBAFBRJGF@BPAFBHEDBFHBAFO@@NFH@BEFGHAD@BFBBJID@BFDBDEB@J@AGDCL@FBNIBBFJD@HKDCNDF@DAFGFCdE@A@AICBCJC@C@AGAEFC@@MIBAABC@CKA@CBANACAGC@ARBJG@GLGHCX@LENBNE@EDAFBHHD@DCDIIMLCBGN@@AIEBANEGKLEJDDAAGIKHKCIBECIECSF@GBKGCIDC@FKAAGCBOC@OB@MKGC@CHCAAEFUB@HDLPJDBCAIFGDARDHGBC@EIKDGB@N@PHJHBLHBNARQXGFG@GIGK@IDEFEAAC@EHILCP@JCDGCEOFCBGABCKCBSEEK@ADIGO@AEOCEDDBqNAAH]MKiIAW@@CA@GA@DIMA@CGAAD_EEH@FIA@HIAAHUEDOHAFIOSKGSEcDAEI@@CBCOEC@CDCFEBKEFIMEGEA@@BIA@ERFBDQCABADQDCCAHMJBDEMEADGAUCCC@CDA@CCCICGO@BDJG@CADGK@CCGFICCBKEEDGBCAAEKDAABGFE@ACABCAAeA@HM@GBYD@BE@@NABGB@CCAW@@ACAEF_BYECII@CG"],"encodeOffsets":[[120145,40295]]},"properties":{"cp":[117.308094,39.716965],"name":"宝坻区","childNum":1}},{"id":"120116","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@LCFBLCBDJC@CEIFHTCBJRF@FXPC@@lAAVLZU@@HADBH@Xa@ANe@[BL|J\\FBpQLFLBBB@LFLFBPD@RDLpMpGBPNREHE@@dVF@BJB@BD@@DFDLBDGHGDA^c\\@@cFD@@jEBJZFLhrePFBEJGAENE@IVC@@RBLV@DPT@zJLHPFVDNECC@SACjQJBJCACIDMQhQD@tCD]LBHDBH@GLHNB@DQHBAFDHE@@DEBDFFAD@@BF@BBAB@BNFBEHCXDT@JGAGVEBEDCDB@BF@@DRC@BZ@PAP@BCFAJ@@B@BTC@DB@JEAAB@FB@ACAB@@CC@BCHOF@BADAAADCHBH@HECEB@BCHBDBBCFDBAACBAD@BBPGJF@@ABDB@BD@ABBDDAFCBC@CB@CCAKNECG@EF@@EzQBiAC@Ey@BUI@±]GaQaý¥Y_YeK]EaDqPmHcD{DKQBMMaKEUC_BOASY_YAYDXSIaa¹JgCeOQ[@RUbK¶MPGJMA¯CUSQÓgOKMWEa³OqIGFG@EBEACIGCFK]EE@@DFD@B@BG@BHCFC@@EEAIHEACBC@BFCBQCaDFKACEBECADE@SSKMIKHQKHEJ@[UGCoO@d[CFSMIAIE@AH[A@DOA@AQKOEEBARGNI@G@BSgE@AOACJSKMVC@IXF@hJAFmKCHB@PVVFAHHB@JC@CH@BABD@ABMFC@@BSB@BAAAHG@JL@BBBWABHHB@N@BMBMAEEESMA@EA@@CCE@FC@AEQ@@GCAA@AJC@BEK@AAABSGA@@FEA@BCBC@@EC@@DK@LHBD@HCDBFCBABB@F@@FB@@DFJ@HB@BLADK@HBDBCBG@@DH@@F@DCJIB@JK@AJFBCLBHH@DCBJFF@PATBHB@ABDTbB@DaCAAE@@CAACAOF@HADE@@BICAFBHEBhTBPDBJCFCªvEFeVTROJVT`OFH®_\\OF@DBJHKDBDABADCB¶n`|yHVPTvbDM^JDERNLDB@TMJGHAHBCTAD@HDBARLZDBFPCDIAGBUVOFGB"],"encodeOffsets":[[120348,39943]]},"properties":{"cp":[117.654173,39.032846],"name":"滨海新区","childNum":1}},{"id":"120117","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ABCJKD@RNDL`APGJIGQEEDAE_XGGQLNFUNQNKGIHLHCBDDABDBIJEEORFFAFDJAHC@CJLBDHJ@DJZF`AFEDB@BX@DB@DHABA@MF@@AZCHAN@@GfBBBADDB@BEFAHBBLCBFDBHAFCLFDAJDHEDDL@CHDBH@CI@AHPJDDD@DCB@DDDVDHBBCNFCFIAGNDBCDCRABDBCREAQ@FJB@AB@HFNFEJLFFADEDCD@PFAD@DJ@BFdCTFLHPTEJGBCPVFBGJB@GJB@EFG`FBCHB@DNBCJB@@HDB@@BXjJNLGZ@DBBrMACFANDBFP@JHBCL@FFATLDADHBDAPEAC@EBIFIJGNJJ@JBJJHJHFSZA@BND@@LVB@BJ@AFDBBDEDILjTABlEHHTBvWVAPDHCDFL@LHHB`MFALDNC^M^GJIEKABEGACC@IMA@AOB@EACIGAAEBAECCBDAAAAADAAEFCBDB@ACB@AAAABEBAD@AG@ADFAEB@A@GKSCCgG@AEJA@AFO@ECCQEEEOBGYG@BqGBKXBFKCYJKOIKNEASCeA_ECSBGFENEF@HDZ@FCBE`TEFB@EFHFFEECBCFDFADBDEUWCOGBAIECLG@CEIFA@CF@CGBEGACRA@GMHKG@CAAG^KDCsC@gRNRJCBDIDIAiRBD@TDDMFUCOEKGyIS@COU@AK@QD@JUF@FMHBFIEAfOgqEKIYFA@i@EC@d[@]dCBGHCHKAEC@CC@@AIA@AUE@cF@FGMQAOgFVSBEAODkRGD@XGFAADEAAOEBCACUFBBFALFDF@HUGOBCBHJBRSJIHO@QDILGIADIE_@AEOGSD@HFH@DEFID"],"encodeOffsets":[[120221,40183]]},"properties":{"cp":[117.82828,39.328886],"name":"宁河区","childNum":1}},{"id":"120118","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AHC@@FCA@DHB@JS@@DA@@H]BCTKfG@BHK@@FEAADJD@RJhNNI@@FQBBDCBQA@BBLMIBNFJADHHEBuK@IA@AKU@UDDHKI@HAGAAC]@CDCA@MSAHPGBOEMEIA@EC@@DA@MBAASB@BCB@TE@@BBBBDAHCBDFABFNGBBFKBBFC@BDB@FPC@BPCPMACEoBE@AAC@@DcB_D@ECB@A@BA@B@@DC@@CA@@IE@AAG@BDK@EBABQA@JE@@HC@ABA@@BB@ADOA@DIAACA@NxQB@FIBHXHABFKBFLIDLPDTF@DNC@CAGB@FA@BJDXmBA[@@D@@NL@BHB@H\\BTD@HRB@JF@FL@FHDNDABJDCDTD@DTA@@LF@BB@XGBADE@@B@B@DJXJ@XEDFHAFHCBBDBDJBBHTCAIGBAAGBEA@EC@BCB@@BBAC@@AB@@CD@@DB@@DJ@DDF@DAF@@CLABBF@@AB@BBJ@@IBBDBB@ACJBJDR@@HD@@GfBAFXBCLH@GTPFjKAGSGDGXLHGFDBDVABCBB@B\\KLGJNDADHDAEI\\GCGPA@CF@AIhCbGTCnSIKNC@EE@CYlCBJJJ`W~W\\M^WV]^_°VIEG_PUSPISQfUFE©uEDIDCAAOgSFAAGBEJD@AF@BC@GPEDBBB@DF@BBbD@CaACSBAA@AGBS@OEEAICDG@AGDKEABIL@@IJADI@C@EG@@CH@DACAGAL@@OA@@GEI@CA@@EE@A@BADAAEDC@GACOKB@BMEB@ESEAABECAWBAECBBCC@CIBCS@@IWD"],"encodeOffsets":[[119909,39513]]},"properties":{"cp":[116.925304,38.935671],"name":"静海区","childNum":1}},{"id":"120119","type":"Feature","geometry":{"type":"Polygon","coordinates":[],"encodeOffsets":[]},"properties":{"cp":[117.407449,40.045342],"name":"蓟州区","childNum":0}}],"UTF8Encoding":true}
|
|
1
|
+
{"type":"FeatureCollection","features":[{"id":"120101","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@BhB`R@DA@CD@DCFCHBLDF@DABKFIJGQG@COEQM@@OASB"],"encodeOffsets":[[119992,40041]]},"properties":{"cp":[117.195907,39.118327],"name":"和平区","childNum":1}},{"id":"120102","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@XFFIE@BGGA@KVBN_]CCCLgMGE@CD@AGB@AEGMEACB@BA@BFWFACKA@DA@@DA@C@CCCDGIAKMBWLGFERWT]bADCNE@DDIDEFBHTHBD@DLMPJj@ARX@"],"encodeOffsets":[[120075,40099]]},"properties":{"cp":[117.226568,39.122125],"name":"河东区","childNum":1}},{"id":"120103","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@TAPB@@RNPF@DRHPSXSFQHEXKE@CMIFUQA@DC@CCA@CDE@CEE@FOc@@D{@ch]IGFCFE`A\\"],"encodeOffsets":[[119992,40041]]},"properties":{"cp":[117.217536,39.101897],"name":"河西区","childNum":1}},{"id":"120104","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@C@@DCBQ@AcAmBOFaDEHEgKID]ZQTINCJEdkhHDRNCB@FD@BAFDFHB@JIDANFDECCZCBA\\B@Hd@LB@CAU"],"encodeOffsets":[[120007,40074]]},"properties":{"cp":[117.164143,39.120474],"name":"南开区","childNum":1}},{"id":"120105","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@FBBAJBFDJK\\NFEFBLKBBBATP`]QOLB@AHBBEJ@DDDE@QW@BQi@OIKN@CACQECG@CFCJCCCMCGAEDCFBT@DSTQN@BFDBDCJBJAHKAIFDDXDAB"],"encodeOffsets":[[119993,40130]]},"properties":{"cp":[117.201569,39.156632],"name":"河北区","childNum":1}},{"id":"120106","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@JELBBGAIDIACEC@ARMTSKAc@@G[AABYDDDCFMECBIJC@CPHZ@LHNFFNHBCDAZBB@DEJE"],"encodeOffsets":[[119980,40125]]},"properties":{"cp":[117.163301,39.175066],"name":"红桥区","childNum":1}},{"id":"120110","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CK@QOCEAEK@KAAKAKEoRECIYK{\\Af@BMb@@WAGBC@GV@KYBUkB@@OD@AEUE@IQDAGSJEDFD@CIDAAKDE@KECOKKEABMVMRGBSGE@KDCDADDN@FCHCBGAIGUKUEcB]JULINIZGD[AU@QDMDGFQR_NODiBcDBLHJDCDDF@@CB@@CLBBDXEAEB@@ADAFBHNBFA@BHC@@DHF
NKhDD^DM`UA@LHBAHF@EJWE@RCFCCI@AFGA@BKARP_^ZXZL\\JfHNHEdEAAFBBQCAFPHRGtMBEB@NB^Cb@lECFHDPD@DNBJCFE@CEG@GTCPHBF`@JFBCHJJKRCP@JGTIAQGIDAPAVH@GCEKEEBAAVEBDADPFBBCFBBHE@WHClQPCFBTARE"],"encodeOffsets":[[120391,40118]]},"properties":{"cp":[117.313967,39.087764],"name":"东丽区","childNum":1}},{"id":"120111","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@CGECABC@@EDAQMGClgD]DM^c^YHCF@VrwJBBINBHAFAHBDAN@LDDGCCA@AC@AACBAAEFKA@KDCCJCJDFGF@DCBGDQJERFHGMCLEAAGAFGMMAWE@BHQLKIBAJECCCAAGQW[DAAjS@AIYXKGGT@NBFEBABOJBDMFADGG@BGH@@AACFKGCG@FMWMDABCBAACLCIGCAE@[P¥\\]N¯MNORU^]XKF`_XIIAIkDDZF@@FMDJLmTSDaHgDBJE@@DOBDH[HFJCBCGCBIMKH[L@AAAADUBACECGHWKCHTHBHaJDLF@JNF@FNLAH\\FABPD@EF@@HELCHVF@GXBB@DJBI\\PB@BN@BHK@GBAJ\\F@AACLABBAB@DFHB@FFJCDL@BA@@DF@JEBKHB@CjHBENDH@HSFBDKEAFG\\H@DE@AF@HHBANH@BQ@CBGNFT@`LFABIN@ALDBCFRHFB`D`ANANCG[DM"],"encodeOffsets":[[119940,40092]]},"properties":{"cp":[117.122247,39.029446],"name":"西青区","childNum":1}},{"id":"120112","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ZAZEVKXSPGVEnDHCJYJMVKNEPCdAZHRJJHHBDADG@ECMBCDCLCF@THHANQPWD@DBXRJ@HAJERSJAJBDCEOCAKYBQCA@GBCDSGAGBIHSNA@KCQMCF]INaCuOSGU{zm_yENH@HDELBD@BG@AHH@CHEBCNIAAPABEFMAS@HHWLJZ@BiTBB\\CRXBHDBDDIFABLJRKAGF@BXNNEHHBBBKFNDGHQEIFCRAHCDE@EHICIDDDLCB@ELBFABBD@BBDB@DDCHKCM@CBGAEBGBMAAJIAMP|@@Cd@EPF@DFF@DCB@DDD@@CRBEVNJ@D"],"encodeOffsets":[[120108,40016]]},"properties":{"cp":[117.382549,38.989577],"name":"津南区","childNum":1}},{"id":"120113","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@PQFFJICABACCDAKGJGLHRMVMMERKHH`WBFFCRFJHHIBOK_MC@QLCDIBAMA@COCGCDEkFa@]DMAA@AFsNQHOGBERDAABEFBFcMGeG[IQGGCmgABAAKLEAEF[MILECKA@BA@CABAWCCCIFEFYACBADICIIGM@KMDgDO@UCWIDECABKM@AJEB_KS@MEAH@DARG@BMGA@GBEF@@C[GEHFBCLEAGTG@MCAFgGA@@DGAALIFE@@CB@@ACKIDIGQJ@DHD@@GAAH@FDPbB@BDEJ@BBAFBNBHDBCDBDHBEJFBBDCFANA@AFTFFARPBNLABARA@DD@BB@HFA@PXBBLDACRKEAJF@GPD@AN@BjHCGZFJUN@BA^F@FIAAFNDCF@B\\LONADtJTAFBDCPBDGPETBADNDFFDFCD@LHBBKJFALIA@DB@@BNFBGHBBEN@@DHD@FFBDAH@AHBBCLDBF@@HFBBGJ@BBAFfLLABCH@ADLFJENAHKLAFBDEH@AHBDJB@DB@B@AADEFCLBNCDMDER@BKGA@ADEZDBELH"],"encodeOffsets":[[120140,40274]]},"properties":{"cp":[117.17482,39.255555],"name":"北辰区","childNum":1}},{"id":"120114","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DKEC^QZS^QwVMAAB@CCI@@CB@H@JCBCFEDBCFF@D@H@FALIXMBIECM@ADE@OABEPA@CBCD@HEDIGEC@AC@KJ@DCH@@DFADEDAFBFALGBMFABKGAAA@CAALEJOFAFIFEB@JKDEJBDCCAEAFI@IDIDINECABGBQBCFC@AOKIHED@EKG@JDFOH@EIEDEFOC@BCEACAACAEI@AAHUXC@GD@AMDED@BEF@BBHAKADID@BGCIBEIIGCAFOAGAEF@BHBALQ@CFCNMDKAEDCFBBC@@CIAACBGG@CFEAKBGLMBIFKEBCG@ADKBeKBEAAI@AHEA@GE@CADKAABGG@CBEA@EGC@CM@AFGAAHME@AA@@CJBBKIEALGA@KDCCEEEMCBCSAOFCHOACDEASBsIBCPM[K@ADEMCBEJB@E]EABM@IVYEDHiG@ABMC@HOE@BILFDQCBAKWA@OEB@GAAC@@CQBABKBAMQOEBSEBEB@BMDEACEAFIGAACDCCAAGAMBEAAI@CF@AaACO@EBGHB@@GC@CRICE@CBAAAKBBD@B[EBIHAL@AGM@@AOAJ[IA@CAAHWM@AHJ@G^G@AF@DA@@FEBBFcJqAEDECFFABBRCHBFEDDNAHA@@`@@CHG@AT`D@AH@@PBBCJDBFABGB@@BBAB@BIFBBDJ@@FE@DHKD@JA@@FGCCDE@AZFDM\\JBCZCRKA@FGA@JHB@FBBXFBCFB@BB@CRJ@DJ@HCTF@ADB@AHEAIFKACH@CA@CLA@FBAFB@@DH@CFE@ADIEKA@FAABIB@BCG@@CC@BAOMCJGG[C@BABG\\AAAD@FL@@DJBADHB@BA@ABOCCDC@@BC@ADB@ADA@AFL@@A\\D@FFBBEB@CLB@ELB@@BAB@DBB@DEA@DD@AFCACDBHJDALF@AFFBBCPB@DB@ABBBBBD@@DDBFB@DHBCHDBLEJNMF@DKCIFCFQCBAA@@AEBAA@@EA@DOICDGD@BB@ALDA@BYLKA@BBGGA@AMHEABCC@GNLE@NC@@DAAAFEAAJKBBBF@CB@BF@AFH@@BN@ADZF@DD@@DF@DCFBEBF@@JB@EDCPA@@FI@@BF@@DDCCTH@C@TD@BB@G^FAGPECBGG@@BSAEDALG@AJA@AHC@ABC@@FEAAHB@@DB@BDF@AHHFA@DBABD@D@CBBBCBXH@DB@AFH@EHCACFCBCFA@CFDACL@BB@AFB@BCDBBA@BBBBCFBADE@B@@BCBBBD@ABE@ABAA@BLD@BHDBEGA@AD@CABEL@CJHBEHDBEJBBPDFCBEJDDBH@@FADHBMNIHFDEFFD@AJFADBBBAF@D@AHDBRDBD@RCBBJV@@BD@BDPBFEBBCDTHL@DAHBBCDBABTDCJJBGJNBAND@ADFBHE@DED@H@@@FH@X@BCBBBCB@DFZ@DMA@CFA@GMCADGAGBCNMAAIA@KXGCODOJMD@LJJC@C@KC@BCFAFDRDBAD@CD^F@DF@BFFA@FJB@DbEPEbElMTIZGAAFA@CJ@BE@@@FHA@EJA@CHBADBGPA@BG@AFBBVGHFL@BBABD@"],"encodeOffsets":[[119960,40574]]},"properties":{"cp":[117.057959,39.466925],"name":"武清区","childNum":1}},{"id":"120115","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@GBAAE@AFC@CFBNC@@HWDGVBBJ@BFBDDBFBADD@EPCFJF@FPGCE@ILH@FFCJGPL@BEDADARAHDBMFCJCJ@JEJFBDBCDIACFILA@EFEJEBIPKFBB@DBBHBALEBANKHEBEACBCFEB@CG@CDI@@LBDD@HFCJGFC@AD@DOBAFPBF@BCN@FDAJWNKJEBG@C@E@DECAEFADIDG@ADJ@DDA@BBUNx]RYT]RFDCLJBADDBGDBDHBFJJ@TBBHB@@DH@AFKBCB@HE@@BEA@D@@ADBHC@@AA@@DCB@DB@@FJ@@FD@@HH@E\\F@ADB@ARBBBFED@BD@@BCA@HD@AJE@@ACAAHDB@BH@AHCB@EAAADGB@BE@BBK@FLEBDDADA@BDNB@DJCBBIR@DBBDBFALDX@DHL@DJFA@BH@HHKJAB@DC@GFOHED@BCBAZE@ADE@AFGACEEDA@@AGAAVJ@IVB@@DB@@DHGJB@JpFBCFBEPPBBCNFBGHBPC@EHBFFRDRA^GD@JCFDJGHBLGFECCBGHBBCFBDCFB@EFGD@@BF@@DPALEDCECDEDABED@HCHJH@FDDEFDHENCLBDDDA@ERABEN@JEDDBACEJ@AINMRBJGAIDCZEJCLAFRTJHAHJHFD@@AEKBAFBRJGF@BPAFBHEDBFHBAFO@@NFH@BEFGHAD@BFBBJID@BFDBDEB@J@AGDCL@FBNIBBFJD@HKDCNDF@DAFGFCdE@A@AICBCJC@C@AGAEFC@@MIBAABC@CKA@CBANACAGC@ARBJG@GLGHCX@LENBNE@EDAFBHHD@DCDIIMLCBGN@@AIEBANEGKLEJDDAAGIKHKCIBECIECSF@GBKGCIDC@FKAAGCBOC@OB@MKGC@CHCAAEFUB@HDLPJDBCAIFGDARDHGBC@EIKDGB@N@PHJHBLHBNARQXGFG@GIGK@IDEFEAAC@EHILCP@JCDGCEOFCBGABCKCBSEEK@ADIGO@AEOCEDDBqNAAH]MKiIAW@@CA@GA@DIMA@CGAAD_EEH@FIA@HIAAHUEDOHAFIOSKGSEcDAEI@@CBCOEC@CDCFEBKEFIMEGEA@@BIA@ERFBDQCABADQDCCAHMJBDEMEADGAUCCC@CDA@CCCICGO@BDJG@CADGK@CCGFICCBKEEDGBCAAEKDAABGFE@ACABCAAeA@HM@GBYD@BE@@NABGB@CCAW@@ACAEF_BYECII@CG"],"encodeOffsets":[[120145,40295]]},"properties":{"cp":[117.428094,39.596965],"name":"宝坻区","childNum":1}},{"id":"120116","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@LCFBLCBDJC@CEIFHTCBJRF@FXPC@@lAAVLZU@@HADBH@Xa@ANe@[BL|J\\FBpQLFLBBB@LFLFBPD@RDLpMpGBPNREHE@@dVF@BJB@BD@@DFDLBDGHGDA^c\\@@cFD@@jEBJZFLhrePFBEJGAENE@IVC@@RBLV@DPT@zJLHPFVDNECC@SACjQJBJCACIDMQhQD@tCD]LBHDBH@GLHNB@DQHBAFDHE@@DEBDFFAD@@BF@BBAB@BNFBEHCXDT@JGAGVEBEDCDB@BF@@DRC@BZ@PAP@BCFAJ@@B@BTC@DB@JEAAB@FB@ACAB@@CC@BCHOF@BADAAADCHBH@HECEB@BCHBDBBCFDBAACBAD@BBPGJF@@ABDB@BD@ABBDDAFCBC@CB@CCAKNECG@EF@@EzQBiAC@Ey@BUI@±]GaQaý¥Y_YeK]EaDqPmHcD{DKQBMMaKEUC_BOASY_YAYDXSIaa¹JgCeOQ[@RUbK¶MPGJMA¯CUSQÓgOKMWEa³OqIGFG@EBEACIGCFK]EE@@DFD@B@BG@BHCFC@@EEAIHEACBC@BFCBQCaDFKACEBECADE@SSKMIKHQKHEJ@[UGCoO@d[CFSMIAIE@AH[A@DOA@AQKOEEBARGNI@G@BSgE@AOACJSKMVC@IXF@hJAFmKCHB@PVVFAHHB@JC@CH@BABD@ABMFC@@BSB@BAAAHG@JL@BBBWABHHB@N@BMBMAEEESMA@EA@@CCE@FC@AEQ@@GCAA@AJC@BEK@AAABSGA@@FEA@BCBC@@EC@@DK@LHBD@HCDBFCBABB@F@@FB@@DFJ@HB@BLADK@HBDBCBG@@DH@@F@DCJIB@JK@AJFBCLBHH@DCBJFF@PATBHB@ABDTbB@DaCAAE@@CAACAOF@HADE@@BICAFBHEBhTBPDBJCFCªvEFeVTROJVT`OFH®_\\OF@DBJHKDBDABADCB¶n`|yHVPTvbDM^JDERNLDB@TMJGHAHBCTAD@HDBARLZDBFPCDIAGBUVOFGB"],"encodeOffsets":[[120348,39943]]},"properties":{"cp":[117.654173,39.032846],"name":"滨海新区","childNum":1}},{"id":"120117","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ABCJKD@RNDL`APGJIGQEEDAE_XGGQLNFUNQNKGIHLHCBDDABDBIJEEORFFAFDJAHC@CJLBDHJ@DJZF`AFEDB@BX@DB@DHABA@MF@@AZCHAN@@GfBBBADDB@BEFAHBBLCBFDBHAFCLFDAJDHEDDL@CHDBH@CI@AHPJDDD@DCB@DDDVDHBBCNFCFIAGNDBCDCRABDBCREAQ@FJB@AB@HFNFEJLFFADEDCD@PFAD@DJ@BFdCTFLHPTEJGBCPVFBGJB@GJB@EFG`FBCHB@DNBCJB@@HDB@@BXjJNLGZ@DBBrMACFANDBFP@JHBCL@FFATLDADHBDAPEAC@EBIFIJGNJJ@JBJJHJHFSZA@BND@@LVB@BJ@AFDBBDEDILjTABlEHHTBvWVAPDHCDFL@LHHB`MFALDNC^M^GJIEKABEGACC@IMA@AOB@EACIGAAEBAECCBDAAAAADAAEFCBDB@ACB@AAAABEBAD@AG@ADFAEB@A@GKSCCgG@AEJA@AFO@ECCQEEEOBGYG@BqGBKXBFKCYJKOIKNEASCeA_ECSBGFENEF@HDZ@FCBE`TEFB@EFHFFEECBCFDFADBDEUWCOGBAIECLG@CEIFA@CF@CGBEGACRA@GMHKG@CAAG^KDCsC@gRNRJCBDIDIAiRBD@TDDMFUCOEKGyIS@COU@AK@QD@JUF@FMHBFIEAfOgqEKIYFA@i@EC@d[@]dCBGHCHKAEC@CC@@AIA@AUE@cF@FGMQAOgFVSBEAODkRGD@XGFAADEAAOEBCACUFBBFALFDF@HUGOBCBHJBRSJIHO@QDILGIADIE_@AEOGSD@HFH@DEFID"],"encodeOffsets":[[120221,40183]]},"properties":{"cp":[117.63828,39.358886],"name":"宁河区","childNum":1}},{"id":"120118","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@AHC@@FCA@DHB@JS@@DA@@H]BCTKfG@BHK@@FEAADJD@RJhNNI@@FQBBDCBQA@BBLMIBNFJADHHEBuK@IA@AKU@UDDHKI@HAGAAC]@CDCA@MSAHPGBOEMEIA@EC@@DA@MBAASB@BCB@TE@@BBBBDAHCBDFABFNGBBFKBBFC@BDB@FPC@BPCPMACEoBE@AAC@@DcB_D@ECB@A@BA@B@@DC@@CA@@IE@AAG@BDK@EBABQA@JE@@HC@ABA@@BB@ADOA@DIAACA@NxQB@FIBHXHABFKBFLIDLPDTF@DNC@CAGB@FA@BJDXmBA[@@D@@NL@BHB@H\\BTD@HRB@JF@FL@FHDNDABJDCDTD@DTA@@LF@BB@XGBADE@@B@B@DJXJ@XEDFHAFHCBBDBDJBBHTCAIGBAAGBEA@EC@BCB@@BBAC@@AB@@CD@@DB@@DJ@DDF@DAF@@CLABBF@@AB@BBJ@@IBBDBB@ACJBJDR@@HD@@GfBAFXBCLH@GTPFjKAGSGDGXLHGFDBDVABCBB@B\\KLGJNDADHDAEI\\GCGPA@CF@AIhCbGTCnSIKNC@EE@CYlCBJJJ`W~W\\M^WV]^_°VIEG_PUSPISQfUFE©uEDIDCAAOgSFAAGBEJD@AF@BC@GPEDBBB@DF@BBbD@CaACSBAA@AGBS@OEEAICDG@AGDKEABIL@@IJADI@C@EG@@CH@DACAGAL@@OA@@GEI@CA@@EE@A@BADAAEDC@GACOKB@BMEB@ESEAABECAWBAECBBCC@CIBCS@@IWD"],"encodeOffsets":[[119909,39513]]},"properties":{"cp":[116.925304,38.935671],"name":"静海区","childNum":1}},{"id":"120119","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@@AECDAACDA@AACDE@CF@JMJEHB@BPBJKBEBED@@DB@DC@CFBBAD@@GDCCAFGD@BABBBADBDBDGAEJCBCCE@C^GACDCDBAE@BA@BAC@BABMF@EAFC@@C@@AH@AAD@C@DACA@AMEAC@GECJID@@BBABA@BDB@AB@@BBB@DBBDBFADBBHD@BGD@@ABGD@@EF@CCBAA@@GF@BL@@@EFABB@@B@ACJADHEBF@ABBJDBH@BBFCHAD@BDB@DIBIBCDBCDFB@ED@@AH@AAFCH@JBFEXBBB@DB@H@DADA@ABADGI@BID@DET@BGD@BCD@BBBCACAIMGICGCKB@FA@@EAB@BCA@DAA@MB@AEAEEEBG@SZOBDAJHHFCDBBABFD@@MB@ARZ@@GB@@IDFFAFABAAEDAHA@CE@@CCAFCAEDA@EA@@@CCCA@CCA@CCEAGBAAEACDCKK@CGFKBA@CAKHIICEGBEFOHE@ICKBAFEF@DI@OJIBIAABI@@DA@@CKCEGG@OIMAIBACIAC@EBCAQ@ABCAACCAEAQDE@EDE@EFB@A@ABBDB@BC@DDB@HEAGDGFCB@DCDADI@@BE@@BABC@EAA@@AAACBGAAB@BI@EADCE@ECGDBFEDCAIBE@ABE@CICDCACFEA@ABABIFCDCBEB@DABIQMAIA@@GC@AKB@@ACCCCGDEKGDCEEBGKBM\\IGIB@AGCBCC@BABCEAFE@@AOADAAEF@@BF@FHAEBA@KBA@ECBBBCBACEB@CC@ACFAFSL@BBDEDiRUC@@ADAFEBGHBNQBHFCCEDGIABICCADE@ADAAC@@AD@@CF@@EB@@MBBD@@AB@@BD@FBRWFQ@ENAACC@ICK@@EBGACACIGCILC@CFAIOG@CCEBCCK@CDBHI@A@CFCAAEC@IJAAAEG@CBEHAFG@ME@@EPABEGCAGFEAOB@AHEQIEAABFL@BC@GEGIGBSIEQMBGDWDEFBJIHE@IAOLBLI@DFABCCIFM@AFQB@FCBCCKAMDGFECCFECG@GIGDC@AFCBCFFDCDKFOB@CE@@AC@EH@FEACDEAADGAAHDDQNGAGFC@CAIDC@CBCFE@ADHDCDDD@DH@BDOVAFGFO@AAAGA@KBCGA@OHE@IAAHG@ODEAE@MLA@CEE@ADBFEDCA@CAAM@CDPJ@DGDA@@ECCE@CHIDGEA@@FDFBHFHSNAFBDDBNFBD@FEBO@E@EPKB@DNBNDCDCJ@DHFD@FCFDADEHEDE@CDBDHEFFJFLBDFAF@HAB@BGDBBJED@F@B@DGD@FLBHCBBBALTD@BD@@DB@@JF@AFHB@DB@@PCHB@@HBDABCABDEJBJCDE@AD@NAD@DBRABDBEHEDBDCHDHDADABBFA@FBFTCBAF@FDDCFBJAHD@BEF@BIFCLGFDDHBCBBB@BED@LN@LCBDADHDBHNHDHHDHAHHHA@AD@@CJBNCDEBCHAFFAJFBBFD@DFDBH@FCD@DAB@@FLHDFBFBB@JJDDBBAHAJFFGD@DA@ENBDBJAJDFJD@BCBDBHK@@BDBDDA@G@DDJHBBD@BBEH@FIJ@DCB@DF@H@B@FCBB@BA@@BDB@DDAAADAC@ACF@@DBA@ABB@BDBBBF@D@FEDABBCHDCDBBAP@BBEDJDJHHA@DDBBBEBEFC@CDIG@BCBCAACG@@DA@BFBB@BA@E@AD@BAB@FFFBCAAJDFAFBKHC@AAC@AD@DE@BJCDBBA@F@DDL@LBAD@DABCDFDDF@BFBJA@EDABDDBB@AADBFHDABBAHCFFJD@DBDAF@D@DCD@HDBBFDBDLADBBAF@NGJ@FCDCLABEDBJ@DCBIHABAD@NCD@JGFBN@NDF@BAJBJ@DBF@NDD@@EB@DCD@BDTALGC@D@ACDCBCEIEAACAECCDAF@JGBAAIFC"],"encodeOffsets":[[120398,41158]]},"properties":{"cp":[117.407449,40.045342],"name":"蓟州区","childNum":1}}],"UTF8Encoding":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "echarts",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "A powerful charting and visualization library for browser",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"keywords": [
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"help": "node build/build.js --help",
|
|
20
20
|
"prepublish": "node build/build.js --prepublish",
|
|
21
21
|
"test:visual": "node test/runTest/server.js",
|
|
22
|
+
"test:visual:report": "node test/runTest/genReport.js",
|
|
22
23
|
"test": "node build/build.js",
|
|
23
24
|
"mktest": "node test/build/mktest.js",
|
|
24
25
|
"mktest:help": "node test/build/mktest.js -h",
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"lint:dist": "echo 'It might take a while. Please wait ...' && ./node_modules/.bin/jshint --config .jshintrc-dist dist/echarts.js"
|
|
27
28
|
},
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"zrender": "4.
|
|
30
|
+
"zrender": "4.2.0"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
33
|
"@babel/core": "7.3.4",
|
package/src/chart/bar/BarView.js
CHANGED
|
@@ -410,11 +410,18 @@ var getLayout = {
|
|
|
410
410
|
}
|
|
411
411
|
};
|
|
412
412
|
|
|
413
|
+
function isZeroOnPolar(layout) {
|
|
414
|
+
return layout.startAngle != null
|
|
415
|
+
&& layout.endAngle != null
|
|
416
|
+
&& layout.startAngle === layout.endAngle;
|
|
417
|
+
}
|
|
418
|
+
|
|
413
419
|
function updateStyle(
|
|
414
420
|
el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar
|
|
415
421
|
) {
|
|
416
422
|
var color = data.getItemVisual(dataIndex, 'color');
|
|
417
423
|
var opacity = data.getItemVisual(dataIndex, 'opacity');
|
|
424
|
+
var stroke = data.getVisual('borderColor');
|
|
418
425
|
var itemStyleModel = itemModel.getModel('itemStyle');
|
|
419
426
|
var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();
|
|
420
427
|
|
|
@@ -424,7 +431,8 @@ function updateStyle(
|
|
|
424
431
|
|
|
425
432
|
el.useStyle(zrUtil.defaults(
|
|
426
433
|
{
|
|
427
|
-
|
|
434
|
+
stroke: isZeroOnPolar(layout) ? 'none' : stroke,
|
|
435
|
+
fill: isZeroOnPolar(layout) ? 'none' : color,
|
|
428
436
|
opacity: opacity
|
|
429
437
|
},
|
|
430
438
|
itemStyleModel.getBarItemStyle()
|
|
@@ -443,7 +451,9 @@ function updateStyle(
|
|
|
443
451
|
seriesModel, dataIndex, labelPositionOutside
|
|
444
452
|
);
|
|
445
453
|
}
|
|
446
|
-
|
|
454
|
+
if (isZeroOnPolar(layout)) {
|
|
455
|
+
hoverStyle.fill = hoverStyle.stroke = 'none';
|
|
456
|
+
}
|
|
447
457
|
graphic.setHoverStyle(el, hoverStyle);
|
|
448
458
|
}
|
|
449
459
|
|
|
@@ -25,7 +25,7 @@ export default SeriesModel.extend({
|
|
|
25
25
|
type: 'series.__base_bar__',
|
|
26
26
|
|
|
27
27
|
getInitialData: function (option, ecModel) {
|
|
28
|
-
return createListFromArray(this.getSource(), this);
|
|
28
|
+
return createListFromArray(this.getSource(), this, {useEncodeDefaulter: true});
|
|
29
29
|
},
|
|
30
30
|
|
|
31
31
|
getMarkerPosition: function (value) {
|
|
@@ -27,7 +27,7 @@ export default SeriesModel.extend({
|
|
|
27
27
|
dependencies: ['grid', 'polar'],
|
|
28
28
|
|
|
29
29
|
getInitialData: function (option, ecModel) {
|
|
30
|
-
return createListFromArray(this.getSource(), this);
|
|
30
|
+
return createListFromArray(this.getSource(), this, {useEncodeDefaulter: true});
|
|
31
31
|
},
|
|
32
32
|
|
|
33
33
|
brushSelector: 'point',
|
|
@@ -18,8 +18,12 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import * as echarts from '../../echarts';
|
|
21
|
+
import * as zrUtil from 'zrender/src/core/util';
|
|
21
22
|
import createListSimply from '../helper/createListSimply';
|
|
22
23
|
import {defaultEmphasis} from '../../util/model';
|
|
24
|
+
import {makeSeriesEncodeForNameBased} from '../../data/helper/sourceHelper';
|
|
25
|
+
import LegendVisualProvider from '../../visual/LegendVisualProvider';
|
|
26
|
+
import {bind} from 'zrender/src/core/util';
|
|
23
27
|
|
|
24
28
|
var FunnelSeries = echarts.extendSeriesModel({
|
|
25
29
|
|
|
@@ -30,15 +34,18 @@ var FunnelSeries = echarts.extendSeriesModel({
|
|
|
30
34
|
|
|
31
35
|
// Enable legend selection for each data item
|
|
32
36
|
// Use a function instead of direct access because data reference may changed
|
|
33
|
-
this.
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
this.legendVisualProvider = new LegendVisualProvider(
|
|
38
|
+
bind(this.getData, this), bind(this.getRawData, this)
|
|
39
|
+
);
|
|
36
40
|
// Extend labelLine emphasis
|
|
37
41
|
this._defaultLabelLine(option);
|
|
38
42
|
},
|
|
39
43
|
|
|
40
44
|
getInitialData: function (option, ecModel) {
|
|
41
|
-
return createListSimply(this,
|
|
45
|
+
return createListSimply(this, {
|
|
46
|
+
coordDimensions: ['value'],
|
|
47
|
+
encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)
|
|
48
|
+
});
|
|
42
49
|
},
|
|
43
50
|
|
|
44
51
|
_defaultLabelLine: function (option) {
|
|
@@ -24,6 +24,7 @@ import {defaultEmphasis} from '../../util/model';
|
|
|
24
24
|
import Model from '../../model/Model';
|
|
25
25
|
import {encodeHTML} from '../../util/format';
|
|
26
26
|
import createGraphFromNodeEdge from '../helper/createGraphFromNodeEdge';
|
|
27
|
+
import LegendVisualProvider from '../../visual/LegendVisualProvider';
|
|
27
28
|
|
|
28
29
|
var GraphSeries = echarts.extendSeriesModel({
|
|
29
30
|
|
|
@@ -32,10 +33,14 @@ var GraphSeries = echarts.extendSeriesModel({
|
|
|
32
33
|
init: function (option) {
|
|
33
34
|
GraphSeries.superApply(this, 'init', arguments);
|
|
34
35
|
|
|
36
|
+
var self = this;
|
|
37
|
+
function getCategoriesData() {
|
|
38
|
+
return self._categoriesData;
|
|
39
|
+
}
|
|
35
40
|
// Provide data for legend select
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
this.legendVisualProvider = new LegendVisualProvider(
|
|
42
|
+
getCategoriesData, getCategoriesData
|
|
43
|
+
);
|
|
39
44
|
|
|
40
45
|
this.fillDataTextStyle(option.edges || option.links);
|
|
41
46
|
|
|
@@ -94,6 +94,7 @@ export default echarts.extendChartView({
|
|
|
94
94
|
},
|
|
95
95
|
|
|
96
96
|
render: function (seriesModel, ecModel, api) {
|
|
97
|
+
var graphView = this;
|
|
97
98
|
var coordSys = seriesModel.coordinateSystem;
|
|
98
99
|
|
|
99
100
|
this._model = seriesModel;
|
|
@@ -163,6 +164,7 @@ export default echarts.extendChartView({
|
|
|
163
164
|
|
|
164
165
|
if (itemModel.get('focusNodeAdjacency')) {
|
|
165
166
|
el.on('mouseover', el[FOCUS_ADJACENCY] = function () {
|
|
167
|
+
graphView._clearTimer();
|
|
166
168
|
api.dispatchAction({
|
|
167
169
|
type: 'focusNodeAdjacency',
|
|
168
170
|
seriesId: seriesModel.id,
|
|
@@ -170,10 +172,7 @@ export default echarts.extendChartView({
|
|
|
170
172
|
});
|
|
171
173
|
});
|
|
172
174
|
el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {
|
|
173
|
-
|
|
174
|
-
type: 'unfocusNodeAdjacency',
|
|
175
|
-
seriesId: seriesModel.id
|
|
176
|
-
});
|
|
175
|
+
graphView._dispatchUnfocus(api);
|
|
177
176
|
});
|
|
178
177
|
}
|
|
179
178
|
|
|
@@ -187,6 +186,7 @@ export default echarts.extendChartView({
|
|
|
187
186
|
|
|
188
187
|
if (edge.getModel().get('focusNodeAdjacency')) {
|
|
189
188
|
el.on('mouseover', el[FOCUS_ADJACENCY] = function () {
|
|
189
|
+
graphView._clearTimer();
|
|
190
190
|
api.dispatchAction({
|
|
191
191
|
type: 'focusNodeAdjacency',
|
|
192
192
|
seriesId: seriesModel.id,
|
|
@@ -194,10 +194,7 @@ export default echarts.extendChartView({
|
|
|
194
194
|
});
|
|
195
195
|
});
|
|
196
196
|
el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {
|
|
197
|
-
|
|
198
|
-
type: 'unfocusNodeAdjacency',
|
|
199
|
-
seriesId: seriesModel.id
|
|
200
|
-
});
|
|
197
|
+
graphView._dispatchUnfocus(api);
|
|
201
198
|
});
|
|
202
199
|
}
|
|
203
200
|
});
|
|
@@ -249,6 +246,27 @@ export default echarts.extendChartView({
|
|
|
249
246
|
dispose: function () {
|
|
250
247
|
this._controller && this._controller.dispose();
|
|
251
248
|
this._controllerHost = {};
|
|
249
|
+
this._clearTimer();
|
|
250
|
+
},
|
|
251
|
+
|
|
252
|
+
_dispatchUnfocus: function (api, opt) {
|
|
253
|
+
var self = this;
|
|
254
|
+
this._clearTimer();
|
|
255
|
+
this._unfocusDelayTimer = setTimeout(function () {
|
|
256
|
+
self._unfocusDelayTimer = null;
|
|
257
|
+
api.dispatchAction({
|
|
258
|
+
type: 'unfocusNodeAdjacency',
|
|
259
|
+
seriesId: self._model.id
|
|
260
|
+
});
|
|
261
|
+
}, 500);
|
|
262
|
+
|
|
263
|
+
},
|
|
264
|
+
|
|
265
|
+
_clearTimer: function () {
|
|
266
|
+
if (this._unfocusDelayTimer) {
|
|
267
|
+
clearTimeout(this._unfocusDelayTimer);
|
|
268
|
+
this._unfocusDelayTimer = null;
|
|
269
|
+
}
|
|
252
270
|
},
|
|
253
271
|
|
|
254
272
|
focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
|