1. 程式人生 > >echarts動態繫結地圖資料(使用立即執行函式或者變數賦值都可以,唯一要求賦值的是物件,而不是字串)

echarts動態繫結地圖資料(使用立即執行函式或者變數賦值都可以,唯一要求賦值的是物件,而不是字串)



@{
    Layout = null;
}
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
</head>

<body>
    <!--Step:1 Prepare a dom for ECharts which (must) has size (width & hight)-->
    <!--Step:1 為ECharts準備一個具備大小(寬高)的Dom-->

    <div id="mainMap" style="height:370px;width: 700px;">
    </div>
    <!--Step:2 Import echarts.js-->
    <!--Step:2 引入echarts.js-->

    <script type="text/javascript" src="~/js/mapjs/jquery-1.8.0.js"></script>
    <script src="~/js/mapjs/echarts.js" charset="UTF-8"></script>
    <script type="text/javascript">
        $('#document').ready(function () {
            getEcharts();
        });
    </script>

    <script type="text/javascript">
        //ECharts  Lqy
        function getEcharts() {
            // Step:3 conifg ECharts's path, link to echarts.js from current page.
            // Step:3 為模組載入器配置echarts的路徑,從當前頁面連結到echarts.js,定義所需圖表路徑
            require.config({
                paths: {
                    echarts: '../../js/mapjs'
                }
            });
            ////ajax獲取也可以
            var provinces = [];
            var value = [];
            var top1provinces = '';
            Test();
            function Test() {
                $.ajax({
                    async: false,             //預設為true,改為false  則為同步請求
                    type: "post",
                    url: "/ScreenDisplay/EchartMap",
                    data: "",
                    dataType: "json",
                    success: function (Jsondata) {
                        var data = Jsondata.data;
                        $.each(Jsondata.data, function (key, val) {
                            if (key == 0) {
                                top1provinces = val.key;
                                //alert("第一名" + top1provinces);
                            }
                            provinces.push(val.key);
                            value.push(parseInt(val.Value));
                            //如果確少某個城市的經緯度,地圖顯示異常。
                            //alert(val.key + "   " + val.Value);
                        });
                      
                        //top1provinces = '南京';
                        //provinces.push('南京'); value.push(1);
                        //provinces.push('杭州'); value.push(1);
                        //provinces.push('阜陽'); value.push(1);
                        //provinces.push('福州'); value.push(1);
                        //provinces.push('上海'); value.push(1);
                        //{"code":0,"msg":"","data":[{"key":"南京市","Value":"1"},{"key":"杭州市","Value":"1"},{"key":"阜陽市","Value":"1"},{"key":"福州市","Value":"1"},{"key":"上海市","Value":"1"}],"info":null}

                        //alert("provinces " + provinces.toString() + " value " + value.toString());
                    }
                });

           
        }
            // Step:4 require echarts and use it in the callback.
            // Step:4 動態載入echarts然後在回撥函式中開始使用,注意保持按需載入結構定義圖表路徑
            require(
                [
                    'echarts',
                    'echarts/chart/map'
                ],
                function (ec) {
                    // --- 地圖 ---
                    var myChart2 = ec.init(document.getElementById('mainMap'));
                    myChart2.setOption({
                        dataRange: {
                            min: 0,
                            max: 100,
                            calculable: true,
                            color: ['lime', 'lime'],
                            textStyle: {
                                color: '#fff'
                            }
                        },
                        series: [
                            {
                                name: '全國',
                                type: 'map',
                                roam: true,
                                hoverable: false,
                                mapType: 'china',
                                itemStyle: {
                                    normal: {
                                        borderColor: 'rgba(100,149,237,1)',
                                        borderWidth: 0.5,
                                        areaStyle: {
                                            color: '#082684'
                                        }
                                    }
                                },
                                data: [],
                                markLine: {
                                    smooth: true,
                                    symbol: ['none', 'circle'],
                                    symbolSize: 1,
                                    itemStyle: {
                                        normal: {
                                            color: '#fff',
                                            borderWidth: 1,
                                            borderColor: 'rgba(30,144,255,0.5)'
                                        }
                                    },
                                    data: [
                                    ],
                                },
                                geoCoord: {
                                    '上海': [121.4648, 31.2891],
                                    '東莞': [113.8953, 22.901],
                                    '東營': [118.7073, 37.5513],
                                    '中山': [113.4229, 22.478],
                                    '臨汾': [111.4783, 36.1615],
                                    '臨沂': [118.3118, 35.2936],
                                    '丹東': [124.541, 40.4242],
                                    '麗水': [119.5642, 28.1854],
                                    '烏魯木齊': [87.9236, 43.5883],
                                    '佛山': [112.8955, 23.1097],
                                    '保定': [115.0488, 39.0948],
                                    '蘭州': [103.5901, 36.3043],
                                    '包頭': [110.3467, 41.4899],
                                    '北京': [116.4551, 40.2539],
                                    '北海': [109.314, 21.6211],
                                    '南京': [118.8062, 31.9208],
                                    '南寧': [108.479, 23.1152],
                                    '南昌': [116.0046, 28.6633],
                                    '南通': [121.1023, 32.1625],
                                    '廈門': [118.1689, 24.6478],
                                    '台州': [121.1353, 28.6688],
                                    '合肥': [117.29, 32.0581],
                                    '呼和浩特': [111.4124, 40.4901],
                                    '咸陽': [108.4131, 34.8706],
                                    '哈爾濱': [127.9688, 45.368],
                                    '唐山': [118.4766, 39.6826],
                                    '嘉興': [120.9155, 30.6354],
                                    '大同': [113.7854, 39.8035],
                                    '大連': [122.2229, 39.4409],
                                    '天津': [117.4219, 39.4189],
                                    '太原': [112.3352, 37.9413],
                                    '威海': [121.9482, 37.1393],
                                    '寧波': [121.5967, 29.6466],
                                    '寶雞': [107.1826, 34.3433],
                                    '宿遷': [118.5535, 33.7775],
                                    '常州': [119.4543, 31.5582],
                                    '廣州': [113.5107, 23.2196],
                                    '廊坊': [116.521, 39.0509],
                                    '延安': [109.1052, 36.4252],
                                    '張家口': [115.1477, 40.8527],
                                    '徐州': [117.5208, 34.3268],
                                    '德州': [116.6858, 37.2107],
                                    '惠州': [114.6204, 23.1647],
                                    '成都': [103.9526, 30.7617],
                                    '揚州': [119.4653, 32.8162],
                                    '承德': [117.5757, 41.4075],
                                    '拉薩': [91.1865, 30.1465],
                                    '無錫': [120.3442, 31.5527],
                                    '日照': [119.2786, 35.5023],
                                    '昆明': [102.9199, 25.4663],
                                    '杭州': [119.5313, 29.8773],
                                    '棗莊': [117.323, 34.8926],
                                    '柳州': [109.3799, 24.9774],
                                    '株洲': [113.5327, 27.0319],
                                    '武漢': [114.3896, 30.6628],
                                    '汕頭': [117.1692, 23.3405],
                                    '江門': [112.6318, 22.1484],
                                    '瀋陽': [123.1238, 42.1216],
                                    '滄州': [116.8286, 38.2104],
                                    '河源': [114.917, 23.9722],
                                    '泉州': [118.3228, 25.1147],
                                    '泰安': [117.0264, 36.0516],
                                    '泰州': [120.0586, 32.5525],
                                    '濟南': [117.1582, 36.8701],
                                    '濟寧': [116.8286, 35.3375],
                                    '海口': [110.3893, 19.8516],
                                    '淄博': [118.0371, 36.6064],
                                    '淮安': [118.927, 33.4039],
                                    '深圳': [114.5435, 22.5439],
                                    '清遠': [112.9175, 24.3292],
                                    '溫州': [120.498, 27.8119],
                                    '渭南': [109.7864, 35.0299],
                                    '湖州': [119.8608, 30.7782],
                                    '湘潭': [112.5439, 27.7075],
                                    '濱州': [117.8174, 37.4963],
                                    '濰坊': [119.0918, 36.524],
                                    '煙臺': [120.7397, 37.5128],
                                    '玉溪': [101.9312, 23.8898],
                                    '珠海': [113.7305, 22.1155],
                                    '鹽城': [120.2234, 33.5577],
                                    '盤錦': [121.9482, 41.0449],
                                    '石家莊': [114.4995, 38.1006],
                                    '福州': [119.4543, 25.9222],
                                    '秦皇島': [119.2126, 40.0232],
                                    '紹興': [120.564, 29.7565],
                                    '聊城': [115.9167, 36.4032],
                                    '肇慶': [112.1265, 23.5822],
                                    '舟山': [122.2559, 30.2234],
                                    '蘇州': [120.6519, 31.3989],
                                    '萊蕪': [117.6526, 36.2714],
                                    '菏澤': [115.6201, 35.2057],
                                    '營口': [122.4316, 40.4297],
                                    '葫蘆島': [120.1575, 40.578],
                                    '衡水': [115.8838, 37.7161],
                                    '衢州': [118.6853, 28.8666],
                                    '西寧': [101.4038, 36.8207],
                                    '西安': [109.1162, 34.2004],
                                    '貴陽': [106.6992, 26.7682],
                                    '連雲港': [119.1248, 34.552],
                                    '邢臺': [114.8071, 37.2821],
                                    '邯鄲': [114.4775, 36.535],
                                    '鄭州': [113.4668, 34.6234],
                                    '鄂爾多斯': [108.9734, 39.2487],
                                    '重慶': [107.7539, 30.1904],
                                    '金華': [120.0037, 29.1028],
                                    '銅川': [109.0393, 35.1947],
                                    '銀川': [106.3586, 38.1775],
                                    '鎮江': [119.4763, 31.9702],
                                    '長春': [125.8154, 44.2584],
                                    '長沙': [113.0823, 28.2568],
                                    '長治': [112.8625, 36.4746],
                                    '陽泉': [113.4778, 38.0951],
                                    '青島': [120.4651, 36.3373],
                                    '阜陽': [115.8142, 32.8901],//lqy add
                                    '韶關': [113.7964, 24.7028]
                                },//geoCoord
                                markPoint: {
                                    symbol: 'emptyCircle',
                                    symbolSize: function (v) {
                                        return 10
                                    },
                                    effect: {
                                        show: true,
                                        shadowBlur: 0
                                    },
                                    itemStyle: {
                                        normal: {
                                            label: { show: false }
                                        },
                                        emphasis: {
                                            label: { position: 'top' }
                                        }
                                    },
                                    data:
                                        ////立即執行函式
                                          (function () {
                                              var serie = [];
                                              for (var i = 0; i < provinces.length; i++) {
                                                  var item = {
                                                      name: provinces[i],
                                                      value: value[i]
                                                  }
                                                  serie.push(item);
                                              }
                                              return serie;
                                          }())


                                    //    [
                                    //    { name: '上海', value: 95 },
                                    //    { name: '廣州', value: 90 },
                                    //    { name: '大連', value: 80 },
                                    //    { name: '南寧', value: 70 },
                                    //    { name: '南昌', value: 60 },
                                    //    { name: '拉薩', value: 50 },
                                    //    { name: '長春', value: 40 },
                                    //    { name: '包頭', value: 30 },
                                    //    { name: '重慶', value: 20 },
                                    //    { name: '常州', value: 10 }
                                    //]//markPoint裡的data
                                }
                            },//以下是series下的第二個引數
                            {
                                name: '上海 Top10',
                                type: 'map',
                                mapType: 'china',
                                data: [],
                                markLine: {
                                    smooth: true,
                                    effect: {
                                        show: true,
                                        scaleSize: 1,
                                        period: 30,
                                        color: '#fff',
                                        shadowBlur: 10
                                    },
                                    itemStyle: {
                                        normal: {
                                            label: { show: false },
                                            borderWidth: 1,
                                            lineStyle: {
                                                type: 'solid',
                                                shadowBlur: 10
                                            }
                                        }
                                    },
                                    data:
                                        (function () {
                                            var data = [];
                                            for (var i = 0; i < provinces.length; i++) {
                                                var serie = [];
                                                var item = { name: provinces[i], }
                                                var item2 = { name: top1provinces, value: value[i] }
                                                serie.push(item);//, item2);
                                                serie.push(item2);
                                                data.push(serie);
                                            }
                                            //alert("我要看看data" + JSON.stringify(data));
                                            return data;
                                        }())

                                    //陣列a,陣列b,陣列a去push陣列B,陣列b要push兩次新項,
                                    //    [
                                    //    [{ name: '廣州' }, { name: '上海', value: 90 }],
                                    //    [{ name: '大連' }, { name: '上海', value: 90 }],
                                    //    [{ name: '南寧' }, { name: '上海', value: 90 }],
                                    //    [{ name: '南昌' }, { name: '上海', value: 50 }],
                                    //    [{ name: '拉薩' }, { name: '上海', value: 50 }],
                                    //    [{ name: '長春' }, { name: '上海', value: 410 }],
                                    //    [{ name: '包頭' }, { name: '上海', value: 10 }],
                                    //    [{ name: '重慶' }, { name: '上海', value: 10 }],
                                    //    [{ name: '常州' }, { name: '上海', value: 10 }]
                                    //]
                                },//markLine
                                markPoint: {
                                    symbol: 'emptyCircle',
                                    symbolSize: function (v) {
                                        return 0.1
                                    },
                                    effect: {
                                        show: false,
                                        shadowBlur: 0
                                    },
                                    itemStyle: {
                                        normal: {
                                            label: {
                                                show: true,
                                                position: 'top',
                                                textStyle: {
                                                    fontSize: 14
                                                }
                                            }
                                        },
                                        emphasis: {
                                            label: { show: false }
                                        }
                                    },
                                    data:
                                            (function () {
                                                var serie = [];
                                                for (var i = 0; i < provinces.length; i++) {
                                                    var item = {
                                                        name: provinces[i],
                                                        value: value[i]
                                                    }
                                                    serie.push(item);
                                                }
                                                return serie;
                                            }())
                                    //    [
                                    //    { name: '上海', value: 95 },
                                    //    { name: '廣州', value: 90 },
                                    //    { name: '大連', value: 80 },
                                    //    { name: '南寧', value: 70 },
                                    //    { name: '南昌', value: 60 },
                                    //    { name: '拉薩', value: 50 },
                                    //    { name: '長春', value: 410 },
                                    //    { name: '包頭', value: 30 },
                                    //    { name: '重慶', value: 20 },
                                    //    { name: '常州', value: 10 }
                                    //]
                                }//markPoint 結束
                            }
                        ]//series結束
                    });
                });
        }
    </script>
</body>
</html>