MapView.js 2.6 KB
Newer Older
L
lang 已提交
1 2
define(function (require) {

L
lang 已提交
3
    // var zrUtil = require('zrender/core/util');
L
lang 已提交
4 5
    var graphic = require('../../util/graphic');

L
lang 已提交
6
    var MapDraw = require('../../component/helper/MapDraw');
L
lang 已提交
7

L
lang 已提交
8 9 10 11
    require('../../echarts').extendChartView({

        type: 'map',

L
lang 已提交
12
        init: function (ecModel, api) {
L
lang 已提交
13 14
            var mapDraw = new MapDraw(api, false);
            this._mapDraw = mapDraw;
L
lang 已提交
15 16
        },

L
lang 已提交
17
        render: function (mapModel, ecModel, api) {
L
lang 已提交
18
            var group = this.group;
L
lang 已提交
19
            var mapDraw = this._mapDraw;
L
lang 已提交
20
            group.removeAll();
L
lang 已提交
21

L
lang 已提交
22 23
            group.add(mapDraw.group);

L
Map fix  
lang 已提交
24 25 26 27 28 29 30 31
            if (mapModel.needsDrawMap) {
                mapModel.needsDrawMap
                    mapDraw.draw(mapModel, ecModel, api);
            }
            else {
                // Remove drawed map
                mapDraw.group.removeAll();
            }
L
lang 已提交
32

L
lang 已提交
33
            mapModel.get('showLegendSymbol') && ecModel.getComponent('legend')
L
lang 已提交
34
                && this._renderSymbols(mapModel, ecModel, api);
L
lang 已提交
35

L
lang 已提交
36 37
        },

L
lang 已提交
38 39
        _renderSymbols: function (mapModel, ecModel, api) {
            var data = mapModel.getData();
L
lang 已提交
40 41
            var group = this.group;

L
lang 已提交
42
            data.each('value', function (value, idx) {
L
lang 已提交
43
                var itemModel = data.getItemModel(idx);
L
Tweak  
lang 已提交
44
                var labelModel = itemModel.getModel('label.normal');
L
lang 已提交
45 46
                var textStyleModel = labelModel.getModel('textStyle');

L
lang 已提交
47 48 49 50
                var layout = data.getItemLayout(idx);
                var point = layout.point;
                var offset = layout.offset;

L
Map fix  
lang 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
                var showLabel = labelModel.get('show');

                var labelText = data.getName(idx);
                var labelColor = textStyleModel.get('color');
                var labelFont = textStyleModel.getFont();

                if (!isNaN(value)) {
                    var circle = new graphic.Circle({
                        style: {
                            fill: data.getVisual('color')
                        },
                        shape: {
                            cx: point[0] + offset * 9,
                            cy: point[1],
                            r: 3
                        },
                        silent: true,

                        z2: 10
L
lang 已提交
70
                    });
L
Map fix  
lang 已提交
71 72 73 74 75 76 77 78 79 80 81

                    if (showLabel && !offset) {
                        circle.setStyle({
                            text: labelText,
                            textFill: labelColor,
                            textPosition: 'bottom',
                            textFont: labelFont
                        });
                    }

                    group.add(circle);
L
lang 已提交
82 83 84
                }

            });
L
lang 已提交
85 86 87
        }
    });
});