diff --git a/src/chart/map/MapView.js b/src/chart/map/MapView.js index bd659bfb37d78dc9ffea1693162d3d76a21a15f6..5888d9f6a403b16ec6d25de17e516e1a3e71b9db 100644 --- a/src/chart/map/MapView.js +++ b/src/chart/map/MapView.js @@ -54,9 +54,6 @@ define(function (require) { if (isNaN(value)) { return; } - var itemModel = data.getItemModel(idx); - var labelModel = itemModel.getModel('label.normal'); - var textStyleModel = labelModel.getModel('textStyle'); var layout = data.getItemLayout(idx); @@ -68,12 +65,6 @@ define(function (require) { var point = layout.point; var offset = layout.offset; - var showLabel = labelModel.get('show'); - - var labelText = data.getName(idx); - var labelColor = textStyleModel.getTextColor(); - var labelFont = textStyleModel.getFont(); - var circle = new graphic.Circle({ style: { fill: data.getVisual('color') @@ -87,13 +78,44 @@ define(function (require) { z2: 10 }); - if (showLabel && !offset) { + // First data on the same region + if (!offset) { + var labelText = data.getName(idx); + + var itemModel = data.getItemModel(idx); + var labelModel = itemModel.getModel('label.normal'); + var hoverLabelModel = itemModel.getModel('label.emphasis'); + + var textStyleModel = labelModel.getModel('textStyle'); + var hoverTextStyleModel = hoverLabelModel.getModel('textStyle'); + + var polygonGroups = data.getItemGraphicEl(idx); circle.setStyle({ - text: labelText, - textFill: labelColor, - textPosition: 'bottom', - textFont: labelFont + textPosition: 'bottom' }); + + var onEmphasis = function () { + circle.setStyle({ + text: hoverLabelModel.get('show') ? labelText : '', + textFill: hoverTextStyleModel.getTextColor(), + textFont: hoverTextStyleModel.getFont() + }); + }; + + var onNormal = function () { + circle.setStyle({ + text: labelModel.get('show') ? labelText : '', + textFill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont() + }); + }; + + polygonGroups.on('mouseover', onEmphasis) + .on('mouseout', onNormal) + .on('emphasis', onEmphasis) + .on('normal', onNormal); + + onNormal(); } group.add(circle); diff --git a/src/component/helper/MapDraw.js b/src/component/helper/MapDraw.js index 88e5fbf3bac599448722ece455f7545563ca8bf7..69e0020b30dd771aa86194cd430c6d8223507683 100644 --- a/src/component/helper/MapDraw.js +++ b/src/component/helper/MapDraw.js @@ -167,11 +167,9 @@ define(function (require) { // In the following cases label will be drawn // 1. In map series and data value is NaN // 2. In geo component - // 3. Data value is not NaN and label only shows on hover // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout if ( (!data || isDataNaN && (showLabel || hoverShowLabel)) - || (data && !isDataNaN && (!showLabel && hoverShowLabel)) || (itemLayout && itemLayout.showLabel) ) { var query = data ? dataIdx : region.name;