GeoView.js 2.3 KB
Newer Older
L
lang 已提交
1 2 3 4 5 6 7
define(function (require) {

    'use strict';

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

L
lang 已提交
8 9
    var RoamController = require('../helper/RoamController');

L
lang 已提交
10 11 12 13
    return require('../../echarts').extendComponentView({

        type: 'geo',

L
lang 已提交
14 15 16 17 18
        init: function (ecModel, api) {
            var controller = new RoamController(api.getZr(), null, null);
            this._controller = controller;
        },

L
lang 已提交
19
        render: function (geoModel, ecModel, api) {
L
lang 已提交
20 21
            this.group.removeAll();

L
lang 已提交
22 23
            var geo = geoModel.coordinateSystem;

L
lang 已提交
24
            var itemStyleModel = geoModel.getModel('itemStyle.normal');
L
lang 已提交
25

L
lang 已提交
26
            var hoverItemStyleModel = geoModel.getModel('itemStyle.emphasis');
L
lang 已提交
27

L
lang 已提交
28 29
            var itemStyle = itemStyleModel.getItemStyle();
            var hoverItemStyle = hoverItemStyleModel.getItemStyle();
L
lang 已提交
30 31 32 33

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

L
lang 已提交
34 35
            var scale = geo.scale;

L
lang 已提交
36 37
            group.add(mapGroup);

L
lang 已提交
38
            mapGroup.position = geo.position.slice();
L
lang 已提交
39 40 41 42
            mapGroup.scale = scale.slice();

            itemStyle.lineWidth && (itemStyle.lineWidth /= scale[0]);
            hoverItemStyle.lineWidth && (hoverItemStyle.lineWidth /= scale[0]);
L
lang 已提交
43

L
lang 已提交
44 45 46 47 48 49 50 51 52 53 54 55
            zrUtil.each(geo.regions, function (region) {

                var regionGroup = new graphic.Group();

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

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

L
lang 已提交
56
                    polygon.setStyle(itemStyle);
L
lang 已提交
57

L
lang 已提交
58
                    graphic.setHoverStyle(polygon, hoverItemStyle);
L
lang 已提交
59 60 61 62 63 64

                    regionGroup.add(polygon);
                });

                mapGroup.add(regionGroup);
            });
L
lang 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78

            var controller = this._controller;
            controller.off('pan')
                .on('pan', function (dx, dy) {
                    api.dispatch({
                        type: 'geoRoam',
                        component: 'geo',
                        name: geoModel.name,
                        dx: dx,
                        dy: dy
                    });
                });

            controller.rect = geo.getViewBox();
L
lang 已提交
79 80 81
        }
    });
});