
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<html>
    <head>
        <meta charset='utf-8'>
        <script src='lib/esl.js'></script>
        <script src='lib/config.js'></script>
        <script src='lib/jquery.min.js'></script>
        <meta name="viewport" content="width=device-width, initial-scale=1" />
    </head>
    <body>
        <style>
            html, body, #main {
                width: 100%;
                height: 100%;
                margin: 0;
            }
        </style>
        <div id='main'></div>
        <script>

            require([
                'echarts'

                // 'echarts/chart/scatter',
                // 'echarts/chart/effectScatter',
                // 'echarts/component/legend',
                // 'echarts/component/geo'
            ], function (echarts) {

                var data = [
                    {name: '海门', value: 9},
                    {name: '鄂尔多斯', value: 12},
                    {name: '招远', value: 12},
                    {name: '舟山', value: 12},
                    {name: '齐齐哈尔', value: 14},
                    {name: '盐城', value: 15},
                    {name: '赤峰', value: 16},
                    {name: '青岛', value: 18},
                    {name: '乳山', value: 18},
                    {name: '金昌', value: 19},
                    {name: '泉州', value: 21},
                    {name: '莱西', value: 21},
                    {name: '日照', value: 21},
                    {name: '胶南', value: 22},
                    {name: '南通', value: 23},
                    {name: '拉萨', value: 24},
                    {name: '云浮', value: 24},
                    {name: '梅州', value: 25},
                    {name: '文登', value: 25},
                    {name: '上海', value: 25},
                    {name: '攀枝花', value: 25},
                    {name: '威海', value: 25},
                    {name: '承德', value: 25},
                    {name: '厦门', value: 26},
                    {name: '汕尾', value: 26},
                    {name: '潮州', value: 26},
                    {name: '丹东', value: 27},
                    {name: '太仓', value: 27},
                    {name: '曲靖', value: 27},
                    {name: '烟台', value: 28},
                    {name: '福州', value: 29},
                    {name: '瓦房店', value: 30},
                    {name: '即墨', value: 30},
                    {name: '抚顺', value: 31},
                    {name: '玉溪', value: 31},
                    {name: '张家口', value: 31},
                    {name: '阳泉', value: 31},
                    {name: '莱州', value: 32},
                    {name: '湖州', value: 32},
                    {name: '汕头', value: 32},
                    {name: '昆山', value: 33},
                    {name: '宁波', value: 33},
                    {name: '湛江', value: 33},
                    {name: '揭阳', value: 34},
                    {name: '荣成', value: 34},
                    {name: '连云港', value: 35},
                    {name: '葫芦岛', value: 35},
                    {name: '常熟', value: 36},
                    {name: '东莞', value: 36},
                    {name: '河源', value: 36},
                    {name: '淮安', value: 36},
                    {name: '泰州', value: 36},
                    {name: '南宁', value: 37},
                    {name: '营口', value: 37},
                    {name: '惠州', value: 37},
                    {name: '江阴', value: 37},
                    {name: '蓬莱', value: 37},
                    {name: '韶关', value: 38},
                    {name: '嘉峪关', value: 38},
                    {name: '广州', value: 38},
                    {name: '延安', value: 38},
                    {name: '太原', value: 39},
                    {name: '清远', value: 39},
                    {name: '中山', value: 39},
                    {name: '昆明', value: 39},
                    {name: '寿光', value: 40},
                    {name: '盘锦', value: 40},
                    {name: '长治', value: 41},
                    {name: '深圳', value: 41},
                    {name: '珠海', value: 42},
                    {name: '宿迁', value: 43},
                    {name: '咸阳', value: 43},
                    {name: '铜川', value: 44},
                    {name: '平度', value: 44},
                    {name: '佛山', value: 44},
                    {name: '海口', value: 44},
                    {name: '江门', value: 45},
                    {name: '章丘', value: 45},
                    {name: '肇庆', value: 46},
                    {name: '大连', value: 47},
                    {name: '临汾', value: 47},
                    {name: '吴江', value: 47},
                    {name: '石嘴山', value: 49},
                    {name: '沈阳', value: 50},
                    {name: '苏州', value: 50},
                    {name: '茂名', value: 50},
                    {name: '嘉兴', value: 51},
                    {name: '长春', value: 51},
                    {name: '胶州', value: 52},
                    {name: '银川', value: 52},
                    {name: '张家港', value: 52},
                    {name: '三门峡', value: 53},
                    {name: '锦州', value: 54},
                    {name: '南昌', value: 54},
                    {name: '柳州', value: 54},
                    {name: '三亚', value: 54},
                    {name: '自贡', value: 56},
                    {name: '吉林', value: 56},
                    {name: '阳江', value: 57},
                    {name: '泸州', value: 57},
                    {name: '西宁', value: 57},
                    {name: '宜宾', value: 58},
                    {name: '呼和浩特', value: 58},
                    {name: '成都', value: 58},
                    {name: '大同', value: 58},
                    {name: '镇江', value: 59},
                    {name: '桂林', value: 59},
                    {name: '张家界', value: 59},
                    {name: '宜兴', value: 59},
                    {name: '北海', value: 60},
                    {name: '西安', value: 61},
                    {name: '金坛', value: 62},
                    {name: '东营', value: 62},
                    {name: '牡丹江', value: 63},
                    {name: '遵义', value: 63},
                    {name: '绍兴', value: 63},
                    {name: '扬州', value: 64},
                    {name: '常州', value: 64},
                    {name: '潍坊', value: 65},
                    {name: '重庆', value: 66},
                    {name: '台州', value: 67},
                    {name: '南京', value: 67},
                    {name: '滨州', value: 70},
                    {name: '贵阳', value: 71},
                    {name: '无锡', value: 71},
                    {name: '本溪', value: 71},
                    {name: '克拉玛依', value: 72},
                    {name: '渭南', value: 72},
                    {name: '马鞍山', value: 72},
                    {name: '宝鸡', value: 72},
                    {name: '焦作', value: 75},
                    {name: '句容', value: 75},
                    {name: '北京', value: 79},
                    {name: '徐州', value: 79},
                    {name: '衡水', value: 80},
                    {name: '包头', value: 80},
                    {name: '绵阳', value: 80},
                    {name: '乌鲁木齐', value: 84},
                    {name: '枣庄', value: 84},
                    {name: '杭州', value: 84},
                    {name: '淄博', value: 85},
                    {name: '鞍山', value: 86},
                    {name: '溧阳', value: 86},
                    {name: '库尔勒', value: 86},
                    {name: '安阳', value: 90},
                    {name: '开封', value: 90},
                    {name: '济南', value: 92},
                    {name: '德阳', value: 93},
                    {name: '温州', value: 95},
                    {name: '九江', value: 96},
                    {name: '邯郸', value: 98},
                    {name: '临安', value: 99},
                    {name: '兰州', value: 99},
                    {name: '沧州', value: 100},
                    {name: '临沂', value: 103},
                    {name: '南充', value: 104},
                    {name: '天津', value: 105},
                    {name: '富阳', value: 106},
                    {name: '泰安', value: 112},
                    {name: '诸暨', value: 112},
                    {name: '郑州', value: 113},
                    {name: '哈尔滨', value: 114},
                    {name: '聊城', value: 116},
                    {name: '芜湖', value: 117},
                    {name: '唐山', value: 119},
                    {name: '平顶山', value: 119},
                    {name: '邢台', value: 119},
                    {name: '德州', value: 120},
                    {name: '济宁', value: 120},
                    {name: '荆州', value: 127},
                    {name: '宜昌', value: 130},
                    {name: '义乌', value: 132},
                    {name: '丽水', value: 133},
                    {name: '洛阳', value: 134},
                    {name: '秦皇岛', value: 136},
                    {name: '株洲', value: 143},
                    {name: '石家庄', value: 147},
                    {name: '莱芜', value: 148},
                    {name: '常德', value: 152},
                    {name: '保定', value: 153},
                    {name: '湘潭', value: 154},
                    {name: '金华', value: 157},
                    {name: '岳阳', value: 169},
                    {name: '长沙', value: 175},
                    {name: '衢州', value: 177},
                    {name: '廊坊', value: 193},
                    {name: '菏泽', value: 194},
                    {name: '合肥', value: 229},
                    {name: '武汉', value: 273},
                    {name: '大庆', value: 279}
                ];

                $.get('./data/map/json/china.json', function (chinaJson) {
                    echarts.registerMap('china', chinaJson);
                    var geoCoordMap = {
                        '海门':[121.15,31.89],
                        '鄂尔多斯':[109.781327,39.608266],
                        '招远':[120.38,37.35],
                        '舟山':[122.207216,29.985295],
                        '齐齐哈尔':[123.97,47.33],
                        '盐城':[120.13,33.38],
                        '赤峰':[118.87,42.28],
                        '青岛':[120.33,36.07],
                        '乳山':[121.52,36.89],
                        '金昌':[102.188043,38.520089],
                        '泉州':[118.58,24.93],
                        '莱西':[120.53,36.86],
                        '日照':[119.46,35.42],
                        '胶南':[119.97,35.88],
                        '南通':[121.05,32.08],
                        '拉萨':[91.11,29.97],
                        '云浮':[112.02,22.93],
                        '梅州':[116.1,24.55],
                        '文登':[122.05,37.2],
                        '上海':[121.48,31.22],
                        '攀枝花':[101.718637,26.582347],
                        '威海':[122.1,37.5],
                        '承德':[117.93,40.97],
                        '厦门':[118.1,24.46],
                        '汕尾':[115.375279,22.786211],
                        '潮州':[116.63,23.68],
                        '丹东':[124.37,40.13],
                        '太仓':[121.1,31.45],
                        '曲靖':[103.79,25.51],
                        '烟台':[121.39,37.52],
                        '福州':[119.3,26.08],
                        '瓦房店':[121.979603,39.627114],
                        '即墨':[120.45,36.38],
                        '抚顺':[123.97,41.97],
                        '玉溪':[102.52,24.35],
                        '张家口':[114.87,40.82],
                        '阳泉':[113.57,37.85],
                        '莱州':[119.942327,37.177017],
                        '湖州':[120.1,30.86],
                        '汕头':[116.69,23.39],
                        '昆山':[120.95,31.39],
                        '宁波':[121.56,29.86],
                        '湛江':[110.359377,21.270708],
                        '揭阳':[116.35,23.55],
                        '荣成':[122.41,37.16],
                        '连云港':[119.16,34.59],
                        '葫芦岛':[120.836932,40.711052],
                        '常熟':[120.74,31.64],
                        '东莞':[113.75,23.04],
                        '河源':[114.68,23.73],
                        '淮安':[119.15,33.5],
                        '泰州':[119.9,32.49],
                        '南宁':[108.33,22.84],
                        '营口':[122.18,40.65],
                        '惠州':[114.4,23.09],
                        '江阴':[120.26,31.91],
                        '蓬莱':[120.75,37.8],
                        '韶关':[113.62,24.84],
                        '嘉峪关':[98.289152,39.77313],
                        '广州':[113.23,23.16],
                        '延安':[109.47,36.6],
                        '太原':[112.53,37.87],
                        '清远':[113.01,23.7],
                        '中山':[113.38,22.52],
                        '昆明':[102.73,25.04],
                        '寿光':[118.73,36.86],
                        '盘锦':[122.070714,41.119997],
                        '长治':[113.08,36.18],
                        '深圳':[114.07,22.62],
                        '珠海':[113.52,22.3],
                        '宿迁':[118.3,33.96],
                        '咸阳':[108.72,34.36],
                        '铜川':[109.11,35.09],
                        '平度':[119.97,36.77],
                        '佛山':[113.11,23.05],
                        '海口':[110.35,20.02],
                        '江门':[113.06,22.61],
                        '章丘':[117.53,36.72],
                        '肇庆':[112.44,23.05],
                        '大连':[121.62,38.92],
                        '临汾':[111.5,36.08],
                        '吴江':[120.63,31.16],
                        '石嘴山':[106.39,39.04],
                        '沈阳':[123.38,41.8],
                        '苏州':[120.62,31.32],
                        '茂名':[110.88,21.68],
                        '嘉兴':[120.76,30.77],
                        '长春':[125.35,43.88],
                        '胶州':[120.03336,36.264622],
                        '银川':[106.27,38.47],
                        '张家港':[120.555821,31.875428],
                        '三门峡':[111.19,34.76],
                        '锦州':[121.15,41.13],
                        '南昌':[115.89,28.68],
                        '柳州':[109.4,24.33],
                        '三亚':[109.511909,18.252847],
                        '自贡':[104.778442,29.33903],
                        '吉林':[126.57,43.87],
                        '阳江':[111.95,21.85],
                        '泸州':[105.39,28.91],
                        '西宁':[101.74,36.56],
                        '宜宾':[104.56,29.77],
                        '呼和浩特':[111.65,40.82],
                        '成都':[104.06,30.67],
                        '大同':[113.3,40.12],
                        '镇江':[119.44,32.2],
                        '桂林':[110.28,25.29],
                        '张家界':[110.479191,29.117096],
                        '宜兴':[119.82,31.36],
                        '北海':[109.12,21.49],
                        '西安':[108.95,34.27],
                        '金坛':[119.56,31.74],
                        '东营':[118.49,37.46],
                        '牡丹江':[129.58,44.6],
                        '遵义':[106.9,27.7],
                        '绍兴':[120.58,30.01],
                        '扬州':[119.42,32.39],
                        '常州':[119.95,31.79],
                        '潍坊':[119.1,36.62],
                        '重庆':[106.54,29.59],
                        '台州':[121.420757,28.656386],
                        '南京':[118.78,32.04],
                        '滨州':[118.03,37.36],
                        '贵阳':[106.71,26.57],
                        '无锡':[120.29,31.59],
                        '本溪':[123.73,41.3],
                        '克拉玛依':[84.77,45.59],
                        '渭南':[109.5,34.52],
                        '马鞍山':[118.48,31.56],
                        '宝鸡':[107.15,34.38],
                        '焦作':[113.21,35.24],
                        '句容':[119.16,31.95],
                        '北京':[116.46,39.92],
                        '徐州':[117.2,34.26],
                        '衡水':[115.72,37.72],
                        '包头':[110,40.58],
                        '绵阳':[104.73,31.48],
                        '乌鲁木齐':[87.68,43.77],
                        '枣庄':[117.57,34.86],
                        '杭州':[120.19,30.26],
                        '淄博':[118.05,36.78],
                        '鞍山':[122.85,41.12],
                        '溧阳':[119.48,31.43],
                        '库尔勒':[86.06,41.68],
                        '安阳':[114.35,36.1],
                        '开封':[114.35,34.79],
                        '济南':[117,36.65],
                        '德阳':[104.37,31.13],
                        '温州':[120.65,28.01],
                        '九江':[115.97,29.71],
                        '邯郸':[114.47,36.6],
                        '临安':[119.72,30.23],
                        '兰州':[103.73,36.03],
                        '沧州':[116.83,38.33],
                        '临沂':[118.35,35.05],
                        '南充':[106.110698,30.837793],
                        '天津':[117.2,39.13],
                        '富阳':[119.95,30.07],
                        '泰安':[117.13,36.18],
                        '诸暨':[120.23,29.71],
                        '郑州':[113.65,34.76],
                        '哈尔滨':[126.63,45.75],
                        '聊城':[115.97,36.45],
                        '芜湖':[118.38,31.33],
                        '唐山':[118.02,39.63],
                        '平顶山':[113.29,33.75],
                        '邢台':[114.48,37.05],
                        '德州':[116.29,37.45],
                        '济宁':[116.59,35.38],
                        '荆州':[112.239741,30.335165],
                        '宜昌':[111.3,30.7],
                        '义乌':[120.06,29.32],
                        '丽水':[119.92,28.45],
                        '洛阳':[112.44,34.7],
                        '秦皇岛':[119.57,39.95],
                        '株洲':[113.16,27.83],
                        '石家庄':[114.48,38.03],
                        '莱芜':[117.67,36.19],
                        '常德':[111.69,29.05],
                        '保定':[115.48,38.85],
                        '湘潭':[112.91,27.87],
                        '金华':[119.64,29.12],
                        '岳阳':[113.09,29.37],
                        '长沙':[113,28.21],
                        '衢州':[118.88,28.97],
                        '廊坊':[116.7,39.53],
                        '菏泽':[115.480656,35.23375],
                        '合肥':[117.27,31.86],
                        '武汉':[114.31,30.52],
                        '大庆':[125.03,46.58]
                    };

                    var convertData = function (data) {
                        var res = [];
                        for (var i = 0; i < data.length; i++) {
                            var geoCoord = geoCoordMap[data[i].name];
                            if (geoCoord) {
                                res.push({
                                    name: data[i].name,
                                    value: geoCoord.concat(data[i].value)
                                });
                            }
                        }
                        return res;
                    };

                    var myChart = echarts.init(document.getElementById('main'));

                    myChart.setOption({
                        backgroundColor: '#404a59',
                        title: {
                            text: '全国主要城市空气质量',
                            subtext: 'data from PM25.in',
                            sublink: 'http://www.pm25.in',
                            left: 'center',
                            textStyle: {
                                color: '#fff'
                            }
                        },
                        tooltip : {
                            trigger: 'item'
                        },
                        legend: {
                            orient: 'vertical',
                            top: 'bottom',
                            left: 'right',
                            data:['pm2.5'],
                            textStyle: {
                                color: '#fff'
                            }
                        },
                        geo: {
                            map: 'china',
                            label: {
                                emphasis: {
                                    show: false
                                }
                            },
                            roam: true,
                            itemStyle: {
                                normal: {
                                    areaColor: '#323c48',
                                    borderColor: '#111'
                                },
                                emphasis: {
                                    areaColor: '#2a333d'
                                }
                            }
                        },
                        series : [
                            {
                                name: 'pm2.5',
                                type: 'scatter',
                                coordinateSystem: 'geo',
                                data: convertData(data),
                                symbolSize: function (val) {
                                    return val[2] / 10;
                                },
                                label: {
                                    normal: {
                                        formatter: '{b}',
                                        position: 'right',
                                        show: false
                                    },
                                    emphasis: {
                                        show: true
                                    }
                                },
                                itemStyle: {
                                    normal: {
                                        color: '#ddb926'
                                    }
                                }
                            },
                            {
                                name: 'Top 5',
                                type: 'effectScatter',
                                coordinateSystem: 'geo',
                                data: convertData(data.sort(function (a, b) {
                                    return b.value - a.value;
                                }).slice(0, 6)),
                                symbolSize: function (val) {
                                    return val[2] / 10;
                                },
                                showEffectOn: 'render',
                                rippleEffect: {
                                    brushType: 'stroke'
                                },
                                hoverAnimation: true,
                                label: {
                                    normal: {
                                        formatter: '{b}',
                                        position: 'right',
                                        show: true
                                    }
                                },
                                itemStyle: {
                                    normal: {
                                        color: '#f4e925',
                                        shadowBlur: 10,
                                        shadowColor: '#333'
                                    }
                                },
                                zlevel: 1
                            }
                        ]
                    });

                    setInterval(function () {
                        myChart.setOption({
                            series: [{
                                name: 'Top 5',
                                data: convertData(data.sort(function (a, b) {
                                    return b.value - a.value;
                                }).slice(0, Math.round(6 * Math.random())))
                            }]
                        });
                    }, 2000);

                });

            });

        </script>
    </body>
</html>