This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a commit to branch next
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git


The following commit(s) were added to refs/heads/next by this push:
     new f9307c7  fix(map): fix label not display on map
f9307c7 is described below

commit f9307c75901d099dbca95fe73a929d75a650bcd0
Author: pissang <bm2736...@gmail.com>
AuthorDate: Fri Jul 10 13:53:39 2020 +0800

    fix(map): fix label not display on map
---
 src/chart/map/MapView.ts        | 68 +++++++++++------------------------------
 src/component/helper/MapDraw.ts |  2 --
 src/util/graphic.ts             |  8 ++---
 3 files changed, 19 insertions(+), 59 deletions(-)

diff --git a/src/chart/map/MapView.ts b/src/chart/map/MapView.ts
index 9a7292c..2ced9f5 100644
--- a/src/chart/map/MapView.ts
+++ b/src/chart/map/MapView.ts
@@ -18,36 +18,22 @@
 */
 
 
-import * as zrUtil from 'zrender/src/core/util';
 import * as graphic from '../../util/graphic';
 import MapDraw from '../../component/helper/MapDraw';
 import ChartView from '../../view/Chart';
 import MapSeries, { MapDataItemOption } from './MapSeries';
 import GlobalModel from '../../model/Global';
 import ExtensionAPI from '../../ExtensionAPI';
-import { Payload } from '../../util/types';
+import { Payload, DisplayState, ECElement } from '../../util/types';
 import Model from '../../model/Model';
 
-
-const HIGH_DOWN_PROP = '__seriesMapHighDown' as const;
-const RECORD_VERSION_PROP = '__seriesMapCallKey' as const;
-const ORIGINAL_Z2 = '__mapOriginalZ2' as const;
-
-interface CircleExtend extends graphic.Circle {
-    [ORIGINAL_Z2]: number;
-}
 interface HighDownRecord {
     recordVersion: number;
-    circle: CircleExtend;
     labelModel: Model;
     hoverLabelModel: Model;
     emphasisText: string;
     normalText: string;
 };
-interface RegionGroupExtend extends graphic.Group {
-    [HIGH_DOWN_PROP]: HighDownRecord;
-    [RECORD_VERSION_PROP]: number;
-}
 
 class MapView extends ChartView {
 
@@ -175,7 +161,7 @@ class MapView extends ChartView {
                 const labelModel = itemModel.getModel('label');
                 const hoverLabelModel = itemModel.getModel(['emphasis', 
'label']);
 
-                const regionGroup = fullData.getItemGraphicEl(fullIndex) as 
RegionGroupExtend;
+                const regionGroup = fullData.getItemGraphicEl(fullIndex);
 
                 // `getFormattedLabel` needs to use `getData` inside. Here
                 // `mapModel.getData()` is shallow cloned from 
`mainSeries.getData()`.
@@ -184,43 +170,23 @@ class MapView extends ChartView {
                 // set on original data item will never get. But it has been 
working
                 // like that from the begining, and this scenario is rarely 
encountered.
                 // So it won't be fixed until have to.
-                const normalText = zrUtil.retrieve2(
-                    mapModel.getFormattedLabel(fullIndex, 'normal'),
-                    name
-                );
-                const emphasisText = zrUtil.retrieve2(
-                    mapModel.getFormattedLabel(fullIndex, 'emphasis'),
-                    normalText
-                );
-
-                let highDownRecord = regionGroup[HIGH_DOWN_PROP];
-                const recordVersion = Math.random();
-
-                // Prevent from register listeners duplicatedly when roaming.
-                if (!highDownRecord) {
-                    highDownRecord = regionGroup[HIGH_DOWN_PROP] = {} as 
HighDownRecord;
-                    // let onEmphasis = zrUtil.curry(onRegionHighDown, true);
-                    // let onNormal = zrUtil.curry(onRegionHighDown, false);
-                    // regionGroup.on('mouseover', onEmphasis)
-                    //     .on('mouseout', onNormal)
-                    //     .on('emphasis', onEmphasis)
-                    //     .on('normal', onNormal);
-                }
 
-                // Prevent removed regions effect current grapics.
-                regionGroup[RECORD_VERSION_PROP] = recordVersion;
-                zrUtil.extend(highDownRecord, {
-                    recordVersion,
-                    circle,
-                    labelModel,
-                    hoverLabelModel,
-                    emphasisText,
-                    normalText
-                } as HighDownRecord);
+                graphic.setLabelStyle(circle, labelModel, hoverLabelModel, {
+                    labelFetcher: {
+                        getFormattedLabel(idx: number, state: DisplayState) {
+                            return mapModel.getFormattedLabel(fullIndex, 
state);
+                        }
+                    }
+                });
+                if (!labelModel.get('position')) {
+                    circle.setTextConfig({
+                        position: 'bottom'
+                    });
+                }
 
-                // FIXME
-                // Consider set option when emphasis.
-                // enterRegionHighDown(highDownRecord, false);
+                (regionGroup as ECElement).onStateChange = function 
(fromState, toState) {
+                    circle.useState(toState);
+                };
             }
 
             group.add(circle);
diff --git a/src/component/helper/MapDraw.ts b/src/component/helper/MapDraw.ts
index 68ad436..34f474f 100644
--- a/src/component/helper/MapDraw.ts
+++ b/src/component/helper/MapDraw.ts
@@ -329,8 +329,6 @@ class MapDraw {
                         scaleY: 1 / targetScaleY
                     }, mapOrGeoModel);
                 }
-
-                regionGroup.add(textEl);
             }
 
             // setItemGraphicEl, setHoverStyle after all polygons and labels
diff --git a/src/util/graphic.ts b/src/util/graphic.ts
index 36c1160..ec145a2 100644
--- a/src/util/graphic.ts
+++ b/src/util/graphic.ts
@@ -112,7 +112,6 @@ type ExtendedProps = {
     __highByOuter: number
 
     __highDownSilentOnTouch: boolean
-    __onStateChange: (fromState: DisplayState, toState: DisplayState) => void
 
     __highDownDispatcher: boolean
 };
@@ -389,7 +388,7 @@ function singleLeaveEmphasis(el: Element) {
 }
 
 function updateElementState<T>(
-    el: ExtendedElement,
+    el: ECElement,
     updater: (this: void, el: Element, commonParam?: T) => void,
     commonParam?: T
 ) {
@@ -401,7 +400,7 @@ function updateElementState<T>(
     (el as ECElement).highlighted && (fromState = EMPHASIS, trigger = true);
     updater(el, commonParam);
     (el as ECElement).highlighted && (toState = EMPHASIS, trigger = true);
-    trigger && el.__onStateChange && el.__onStateChange(fromState, toState);
+    trigger && el.onStateChange && el.onStateChange(fromState, toState);
 }
 
 function traverseUpdateState<T>(
@@ -616,9 +615,6 @@ export function setAsHighDownDispatcher(el: Element, 
asDispatcher: boolean) {
     if ((el as ECElement).highDownSilentOnTouch) {
         extendedEl.__highDownSilentOnTouch = (el as 
ECElement).highDownSilentOnTouch;
     }
-    if ((el as ECElement).onStateChange) {
-        extendedEl.__onStateChange = (el as ECElement).onStateChange;
-    }
 
     // Simple optimize, since this method might be
     // called for each elements of a group in some cases.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@echarts.apache.org
For additional commands, e-mail: commits-h...@echarts.apache.org

Reply via email to