Skip to content

Commit

Permalink
Merge pull request #12156 from alex2wong/fix-11799
Browse files Browse the repository at this point in the history
fix 11799 add new option 'nameProperty' in map series option
  • Loading branch information
pissang authored Feb 16, 2020
2 parents 8028f41 + 055dea0 commit da128eb
Show file tree
Hide file tree
Showing 5 changed files with 264 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/chart/map/MapSeries.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ var MapSeries = SeriesModel.extend({
});
}

var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap);
var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
zrUtil.each(geoSource.regions, function (region) {
var name = region.name;
if (!dataNameMap.get(name)) {
Expand Down Expand Up @@ -256,7 +256,8 @@ var MapSeries = SeriesModel.extend({
itemStyle: {
areaColor: 'rgba(255,215,0,0.8)'
}
}
},
nameProperty: 'name'
}

});
Expand Down
5 changes: 3 additions & 2 deletions src/coord/geo/geoJSONLoader.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ export default {
/**
* @param {string} mapName
* @param {Object} mapRecord {specialAreas, geoJSON}
* @param {string} nameProperty
* @return {Object} {regions, boundingRect}
*/
load: function (mapName, mapRecord) {
load: function (mapName, mapRecord, nameProperty) {

var parsed = inner(mapRecord).parsed;

Expand All @@ -50,7 +51,7 @@ export default {

// https://jsperf.com/try-catch-performance-overhead
try {
regions = geoJSON ? parseGeoJson(geoJSON) : [];
regions = geoJSON ? parseGeoJson(geoJSON, nameProperty) : [];
}
catch (e) {
throw new Error('Invalid geoJson format\n' + e.message);
Expand Down
5 changes: 3 additions & 2 deletions src/coord/geo/geoSourceManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,18 @@ export default {
/**
* @param {string} mapName
* @param {Object} nameMap
* @param {string} nameProperty
* @return {Object} source {regions, regionsMap, nameCoordMap, boundingRect}
*/
load: function (mapName, nameMap) {
load: function (mapName, nameMap, nameProperty) {
var regions = [];
var regionsMap = createHashMap();
var nameCoordMap = createHashMap();
var boundingRect;
var mapRecords = retrieveMap(mapName);

each(mapRecords, function (record) {
var singleSource = loaders[record.type].load(mapName, record);
var singleSource = loaders[record.type].load(mapName, record, nameProperty);

each(singleSource.regions, function (region) {
var regionName = region.name;
Expand Down
5 changes: 3 additions & 2 deletions src/coord/geo/parseGeoJson.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,10 @@ function decodePolygon(coordinate, encodeOffsets, encodeScale) {
/**
* @alias module:echarts/coord/geo/parseGeoJson
* @param {Object} geoJson
* @param {string} nameProperty
* @return {module:zrender/container/Group}
*/
export default function (geoJson) {
export default function (geoJson, nameProperty) {

decode(geoJson);

Expand Down Expand Up @@ -136,7 +137,7 @@ export default function (geoJson) {
}

var region = new Region(
properties.name,
properties[nameProperty],
geometries,
properties.cp
);
Expand Down
252 changes: 252 additions & 0 deletions test/map-nameProperty.html

Large diffs are not rendered by default.

0 comments on commit da128eb

Please sign in to comment.