MapView.js 2.1 KB
Newer Older
L
lang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
define(function (require) {

    var zrUtil = require('zrender/core/util');
    var graphic = require('../../util/graphic');

    require('../../echarts').extendChartView({

        type: 'map',

        render: function (mapModel, ecModel, api) {

            this._renderMap(mapModel, ecModel, api);
        },

        _renderMap: function (mapModel, ecModel, api) {
            var data = mapModel.getData();

            var geo = mapModel.coordinateSystem;

            var mapGroup = new graphic.Group();
            var group = this.group;

            group.add(mapGroup);

            mapGroup.position = geo.position.slice();
            mapGroup.scale = geo.scale.slice();

            zrUtil.each(geo.regions, function (region) {

                var regionGroup = new graphic.Group();

L
lang 已提交
32 33 34 35 36 37 38 39 40 41 42 43 44 45
                var dataIdx = data.indexOfName(region.name);
                var itemModel = data.getItemModel(dataIdx);

                var itemStyleModel = itemModel.getModel('itemStyle.normal');
                var hoverItemStyleModel = itemModel.getModel('itemStyle.emphasis');

                var itemStyle = itemStyleModel.getItemStyle();
                var hoverItemStyle = hoverItemStyleModel.getItemStyle();

                // FIXME 兼容 2.0
                var areaStylePath = 'areaStyle.color';
                itemStyle.fill = itemStyleModel.get(areaStylePath);
                hoverItemStyle.fill = hoverItemStyleModel.get(areaStylePath);

L
lang 已提交
46 47
                var styleObj = zrUtil.defaults(
                    {
L
lang 已提交
48
                        fill: data.getItemVisual(dataIdx, 'color')
L
lang 已提交
49
                    },
L
lang 已提交
50
                    itemStyle
L
lang 已提交
51 52 53 54 55 56 57 58 59 60 61 62
                );

                zrUtil.each(region.contours, function (contour) {

                    var polygon = new graphic.Polygon({
                        shape: {
                            points: contour
                        }
                    });

                    polygon.setStyle(styleObj);

L
lang 已提交
63
                    graphic.setHoverStyle(polygon, hoverItemStyle);
L
lang 已提交
64 65 66 67 68 69 70 71 72

                    regionGroup.add(polygon);
                });

                mapGroup.add(regionGroup);
            });
        }
    });
});