<!DOCTYPE html>
<!--
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">
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <script src="https://unpkg.com/d3-array@3"></script>
        <script src="https://unpkg.com/d3-geo@3/dist/d3-geo.js"></script>

        <script src="lib/simpleRequire.js"></script>
        <script src="lib/config.js"></script>
        <script src="lib/jquery.min.js"></script>
        <script src="lib/facePrint.js"></script>
        <script src="lib/testHelper.js"></script>
        <!-- <script src="ut/lib/canteen.js"></script> -->
        <link rel="stylesheet" href="lib/reset.css" />
    </head>
    <body>
        <div id="main0"></div>
        <div id="main1"></div>
        <div id="main2"></div>
        <div id="main3"></div>






        <script>
            require([
                'echarts',
                'map/json/china-new.json'
            ], function (echarts, chinaJson) {
                echarts.registerMap('china', chinaJson)

                option = {
                    series: {
                        type: 'map',
                        map: 'china',
                        itemStyle: {
                            areaColor: '#eee',
                            borderColor: '#000'
                        },
                        projection: {
                            project: (point) => [point[0] / 180 * Math.PI, -Math.log(Math.tan((Math.PI / 2 + point[1] / 180 * Math.PI) / 2))],
                            unproject: (point) => [point[0] * 180 / Math.PI, 2 * 180 / Math.PI * Math.atan(Math.exp(point[1])) - 90]
                        }
                    }
                };

                var chart = testHelper.create(echarts, 'main0', {
                    title: [
                        'China with Mercator projection'
                    ],
                    height: 500,
                    option: option
                });
            });
        </script>

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

                const projection = d3.geoProjection((x, y) => ([x, y / 0.75]))
                    .rotate([-115, 0]);

                option = {
                    series: {
                        type: 'map',
                        map: 'world',
                        top: 0,
                        bottom: 0,
                        itemStyle: {
                            areaColor: '#eee',
                            borderColor: '#000'
                        },
                        projection: {
                            project: (pt) => {
                                return projection(pt)
                            },
                            unproject: (pt) => projection.invert(pt),
                            stream: projection.stream
                        }
                    }
                };

                var chart = testHelper.create(echarts, 'main1', {
                    title: [
                        'Move China to Center'
                    ],
                    height: 500,
                    option: option
                });
            });
        </script>

        <script>

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

                echarts.registerMap('world', worldJson);
                const projection = d3.geoConicEqualArea();

                var latlong = {};
                {
                latlong['AD'] = {'latitude':42.5, 'longitude':1.5};
                latlong['AE'] = {'latitude':24, 'longitude':54};
                latlong['AF'] = {'latitude':33, 'longitude':65};
                latlong['AG'] = {'latitude':17.05, 'longitude':-61.8};
                latlong['AI'] = {'latitude':18.25, 'longitude':-63.1667};
                latlong['AL'] = {'latitude':41, 'longitude':20};
                latlong['AM'] = {'latitude':40, 'longitude':45};
                latlong['AN'] = {'latitude':12.25, 'longitude':-68.75};
                latlong['AO'] = {'latitude':-12.5, 'longitude':18.5};
                latlong['AP'] = {'latitude':35, 'longitude':105};
                latlong['AQ'] = {'latitude':-90, 'longitude':0};
                latlong['AR'] = {'latitude':-34, 'longitude':-64};
                latlong['AS'] = {'latitude':-14.3333, 'longitude':-170};
                latlong['AT'] = {'latitude':47.3333, 'longitude':13.3333};
                latlong['AU'] = {'latitude':-27, 'longitude':133};
                latlong['AW'] = {'latitude':12.5, 'longitude':-69.9667};
                latlong['AZ'] = {'latitude':40.5, 'longitude':47.5};
                latlong['BA'] = {'latitude':44, 'longitude':18};
                latlong['BB'] = {'latitude':13.1667, 'longitude':-59.5333};
                latlong['BD'] = {'latitude':24, 'longitude':90};
                latlong['BE'] = {'latitude':50.8333, 'longitude':4};
                latlong['BF'] = {'latitude':13, 'longitude':-2};
                latlong['BG'] = {'latitude':43, 'longitude':25};
                latlong['BH'] = {'latitude':26, 'longitude':50.55};
                latlong['BI'] = {'latitude':-3.5, 'longitude':30};
                latlong['BJ'] = {'latitude':9.5, 'longitude':2.25};
                latlong['BM'] = {'latitude':32.3333, 'longitude':-64.75};
                latlong['BN'] = {'latitude':4.5, 'longitude':114.6667};
                latlong['BO'] = {'latitude':-17, 'longitude':-65};
                latlong['BR'] = {'latitude':-10, 'longitude':-55};
                latlong['BS'] = {'latitude':24.25, 'longitude':-76};
                latlong['BT'] = {'latitude':27.5, 'longitude':90.5};
                latlong['BV'] = {'latitude':-54.4333, 'longitude':3.4};
                latlong['BW'] = {'latitude':-22, 'longitude':24};
                latlong['BY'] = {'latitude':53, 'longitude':28};
                latlong['BZ'] = {'latitude':17.25, 'longitude':-88.75};
                latlong['CA'] = {'latitude':54, 'longitude':-100};
                latlong['CC'] = {'latitude':-12.5, 'longitude':96.8333};
                latlong['CD'] = {'latitude':0, 'longitude':25};
                latlong['CF'] = {'latitude':7, 'longitude':21};
                latlong['CG'] = {'latitude':-1, 'longitude':15};
                latlong['CH'] = {'latitude':47, 'longitude':8};
                latlong['CI'] = {'latitude':8, 'longitude':-5};
                latlong['CK'] = {'latitude':-21.2333, 'longitude':-159.7667};
                latlong['CL'] = {'latitude':-30, 'longitude':-71};
                latlong['CM'] = {'latitude':6, 'longitude':12};
                latlong['CN'] = {'latitude':35, 'longitude':105};
                latlong['CO'] = {'latitude':4, 'longitude':-72};
                latlong['CR'] = {'latitude':10, 'longitude':-84};
                latlong['CU'] = {'latitude':21.5, 'longitude':-80};
                latlong['CV'] = {'latitude':16, 'longitude':-24};
                latlong['CX'] = {'latitude':-10.5, 'longitude':105.6667};
                latlong['CY'] = {'latitude':35, 'longitude':33};
                latlong['CZ'] = {'latitude':49.75, 'longitude':15.5};
                latlong['DE'] = {'latitude':51, 'longitude':9};
                latlong['DJ'] = {'latitude':11.5, 'longitude':43};
                latlong['DK'] = {'latitude':56, 'longitude':10};
                latlong['DM'] = {'latitude':15.4167, 'longitude':-61.3333};
                latlong['DO'] = {'latitude':19, 'longitude':-70.6667};
                latlong['DZ'] = {'latitude':28, 'longitude':3};
                latlong['EC'] = {'latitude':-2, 'longitude':-77.5};
                latlong['EE'] = {'latitude':59, 'longitude':26};
                latlong['EG'] = {'latitude':27, 'longitude':30};
                latlong['EH'] = {'latitude':24.5, 'longitude':-13};
                latlong['ER'] = {'latitude':15, 'longitude':39};
                latlong['ES'] = {'latitude':40, 'longitude':-4};
                latlong['ET'] = {'latitude':8, 'longitude':38};
                latlong['EU'] = {'latitude':47, 'longitude':8};
                latlong['FI'] = {'latitude':62, 'longitude':26};
                latlong['FJ'] = {'latitude':-18, 'longitude':175};
                latlong['FK'] = {'latitude':-51.75, 'longitude':-59};
                latlong['FM'] = {'latitude':6.9167, 'longitude':158.25};
                latlong['FO'] = {'latitude':62, 'longitude':-7};
                latlong['FR'] = {'latitude':46, 'longitude':2};
                latlong['GA'] = {'latitude':-1, 'longitude':11.75};
                latlong['GB'] = {'latitude':54, 'longitude':-2};
                latlong['GD'] = {'latitude':12.1167, 'longitude':-61.6667};
                latlong['GE'] = {'latitude':42, 'longitude':43.5};
                latlong['GF'] = {'latitude':4, 'longitude':-53};
                latlong['GH'] = {'latitude':8, 'longitude':-2};
                latlong['GI'] = {'latitude':36.1833, 'longitude':-5.3667};
                latlong['GL'] = {'latitude':72, 'longitude':-40};
                latlong['GM'] = {'latitude':13.4667, 'longitude':-16.5667};
                latlong['GN'] = {'latitude':11, 'longitude':-10};
                latlong['GP'] = {'latitude':16.25, 'longitude':-61.5833};
                latlong['GQ'] = {'latitude':2, 'longitude':10};
                latlong['GR'] = {'latitude':39, 'longitude':22};
                latlong['GS'] = {'latitude':-54.5, 'longitude':-37};
                latlong['GT'] = {'latitude':15.5, 'longitude':-90.25};
                latlong['GU'] = {'latitude':13.4667, 'longitude':144.7833};
                latlong['GW'] = {'latitude':12, 'longitude':-15};
                latlong['GY'] = {'latitude':5, 'longitude':-59};
                latlong['HK'] = {'latitude':22.25, 'longitude':114.1667};
                latlong['HM'] = {'latitude':-53.1, 'longitude':72.5167};
                latlong['HN'] = {'latitude':15, 'longitude':-86.5};
                latlong['HR'] = {'latitude':45.1667, 'longitude':15.5};
                latlong['HT'] = {'latitude':19, 'longitude':-72.4167};
                latlong['HU'] = {'latitude':47, 'longitude':20};
                latlong['ID'] = {'latitude':-5, 'longitude':120};
                latlong['IE'] = {'latitude':53, 'longitude':-8};
                latlong['IL'] = {'latitude':31.5, 'longitude':34.75};
                latlong['IN'] = {'latitude':20, 'longitude':77};
                latlong['IO'] = {'latitude':-6, 'longitude':71.5};
                latlong['IQ'] = {'latitude':33, 'longitude':44};
                latlong['IR'] = {'latitude':32, 'longitude':53};
                latlong['IS'] = {'latitude':65, 'longitude':-18};
                latlong['IT'] = {'latitude':42.8333, 'longitude':12.8333};
                latlong['JM'] = {'latitude':18.25, 'longitude':-77.5};
                latlong['JO'] = {'latitude':31, 'longitude':36};
                latlong['JP'] = {'latitude':36, 'longitude':138};
                latlong['KE'] = {'latitude':1, 'longitude':38};
                latlong['KG'] = {'latitude':41, 'longitude':75};
                latlong['KH'] = {'latitude':13, 'longitude':105};
                latlong['KI'] = {'latitude':1.4167, 'longitude':173};
                latlong['KM'] = {'latitude':-12.1667, 'longitude':44.25};
                latlong['KN'] = {'latitude':17.3333, 'longitude':-62.75};
                latlong['KP'] = {'latitude':40, 'longitude':127};
                latlong['KR'] = {'latitude':37, 'longitude':127.5};
                latlong['KW'] = {'latitude':29.3375, 'longitude':47.6581};
                latlong['KY'] = {'latitude':19.5, 'longitude':-80.5};
                latlong['KZ'] = {'latitude':48, 'longitude':68};
                latlong['LA'] = {'latitude':18, 'longitude':105};
                latlong['LB'] = {'latitude':33.8333, 'longitude':35.8333};
                latlong['LC'] = {'latitude':13.8833, 'longitude':-61.1333};
                latlong['LI'] = {'latitude':47.1667, 'longitude':9.5333};
                latlong['LK'] = {'latitude':7, 'longitude':81};
                latlong['LR'] = {'latitude':6.5, 'longitude':-9.5};
                latlong['LS'] = {'latitude':-29.5, 'longitude':28.5};
                latlong['LT'] = {'latitude':55, 'longitude':24};
                latlong['LU'] = {'latitude':49.75, 'longitude':6};
                latlong['LV'] = {'latitude':57, 'longitude':25};
                latlong['LY'] = {'latitude':25, 'longitude':17};
                latlong['MA'] = {'latitude':32, 'longitude':-5};
                latlong['MC'] = {'latitude':43.7333, 'longitude':7.4};
                latlong['MD'] = {'latitude':47, 'longitude':29};
                latlong['ME'] = {'latitude':42.5, 'longitude':19.4};
                latlong['MG'] = {'latitude':-20, 'longitude':47};
                latlong['MH'] = {'latitude':9, 'longitude':168};
                latlong['MK'] = {'latitude':41.8333, 'longitude':22};
                latlong['ML'] = {'latitude':17, 'longitude':-4};
                latlong['MM'] = {'latitude':22, 'longitude':98};
                latlong['MN'] = {'latitude':46, 'longitude':105};
                latlong['MO'] = {'latitude':22.1667, 'longitude':113.55};
                latlong['MP'] = {'latitude':15.2, 'longitude':145.75};
                latlong['MQ'] = {'latitude':14.6667, 'longitude':-61};
                latlong['MR'] = {'latitude':20, 'longitude':-12};
                latlong['MS'] = {'latitude':16.75, 'longitude':-62.2};
                latlong['MT'] = {'latitude':35.8333, 'longitude':14.5833};
                latlong['MU'] = {'latitude':-20.2833, 'longitude':57.55};
                latlong['MV'] = {'latitude':3.25, 'longitude':73};
                latlong['MW'] = {'latitude':-13.5, 'longitude':34};
                latlong['MX'] = {'latitude':23, 'longitude':-102};
                latlong['MY'] = {'latitude':2.5, 'longitude':112.5};
                latlong['MZ'] = {'latitude':-18.25, 'longitude':35};
                latlong['NA'] = {'latitude':-22, 'longitude':17};
                latlong['NC'] = {'latitude':-21.5, 'longitude':165.5};
                latlong['NE'] = {'latitude':16, 'longitude':8};
                latlong['NF'] = {'latitude':-29.0333, 'longitude':167.95};
                latlong['NG'] = {'latitude':10, 'longitude':8};
                latlong['NI'] = {'latitude':13, 'longitude':-85};
                latlong['NL'] = {'latitude':52.5, 'longitude':5.75};
                latlong['NO'] = {'latitude':62, 'longitude':10};
                latlong['NP'] = {'latitude':28, 'longitude':84};
                latlong['NR'] = {'latitude':-0.5333, 'longitude':166.9167};
                latlong['NU'] = {'latitude':-19.0333, 'longitude':-169.8667};
                latlong['NZ'] = {'latitude':-41, 'longitude':174};
                latlong['OM'] = {'latitude':21, 'longitude':57};
                latlong['PA'] = {'latitude':9, 'longitude':-80};
                latlong['PE'] = {'latitude':-10, 'longitude':-76};
                latlong['PF'] = {'latitude':-15, 'longitude':-140};
                latlong['PG'] = {'latitude':-6, 'longitude':147};
                latlong['PH'] = {'latitude':13, 'longitude':122};
                latlong['PK'] = {'latitude':30, 'longitude':70};
                latlong['PL'] = {'latitude':52, 'longitude':20};
                latlong['PM'] = {'latitude':46.8333, 'longitude':-56.3333};
                latlong['PR'] = {'latitude':18.25, 'longitude':-66.5};
                latlong['PS'] = {'latitude':32, 'longitude':35.25};
                latlong['PT'] = {'latitude':39.5, 'longitude':-8};
                latlong['PW'] = {'latitude':7.5, 'longitude':134.5};
                latlong['PY'] = {'latitude':-23, 'longitude':-58};
                latlong['QA'] = {'latitude':25.5, 'longitude':51.25};
                latlong['RE'] = {'latitude':-21.1, 'longitude':55.6};
                latlong['RO'] = {'latitude':46, 'longitude':25};
                latlong['RS'] = {'latitude':44, 'longitude':21};
                latlong['RU'] = {'latitude':60, 'longitude':100};
                latlong['RW'] = {'latitude':-2, 'longitude':30};
                latlong['SA'] = {'latitude':25, 'longitude':45};
                latlong['SB'] = {'latitude':-8, 'longitude':159};
                latlong['SC'] = {'latitude':-4.5833, 'longitude':55.6667};
                latlong['SD'] = {'latitude':15, 'longitude':30};
                latlong['SE'] = {'latitude':62, 'longitude':15};
                latlong['SG'] = {'latitude':1.3667, 'longitude':103.8};
                latlong['SH'] = {'latitude':-15.9333, 'longitude':-5.7};
                latlong['SI'] = {'latitude':46, 'longitude':15};
                latlong['SJ'] = {'latitude':78, 'longitude':20};
                latlong['SK'] = {'latitude':48.6667, 'longitude':19.5};
                latlong['SL'] = {'latitude':8.5, 'longitude':-11.5};
                latlong['SM'] = {'latitude':43.7667, 'longitude':12.4167};
                latlong['SN'] = {'latitude':14, 'longitude':-14};
                latlong['SO'] = {'latitude':10, 'longitude':49};
                latlong['SR'] = {'latitude':4, 'longitude':-56};
                latlong['ST'] = {'latitude':1, 'longitude':7};
                latlong['SV'] = {'latitude':13.8333, 'longitude':-88.9167};
                latlong['SY'] = {'latitude':35, 'longitude':38};
                latlong['SZ'] = {'latitude':-26.5, 'longitude':31.5};
                latlong['TC'] = {'latitude':21.75, 'longitude':-71.5833};
                latlong['TD'] = {'latitude':15, 'longitude':19};
                latlong['TF'] = {'latitude':-43, 'longitude':67};
                latlong['TG'] = {'latitude':8, 'longitude':1.1667};
                latlong['TH'] = {'latitude':15, 'longitude':100};
                latlong['TJ'] = {'latitude':39, 'longitude':71};
                latlong['TK'] = {'latitude':-9, 'longitude':-172};
                latlong['TM'] = {'latitude':40, 'longitude':60};
                latlong['TN'] = {'latitude':34, 'longitude':9};
                latlong['TO'] = {'latitude':-20, 'longitude':-175};
                latlong['TR'] = {'latitude':39, 'longitude':35};
                latlong['TT'] = {'latitude':11, 'longitude':-61};
                latlong['TV'] = {'latitude':-8, 'longitude':178};
                latlong['TW'] = {'latitude':23.5, 'longitude':121};
                latlong['TZ'] = {'latitude':-6, 'longitude':35};
                latlong['UA'] = {'latitude':49, 'longitude':32};
                latlong['UG'] = {'latitude':1, 'longitude':32};
                latlong['UM'] = {'latitude':19.2833, 'longitude':166.6};
                latlong['US'] = {'latitude':38, 'longitude':-97};
                latlong['UY'] = {'latitude':-33, 'longitude':-56};
                latlong['UZ'] = {'latitude':41, 'longitude':64};
                latlong['VA'] = {'latitude':41.9, 'longitude':12.45};
                latlong['VC'] = {'latitude':13.25, 'longitude':-61.2};
                latlong['VE'] = {'latitude':8, 'longitude':-66};
                latlong['VG'] = {'latitude':18.5, 'longitude':-64.5};
                latlong['VI'] = {'latitude':18.3333, 'longitude':-64.8333};
                latlong['VN'] = {'latitude':16, 'longitude':106};
                latlong['VU'] = {'latitude':-16, 'longitude':167};
                latlong['WF'] = {'latitude':-13.3, 'longitude':-176.2};
                latlong['WS'] = {'latitude':-13.5833, 'longitude':-172.3333};
                latlong['YE'] = {'latitude':15, 'longitude':48};
                latlong['YT'] = {'latitude':-12.8333, 'longitude':45.1667};
                latlong['ZA'] = {'latitude':-29, 'longitude':24};
                latlong['ZM'] = {'latitude':-15, 'longitude':30};
                latlong['ZW'] = {'latitude':-20, 'longitude':30};

                var mapData = [
                {'code':'AF' , 'name':'Afghanistan', 'value':32358260, 'color':'#eea638'},
                {'code':'AL' , 'name':'Albania', 'value':3215988, 'color':'#d8854f'},
                {'code':'DZ' , 'name':'Algeria', 'value':35980193, 'color':'#de4c4f'},
                {'code':'AO' , 'name':'Angola', 'value':19618432, 'color':'#de4c4f'},
                {'code':'AR' , 'name':'Argentina', 'value':40764561, 'color':'#86a965'},
                {'code':'AM' , 'name':'Armenia', 'value':3100236, 'color':'#d8854f'},
                {'code':'AU' , 'name':'Australia', 'value':22605732, 'color':'#8aabb0'},
                {'code':'AT' , 'name':'Austria', 'value':8413429, 'color':'#d8854f'},
                {'code':'AZ' , 'name':'Azerbaijan', 'value':9306023, 'color':'#d8854f'},
                {'code':'BH' , 'name':'Bahrain', 'value':1323535, 'color':'#eea638'},
                {'code':'BD' , 'name':'Bangladesh', 'value':150493658, 'color':'#eea638'},
                {'code':'BY' , 'name':'Belarus', 'value':9559441, 'color':'#d8854f'},
                {'code':'BE' , 'name':'Belgium', 'value':10754056, 'color':'#d8854f'},
                {'code':'BJ' , 'name':'Benin', 'value':9099922, 'color':'#de4c4f'},
                {'code':'BT' , 'name':'Bhutan', 'value':738267, 'color':'#eea638'},
                {'code':'BO' , 'name':'Bolivia', 'value':10088108, 'color':'#86a965'},
                {'code':'BA' , 'name':'Bosnia and Herzegovina', 'value':3752228, 'color':'#d8854f'},
                {'code':'BW' , 'name':'Botswana', 'value':2030738, 'color':'#de4c4f'},
                {'code':'BR' , 'name':'Brazil', 'value':196655014, 'color':'#86a965'},
                {'code':'BN' , 'name':'Brunei', 'value':405938, 'color':'#eea638'},
                {'code':'BG' , 'name':'Bulgaria', 'value':7446135, 'color':'#d8854f'},
                {'code':'BF' , 'name':'Burkina Faso', 'value':16967845, 'color':'#de4c4f'},
                {'code':'BI' , 'name':'Burundi', 'value':8575172, 'color':'#de4c4f'},
                {'code':'KH' , 'name':'Cambodia', 'value':14305183, 'color':'#eea638'},
                {'code':'CM' , 'name':'Cameroon', 'value':20030362, 'color':'#de4c4f'},
                {'code':'CA' , 'name':'Canada', 'value':34349561, 'color':'#a7a737'},
                {'code':'CV' , 'name':'Cape Verde', 'value':500585, 'color':'#de4c4f'},
                {'code':'CF' , 'name':'Central African Rep.', 'value':4486837, 'color':'#de4c4f'},
                {'code':'TD' , 'name':'Chad', 'value':11525496, 'color':'#de4c4f'},
                {'code':'CL' , 'name':'Chile', 'value':17269525, 'color':'#86a965'},
                {'code':'CN' , 'name':'China', 'value':1347565324, 'color':'#eea638'},
                {'code':'CO' , 'name':'Colombia', 'value':46927125, 'color':'#86a965'},
                {'code':'KM' , 'name':'Comoros', 'value':753943, 'color':'#de4c4f'},
                {'code':'CD' , 'name':'Congo, Dem. Rep.', 'value':67757577, 'color':'#de4c4f'},
                {'code':'CG' , 'name':'Congo, Rep.', 'value':4139748, 'color':'#de4c4f'},
                {'code':'CR' , 'name':'Costa Rica', 'value':4726575, 'color':'#a7a737'},
                {'code':'CI' , 'name':'Cote d\'Ivoire', 'value':20152894, 'color':'#de4c4f'},
                {'code':'HR' , 'name':'Croatia', 'value':4395560, 'color':'#d8854f'},
                {'code':'CU' , 'name':'Cuba', 'value':11253665, 'color':'#a7a737'},
                {'code':'CY' , 'name':'Cyprus', 'value':1116564, 'color':'#d8854f'},
                {'code':'CZ' , 'name':'Czech Rep.', 'value':10534293, 'color':'#d8854f'},
                {'code':'DK' , 'name':'Denmark', 'value':5572594, 'color':'#d8854f'},
                {'code':'DJ' , 'name':'Djibouti', 'value':905564, 'color':'#de4c4f'},
                {'code':'DO' , 'name':'Dominican Rep.', 'value':10056181, 'color':'#a7a737'},
                {'code':'EC' , 'name':'Ecuador', 'value':14666055, 'color':'#86a965'},
                {'code':'EG' , 'name':'Egypt', 'value':82536770, 'color':'#de4c4f'},
                {'code':'SV' , 'name':'El Salvador', 'value':6227491, 'color':'#a7a737'},
                {'code':'GQ' , 'name':'Equatorial Guinea', 'value':720213, 'color':'#de4c4f'},
                {'code':'ER' , 'name':'Eritrea', 'value':5415280, 'color':'#de4c4f'},
                {'code':'EE' , 'name':'Estonia', 'value':1340537, 'color':'#d8854f'},
                {'code':'ET' , 'name':'Ethiopia', 'value':84734262, 'color':'#de4c4f'},
                {'code':'FJ' , 'name':'Fiji', 'value':868406, 'color':'#8aabb0'},
                {'code':'FI' , 'name':'Finland', 'value':5384770, 'color':'#d8854f'},
                {'code':'FR' , 'name':'France', 'value':63125894, 'color':'#d8854f'},
                {'code':'GA' , 'name':'Gabon', 'value':1534262, 'color':'#de4c4f'},
                {'code':'GM' , 'name':'Gambia', 'value':1776103, 'color':'#de4c4f'},
                {'code':'GE' , 'name':'Georgia', 'value':4329026, 'color':'#d8854f'},
                {'code':'DE' , 'name':'Germany', 'value':82162512, 'color':'#d8854f'},
                {'code':'GH' , 'name':'Ghana', 'value':24965816, 'color':'#de4c4f'},
                {'code':'GR' , 'name':'Greece', 'value':11390031, 'color':'#d8854f'},
                {'code':'GT' , 'name':'Guatemala', 'value':14757316, 'color':'#a7a737'},
                {'code':'GN' , 'name':'Guinea', 'value':10221808, 'color':'#de4c4f'},
                {'code':'GW' , 'name':'Guinea-Bissau', 'value':1547061, 'color':'#de4c4f'},
                {'code':'GY' , 'name':'Guyana', 'value':756040, 'color':'#86a965'},
                {'code':'HT' , 'name':'Haiti', 'value':10123787, 'color':'#a7a737'},
                {'code':'HN' , 'name':'Honduras', 'value':7754687, 'color':'#a7a737'},
                {'code':'HK' , 'name':'Hong Kong, China', 'value':7122187, 'color':'#eea638'},
                {'code':'HU' , 'name':'Hungary', 'value':9966116, 'color':'#d8854f'},
                {'code':'IS' , 'name':'Iceland', 'value':324366, 'color':'#d8854f'},
                {'code':'IN' , 'name':'India', 'value':1241491960, 'color':'#eea638'},
                {'code':'ID' , 'name':'Indonesia', 'value':242325638, 'color':'#eea638'},
                {'code':'IR' , 'name':'Iran', 'value':74798599, 'color':'#eea638'},
                {'code':'IQ' , 'name':'Iraq', 'value':32664942, 'color':'#eea638'},
                {'code':'IE' , 'name':'Ireland', 'value':4525802, 'color':'#d8854f'},
                {'code':'IL' , 'name':'Israel', 'value':7562194, 'color':'#eea638'},
                {'code':'IT' , 'name':'Italy', 'value':60788694, 'color':'#d8854f'},
                {'code':'JM' , 'name':'Jamaica', 'value':2751273, 'color':'#a7a737'},
                {'code':'JP' , 'name':'Japan', 'value':126497241, 'color':'#eea638'},
                {'code':'JO' , 'name':'Jordan', 'value':6330169, 'color':'#eea638'},
                {'code':'KZ' , 'name':'Kazakhstan', 'value':16206750, 'color':'#eea638'},
                {'code':'KE' , 'name':'Kenya', 'value':41609728, 'color':'#de4c4f'},
                {'code':'KP' , 'name':'Korea, Dem. Rep.', 'value':24451285, 'color':'#eea638'},
                {'code':'KR' , 'name':'Korea, Rep.', 'value':48391343, 'color':'#eea638'},
                {'code':'KW' , 'name':'Kuwait', 'value':2818042, 'color':'#eea638'},
                {'code':'KG' , 'name':'Kyrgyzstan', 'value':5392580, 'color':'#eea638'},
                {'code':'LA' , 'name':'Laos', 'value':6288037, 'color':'#eea638'},
                {'code':'LV' , 'name':'Latvia', 'value':2243142, 'color':'#d8854f'},
                {'code':'LB' , 'name':'Lebanon', 'value':4259405, 'color':'#eea638'},
                {'code':'LS' , 'name':'Lesotho', 'value':2193843, 'color':'#de4c4f'},
                {'code':'LR' , 'name':'Liberia', 'value':4128572, 'color':'#de4c4f'},
                {'code':'LY' , 'name':'Libya', 'value':6422772, 'color':'#de4c4f'},
                {'code':'LT' , 'name':'Lithuania', 'value':3307481, 'color':'#d8854f'},
                {'code':'LU' , 'name':'Luxembourg', 'value':515941, 'color':'#d8854f'},
                {'code':'MK' , 'name':'Macedonia, FYR', 'value':2063893, 'color':'#d8854f'},
                {'code':'MG' , 'name':'Madagascar', 'value':21315135, 'color':'#de4c4f'},
                {'code':'MW' , 'name':'Malawi', 'value':15380888, 'color':'#de4c4f'},
                {'code':'MY' , 'name':'Malaysia', 'value':28859154, 'color':'#eea638'},
                {'code':'ML' , 'name':'Mali', 'value':15839538, 'color':'#de4c4f'},
                {'code':'MR' , 'name':'Mauritania', 'value':3541540, 'color':'#de4c4f'},
                {'code':'MU' , 'name':'Mauritius', 'value':1306593, 'color':'#de4c4f'},
                {'code':'MX' , 'name':'Mexico', 'value':114793341, 'color':'#a7a737'},
                {'code':'MD' , 'name':'Moldova', 'value':3544864, 'color':'#d8854f'},
                {'code':'MN' , 'name':'Mongolia', 'value':2800114, 'color':'#eea638'},
                {'code':'ME' , 'name':'Montenegro', 'value':632261, 'color':'#d8854f'},
                {'code':'MA' , 'name':'Morocco', 'value':32272974, 'color':'#de4c4f'},
                {'code':'MZ' , 'name':'Mozambique', 'value':23929708, 'color':'#de4c4f'},
                {'code':'MM' , 'name':'Myanmar', 'value':48336763, 'color':'#eea638'},
                {'code':'NA' , 'name':'Namibia', 'value':2324004, 'color':'#de4c4f'},
                {'code':'NP' , 'name':'Nepal', 'value':30485798, 'color':'#eea638'},
                {'code':'NL' , 'name':'Netherlands', 'value':16664746, 'color':'#d8854f'},
                {'code':'NZ' , 'name':'New Zealand', 'value':4414509, 'color':'#8aabb0'},
                {'code':'NI' , 'name':'Nicaragua', 'value':5869859, 'color':'#a7a737'},
                {'code':'NE' , 'name':'Niger', 'value':16068994, 'color':'#de4c4f'},
                {'code':'NG' , 'name':'Nigeria', 'value':162470737, 'color':'#de4c4f'},
                {'code':'NO' , 'name':'Norway', 'value':4924848, 'color':'#d8854f'},
                {'code':'OM' , 'name':'Oman', 'value':2846145, 'color':'#eea638'},
                {'code':'PK' , 'name':'Pakistan', 'value':176745364, 'color':'#eea638'},
                {'code':'PA' , 'name':'Panama', 'value':3571185, 'color':'#a7a737'},
                {'code':'PG' , 'name':'Papua New Guinea', 'value':7013829, 'color':'#8aabb0'},
                {'code':'PY' , 'name':'Paraguay', 'value':6568290, 'color':'#86a965'},
                {'code':'PE' , 'name':'Peru', 'value':29399817, 'color':'#86a965'},
                {'code':'PH' , 'name':'Philippines', 'value':94852030, 'color':'#eea638'},
                {'code':'PL' , 'name':'Poland', 'value':38298949, 'color':'#d8854f'},
                {'code':'PT' , 'name':'Portugal', 'value':10689663, 'color':'#d8854f'},
                {'code':'PR' , 'name':'Puerto Rico', 'value':3745526, 'color':'#a7a737'},
                {'code':'QA' , 'name':'Qatar', 'value':1870041, 'color':'#eea638'},
                {'code':'RO' , 'name':'Romania', 'value':21436495, 'color':'#d8854f'},
                {'code':'RU' , 'name':'Russia', 'value':142835555, 'color':'#d8854f'},
                {'code':'RW' , 'name':'Rwanda', 'value':10942950, 'color':'#de4c4f'},
                {'code':'SA' , 'name':'Saudi Arabia', 'value':28082541, 'color':'#eea638'},
                {'code':'SN' , 'name':'Senegal', 'value':12767556, 'color':'#de4c4f'},
                {'code':'RS' , 'name':'Serbia', 'value':9853969, 'color':'#d8854f'},
                {'code':'SL' , 'name':'Sierra Leone', 'value':5997486, 'color':'#de4c4f'},
                {'code':'SG' , 'name':'Singapore', 'value':5187933, 'color':'#eea638'},
                {'code':'SK' , 'name':'Slovak Republic', 'value':5471502, 'color':'#d8854f'},
                {'code':'SI' , 'name':'Slovenia', 'value':2035012, 'color':'#d8854f'},
                {'code':'SB' , 'name':'Solomon Islands', 'value':552267, 'color':'#8aabb0'},
                {'code':'SO' , 'name':'Somalia', 'value':9556873, 'color':'#de4c4f'},
                {'code':'ZA' , 'name':'South Africa', 'value':50459978, 'color':'#de4c4f'},
                {'code':'ES' , 'name':'Spain', 'value':46454895, 'color':'#d8854f'},
                {'code':'LK' , 'name':'Sri Lanka', 'value':21045394, 'color':'#eea638'},
                {'code':'SD' , 'name':'Sudan', 'value':34735288, 'color':'#de4c4f'},
                {'code':'SR' , 'name':'Suriname', 'value':529419, 'color':'#86a965'},
                {'code':'SZ' , 'name':'Swaziland', 'value':1203330, 'color':'#de4c4f'},
                {'code':'SE' , 'name':'Sweden', 'value':9440747, 'color':'#d8854f'},
                {'code':'CH' , 'name':'Switzerland', 'value':7701690, 'color':'#d8854f'},
                {'code':'SY' , 'name':'Syria', 'value':20766037, 'color':'#eea638'},
                {'code':'TW' , 'name':'Taiwan', 'value':23072000, 'color':'#eea638'},
                {'code':'TJ' , 'name':'Tajikistan', 'value':6976958, 'color':'#eea638'},
                {'code':'TZ' , 'name':'Tanzania', 'value':46218486, 'color':'#de4c4f'},
                {'code':'TH' , 'name':'Thailand', 'value':69518555, 'color':'#eea638'},
                {'code':'TG' , 'name':'Togo', 'value':6154813, 'color':'#de4c4f'},
                {'code':'TT' , 'name':'Trinidad and Tobago', 'value':1346350, 'color':'#a7a737'},
                {'code':'TN' , 'name':'Tunisia', 'value':10594057, 'color':'#de4c4f'},
                {'code':'TR' , 'name':'Turkey', 'value':73639596, 'color':'#d8854f'},
                {'code':'TM' , 'name':'Turkmenistan', 'value':5105301, 'color':'#eea638'},
                {'code':'UG' , 'name':'Uganda', 'value':34509205, 'color':'#de4c4f'},
                {'code':'UA' , 'name':'Ukraine', 'value':45190180, 'color':'#d8854f'},
                {'code':'AE' , 'name':'United Arab Emirates', 'value':7890924, 'color':'#eea638'},
                {'code':'GB' , 'name':'United Kingdom', 'value':62417431, 'color':'#d8854f'},
                {'code':'US' , 'name':'United States', 'value':313085380, 'color':'#a7a737'},
                {'code':'UY' , 'name':'Uruguay', 'value':3380008, 'color':'#86a965'},
                {'code':'UZ' , 'name':'Uzbekistan', 'value':27760267, 'color':'#eea638'},
                {'code':'VE' , 'name':'Venezuela', 'value':29436891, 'color':'#86a965'},
                {'code':'PS' , 'name':'West Bank and Gaza', 'value':4152369, 'color':'#eea638'},
                {'code':'VN' , 'name':'Vietnam', 'value':88791996, 'color':'#eea638'},
                {'code':'YE' , 'name':'Yemen, Rep.', 'value':24799880, 'color':'#eea638'},
                {'code':'ZM' , 'name':'Zambia', 'value':13474959, 'color':'#de4c4f'},
                {'code':'ZW' , 'name':'Zimbabwe', 'value':12754378, 'color':'#de4c4f'}];
                }

                var max = -Infinity;
                var min = Infinity;
                mapData.forEach(function (itemOpt) {
                    itemOpt.value = Math.sqrt(itemOpt.value);
                    if (itemOpt.value > max) {
                        max = itemOpt.value;
                    }
                    if (itemOpt.value < min) {
                        min = itemOpt.value;
                    }
                });

                option = {
                    backgroundColor: '#3f3f50',
                    visualMap: {
                        show: false,
                        min: 0,
                        max: max,
                        inRange: {
                            symbolSize: [6, 50]
                        }
                    },
                    geo: {
                        name: 'World Population (2010)',
                        type: 'map',
                        map: 'world',
                        roam: true,
                        projection: {
                            project: (pt) => {
                                return projection(pt)
                            },
                            unproject: (pt) => projection.invert(pt)
                        },
                        label: {
                            emphasis: {
                                show: false
                            }
                        },
                        itemStyle: {
                            normal: {
                                areaColor: '#393948',
                                borderColor: '#111'
                            },
                            emphasis: {
                                areaColor: '#393948'
                            }
                        }
                    },
                    series : [
                        {
                            type: 'scatter',
                            coordinateSystem: 'geo',
                            data: mapData.map(function (itemOpt) {
                                return {
                                    name: itemOpt.name,
                                    value: [
                                        latlong[itemOpt.code].longitude,
                                        latlong[itemOpt.code].latitude,
                                        itemOpt.value
                                    ],
                                    emphasis: {
                                        label: {
                                            show: true
                                        }
                                    },
                                    itemStyle: {
                                        color: itemOpt.color
                                    }
                                };
                            })
                        }
                    ]
                };

                var chart = testHelper.create(echarts, 'main2', {
                    title: [
                        'Projection of Geo',
                        'Bubbles position should also be projected.'
                    ],
                    height: 600,
                    option: option
                });
            });

        </script>

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

            var option;

            function createLineString(start, end) {
                const dx = end[0] - start[0];
                const dy = end[1] - start[1];
                const segs = 100;
                const stepX = dx / segs;
                const stepY = dy / segs;
                const points = [];
                // TODO needs adaptive sampling on the -180 / 180 of azimuthal projections.
                for (let i = 0; i <= segs; i++) {
                    points.push([
                        start[0] + i * stepX,
                        start[1] + i * stepY
                    ]);
                }
                return points;
            }
            function normalizePoint(pt) {
                if (pt[0] === -180) {
                    pt[0] += 1e-2;
                }
                if (pt[0] === 180) {
                    pt[0] -= 1e-2;
                }
                if (pt[1] === -80) {
                    pt[1] += 1e-2;
                }
                if (pt[1] === 80) {
                    pt[1] -= 1e-2;
                }
                return pt;
            }
            // Add graticule
            var graticuleLineStrings = [];
            for (var lat = -80; lat <= 80; lat += 10) {
                graticuleLineStrings.push(
                    createLineString(normalizePoint([-180, lat]), normalizePoint([180, lat]))
                );
            }
            for (var lng = -180; lng <= 180; lng += 10) {
                graticuleLineStrings.push(
                    createLineString(normalizePoint([lng, -80]), normalizePoint([lng, 80]))
                );
            }

            // var projection = d3.geoStereographic().rotate([-27, 0]);
            var projection = d3.geoOrthographic();

            // Clone
            worldJson = JSON.parse(JSON.stringify(worldJson));
            worldJson.features.unshift({
                geometry: {
                    type: 'MultiLineString',
                    coordinates: graticuleLineStrings
                },
                properties: {
                    name: 'graticule'
                }
            });

            echarts.registerMap('world-graticule', worldJson);

            option = {
                series: [{
                    animation: false,
                    type: 'map',
                    map: 'world-graticule',
                    itemStyle: {
                        borderColor: '#fff',
                        areaColor: '#000'
                    },
                    roam: false,
                    data: [
                        {
                            name: 'graticule',
                            itemStyle: {
                                borderColor: '#aaa'
                            },
                            emphasis: {
                                itemStyle: {
                                    borderColor: '#aaa'
                                }
                            }
                        }
                    ],
                    projection: {
                        project(pt) {
                            return projection(pt)
                        },
                        unproject(pt) {
                            return projection.invert(pt);
                        },
                        stream: projection.stream
                    }
                }]
            };

            var chart = testHelper.create(echarts, 'main3', {
                title: [
                    'Update projection through interaction'
                ],
                height: 500,
                option: option
            });

            var ox;
            var oy;
            var oRot;
            var dragging = false;
            chart.getZr()
                .on('mousedown', function (e) {
                    ox = e.offsetX;
                    oy = e.offsetY;
                    oRot = projection.rotate();
                    dragging = true;
                })
                .on('mousemove', function (e) {
                    if (!dragging) {
                        return;
                    }
                    const x = e.offsetX;
                    const y = e.offsetY;

                    projection.rotate([oRot[0] + (x - ox) / 4, oRot[1] - (y - oy) / 4]);

                    chart.setOption({
                        series: [{
                            projection: {
                                project(pt) {
                                    return projection(pt)
                                },
                                unproject(pt) {
                                    return projection.invert(pt);
                                },
                                stream: projection.stream
                            }
                        }]
                    })
                })
                .on('mouseup', function (e) {
                    dragging = false;
                });
        });
        </script>
    </body>
</html>
