
<!--
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/simpleRequire.js"></script>
        <script src="lib/config.js"></script>
        <script src="lib/jquery.min.js"></script>
    </head>
    <body>
        <style>
            html, body, #main {
                width: 100%;
                height: 100%;
                margin: 0;
            }
        </style>
        <div id="main"></div>
        <script>

            require([
                'echarts',
                './data/map/json/world.json'
            ], function (echarts, worldJson) {

                echarts.registerMap('world', worldJson);

                var chart = echarts.init(document.getElementById('main'), null, {

                });

                var itemStyle = {
                    normal:{
                        borderWidth: 0.5,
                        borderColor: 'black'
                    },
                    emphasis:{
                        label:{show:true}
                        // shadowOffsetX: 0,
                        // shadowOffsetY: 0,
                        // shadowBlur: 20,
                        // shadowColor: 'rgba(0, 0, 0, 0.3)'
                    }
                };

                chart.setOption({
                    title : {
                        text: 'World Population (2010)',
                        subtext: 'from United Nations, Total population, both sexes combined, as of 1 July (thousands)',
                        sublink : 'http://esa.un.org/wpp/Excel-Data/population.htm',
                        left: 'center',
                        top: 'top'
                    },
                    tooltip : {
                        trigger: 'item',
                        formatter : function (params) {
                            var value = (params.value + '').split('.');
                            value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,')
                                    + '.' + value[1];
                            return params.seriesName + '<br/>' + params.name + ' : ' + value;
                        }
                    },
                    visualMap: {
                        min: 0,
                        max: 1000000,
                        text:['High','Low'],
                        realtime: true,
                        calculable : true,
                        color: ['orangered','yellow','lightskyblue']
                    },
                    series : [
                        {
                            name: 'World Population (2010)',
                            type: 'map',
                            map: 'world',
                            roam: true,
                            top: 60,
                            width: '80%',
                            itemStyle: itemStyle,
                            data:[
                                {name : 'Afghanistan', value : 28397.812},
                                {name : 'Angola', value : 19549.124},
                                {name : 'Albania', value : 3150.143},
                                {name : 'United Arab Emirates', value : 8441.537},
                                {name : 'Argentina', value : 40374.224},
                                {name : 'Armenia', value : 2963.496},
                                {name : 'French Southern and Antarctic Lands', value : 268.065},
                                {name : 'Australia', value : 22404.488},
                                {name : 'Austria', value : 8401.924},
                                {name : 'Azerbaijan', value : 9094.718},
                                {name : 'Burundi', value : 9232.753},
                                {name : 'Belgium', value : 10941.288},
                                {name : 'Benin', value : 9509.798},
                                {name : 'Burkina Faso', value : 15540.284},
                                {name : 'Bangladesh', value : 151125.475},
                                {name : 'Bulgaria', value : 7389.175},
                                {name : 'The Bahamas', value : 66402.316},
                                {name : 'Bosnia and Herzegovina', value : 3845.929},
                                {name : 'Belarus', value : 9491.07},
                                {name : 'Belize', value : 308.595},
                                {name : 'Bermuda', value : 64.951},
                                {name : 'Bolivia', value : 716.939},
                                {name : 'Brazil', value : 195210.154},
                                {name : 'Brunei', value : 27.223},
                                {name : 'Bhutan', value : 716.939},
                                {name : 'Botswana', value : 1969.341},
                                {name : 'Central African Republic', value : 4349.921},
                                {name : 'Canada', value : 34126.24},
                                {name : 'Switzerland', value : 7830.534},
                                {name : 'Chile', value : 17150.76},
                                {name : 'China', value : 1359821.465},
                                {name : 'Ivory Coast', value : 60508.978},
                                {name : 'Cameroon', value : 20624.343},
                                {name : 'Democratic Republic of the Congo', value : 62191.161},
                                {name : 'Republic of the Congo', value : 3573.024},
                                {name : 'Colombia', value : 46444.798},
                                {name : 'Costa Rica', value : 4669.685},
                                {name : 'Cuba', value : 11281.768},
                                {name : 'Northern Cyprus', value : 1.468},
                                {name : 'Cyprus', value : 1103.685},
                                {name : 'Czech Republic', value : 10553.701},
                                {name : 'Germany', value : 83017.404},
                                {name : 'Djibouti', value : 834.036},
                                {name : 'Denmark', value : 5550.959},
                                {name : 'Dominican Republic', value : 10016.797},
                                {name : 'Algeria', value : 37062.82},
                                {name : 'Ecuador', value : 15001.072},
                                {name : 'Egypt', value : 78075.705},
                                {name : 'Eritrea', value : 5741.159},
                                {name : 'Spain', value : 46182.038},
                                {name : 'Estonia', value : 1298.533},
                                {name : 'Ethiopia', value : 87095.281},
                                {name : 'Finland', value : 5367.693},
                                {name : 'Fiji', value : 860.559},
                                {name : 'Falkland Islands', value : 49.581},
                                {name : 'France', value : 63230.866},
                                {name : 'Gabon', value : 1556.222},
                                {name : 'United Kingdom', value : 62066.35},
                                {name : 'Georgia', value : 4388.674},
                                {name : 'Ghana', value : 24262.901},
                                {name : 'Guinea', value : 10876.033},
                                {name : 'Gambia', value : 1680.64},
                                {name : 'Guinea Bissau', value : 10876.033},
                                {name : 'Equatorial Guinea', value : 696.167},
                                {name : 'Greece', value : 11109.999},
                                {name : 'Greenland', value : 56.546},
                                {name : 'Guatemala', value : 14341.576},
                                {name : 'French Guiana', value : 231.169},
                                {name : 'Guyana', value : 786.126},
                                {name : 'Honduras', value : 7621.204},
                                {name : 'Croatia', value : 4338.027},
                                {name : 'Haiti', value : 9896.4},
                                {name : 'Hungary', value : 10014.633},
                                {name : 'Indonesia', value : 240676.485},
                                {name : 'India', value : 1205624.648},
                                {name : 'Ireland', value : 4467.561},
                                {name : 'Iran', value : 240676.485},
                                {name : 'Iraq', value : 30962.38},
                                {name : 'Iceland', value : 318.042},
                                {name : 'Israel', value : 7420.368},
                                {name : 'Italy', value : 60508.978},
                                {name : 'Jamaica', value : 2741.485},
                                {name : 'Jordan', value : 6454.554},
                                {name : 'Japan', value : 127352.833},
                                {name : 'Kazakhstan', value : 15921.127},
                                {name : 'Kenya', value : 40909.194},
                                {name : 'Kyrgyzstan', value : 5334.223},
                                {name : 'Cambodia', value : 14364.931},
                                {name : 'South Korea', value : 51452.352},
                                {name : 'Kosovo', value : 97.743},
                                {name : 'Kuwait', value : 2991.58},
                                {name : 'Laos', value : 6395.713},
                                {name : 'Lebanon', value : 4341.092},
                                {name : 'Liberia', value : 3957.99},
                                {name : 'Libya', value : 6040.612},
                                {name : 'Sri Lanka', value : 20758.779},
                                {name : 'Lesotho', value : 2008.921},
                                {name : 'Lithuania', value : 3068.457},
                                {name : 'Luxembourg', value : 507.885},
                                {name : 'Latvia', value : 2090.519},
                                {name : 'Morocco', value : 31642.36},
                                {name : 'Moldova', value : 103.619},
                                {name : 'Madagascar', value : 21079.532},
                                {name : 'Mexico', value : 117886.404},
                                {name : 'Macedonia', value : 507.885},
                                {name : 'Mali', value : 13985.961},
                                {name : 'Myanmar', value : 51931.231},
                                {name : 'Montenegro', value : 620.078},
                                {name : 'Mongolia', value : 2712.738},
                                {name : 'Mozambique', value : 23967.265},
                                {name : 'Mauritania', value : 3609.42},
                                {name : 'Malawi', value : 15013.694},
                                {name : 'Malaysia', value : 28275.835},
                                {name : 'Namibia', value : 2178.967},
                                {name : 'New Caledonia', value : 246.379},
                                {name : 'Niger', value : 15893.746},
                                {name : 'Nigeria', value : 159707.78},
                                {name : 'Nicaragua', value : 5822.209},
                                {name : 'Netherlands', value : 16615.243},
                                {name : 'Norway', value : 4891.251},
                                {name : 'Nepal', value : 26846.016},
                                {name : 'New Zealand', value : 4368.136},
                                {name : 'Oman', value : 2802.768},
                                {name : 'Pakistan', value : 173149.306},
                                {name : 'Panama', value : 3678.128},
                                {name : 'Peru', value : 29262.83},
                                {name : 'Philippines', value : 93444.322},
                                {name : 'Papua New Guinea', value : 6858.945},
                                {name : 'Poland', value : 38198.754},
                                {name : 'Puerto Rico', value : 3709.671},
                                {name : 'North Korea', value : 1.468},
                                {name : 'Portugal', value : 10589.792},
                                {name : 'Paraguay', value : 6459.721},
                                {name : 'Qatar', value : 1749.713},
                                {name : 'Romania', value : 21861.476},
                                {name : 'Russia', value : 21861.476},
                                {name : 'Rwanda', value : 10836.732},
                                {name : 'Western Sahara', value : 514.648},
                                {name : 'Saudi Arabia', value : 27258.387},
                                {name : 'Sudan', value : 35652.002},
                                {name : 'South Sudan', value : 9940.929},
                                {name : 'Senegal', value : 12950.564},
                                {name : 'Solomon Islands', value : 526.447},
                                {name : 'Sierra Leone', value : 5751.976},
                                {name : 'El Salvador', value : 6218.195},
                                {name : 'Somaliland', value : 9636.173},
                                {name : 'Somalia', value : 9636.173},
                                {name : 'Republic of Serbia', value : 3573.024},
                                {name : 'Suriname', value : 524.96},
                                {name : 'Slovakia', value : 5433.437},
                                {name : 'Slovenia', value : 2054.232},
                                {name : 'Sweden', value : 9382.297},
                                {name : 'Swaziland', value : 1193.148},
                                {name : 'Syria', value : 7830.534},
                                {name : 'Chad', value : 11720.781},
                                {name : 'Togo', value : 6306.014},
                                {name : 'Thailand', value : 66402.316},
                                {name : 'Tajikistan', value : 7627.326},
                                {name : 'Turkmenistan', value : 5041.995},
                                {name : 'East Timor', value : 10016.797},
                                {name : 'Trinidad and Tobago', value : 1328.095},
                                {name : 'Tunisia', value : 10631.83},
                                {name : 'Turkey', value : 72137.546},
                                {name : 'United Republic of Tanzania', value : 44973.33},
                                {name : 'Uganda', value : 33987.213},
                                {name : 'Ukraine', value : 46050.22},
                                {name : 'Uruguay', value : 3371.982},
                                {name : 'United States of America', value : 312247.116},
                                {name : 'Uzbekistan', value : 27769.27},
                                {name : 'Venezuela', value : 236.299},
                                {name : 'Vietnam', value : 89047.397},
                                {name : 'Vanuatu', value : 236.299},
                                {name : 'West Bank', value : 13.565},
                                {name : 'Yemen', value : 22763.008},
                                {name : 'South Africa', value : 51452.352},
                                {name : 'Zambia', value : 13216.985},
                                {name : 'Zimbabwe', value : 13076.978}
                            ]
                        }
                    ]
                });
            });

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