美文网首页echarts中国
全省疫情地图开发

全省疫情地图开发

作者: e79baf63ee9c | 来源:发表于2020-02-13 18:50 被阅读0次

    全省疫情地图开发

    工具

    • Echarts
    • jQuery
    • HBuilder X

    先看效果,没图你说个吉米·巴特勒

    效果图

    开始动手

    • 准备全国地图文件 china.json

      长按二维码关注公众号

      image

    回复 祖国加油 获取 china.json

    代码结构

    image

    pmap.html 页面结构,很简单

    <div class="pmap" id="pmap" style="height: 80vh;width: 100%">
    </div>
    <script src="https://cdn.bootcss.com/jquery/1.12.2/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/echarts/4.3.0/echarts.min.js"></script>
    <script src="./pmap.js"></script>
    

    重点 pmap.js

    先画全省地图

    let mapChart = echarts.init(document.getElementById('pmap'));
    $.get('map/china.json', function(geoJson) {
    
                    // 加载中国地图
                    echarts.registerMap('china', geoJson);
    
                    var mapOption = {
                            geo: [{
                                name: '全国',
                                map: 'china', 
                                zoom: 1.2,
                                roam: true,
                                label: {
                                    show: true,
                                    color: '#F7F9FC',
                                    fontSize: 14,   
                                },
                                //主题
                                itemStyle: {
                                    normal: {
                                        borderColor: 'rgba(147, 235, 248, 1)',  
                                        areaColor: '#e8e081', //地图底色
                                        opacity: 1
                                    },
                                    emphasis: {
                                        //hover颜色
                                        areaColor: '#FFA300',
                                        borderWidth: 0,
                                        borderType: 'dotted',
                                        shadowColor: 'rgba(255,233,0, 1)',
                                        shadowOffsetX: -1,
                                        shadowOffsetY: 1,
                                        shadowBlur: 10,
                                        label: {
                                            color: 'red',
                                            fontSize: 36
                                        }
                                    },
                                },
                            }], 
                    }
                    mapChart.setOption(mapOption);
    

    获取疫情地图数据

    var feiyan = {
            feiyanData: [],     // 全国肺炎数据
            getData: function(){
                $.ajax({
                    // 如果出现跨域,请联系老师,获取快速解决方案。
                    url: "http://116.85.20.124:99/v1/p1",
                    method:'GET',
                    async: false,
                    success: function(data){
                            data.forEach((item,index,arr)=>{
                                var pro = {};
                                // 接口说明,此处重组说明一下各个字段。
                                pro['province'] = item.province;                    // 省份
                                pro['xinzeng'] = item.xinzeng;                      // 新增
                                pro['siwang'] = item.siwang;                        // 死亡
                                pro['quezhen'] = item.quezhen;                      // 确诊
                                pro['zhiyu'] = item.zhiyu;                          // 治愈
                                pro['yisi'] = item.yisi;                            // 疑似
                                pro['name'] = item.pShortName;
                                pro['value'] = item.quezhen-GOOD;
                                // item['name'] ... 
                                feiyan.provinceData.push(pro);
                            })
                            feiyan.convertData(feiyan.provinceData);
                    }
                    
                })
            },
            
    }
    

    绑定全国坐标位置

    convertData: function(data) {
                var res = []; //new Array()
                for (var i = 0; i < data.length; i++) {
                    console.log(`data[${i}].name`, data[i].name)
                    var geoCoord = geoCoordMap[data[i].name];//name:万宁 value:100
                    if (geoCoord) {
                        res.push({
                            name: data[i].name,
                            value: geoCoord.concat(data[i].value)
                        });
                    }
                }
                feiyan.feiyanData = res;
            }
    

    geoCoordMap

    const geoCoordMap = {       //省份对应坐标
                     '新疆': [86.61 , 40.79],
                     '西藏':[89.13 , 30.66],
                     '黑龙江':[128.34 , 47.05],
                     '吉林':[126.32 , 43.38],
                     '辽宁':[123.42 , 41.29],
                     '内蒙古':[112.17 , 42.81],
                     '北京':[116.40 , 40.40 ],
                     '宁夏':[106.27 , 36.76],
                     '山西':[111.95,37.65],
                     '河北':[115.21 , 38.44],
                     '天津':[117.04 , 39.52],
                     '青海':[97.07 , 35.62],
                     '甘肃':[103.82 , 36.05],
                     '山东':[118.01 , 36.37],
                     '陕西':[108.94 , 34.46],
                     '河南':[113.46 , 34.25],
                     '安徽':[117.28 , 31.86],
                     '江苏':[120.26 , 32.54],
                     '上海':[121.46 , 31.28],
                     '四川':[103.36 , 30.65],
                     '湖北':[112.29 , 30.98],
                     '浙江':[120.15 , 29.28],
                     '重庆':[107.51 , 29.63],
                     '湖南':[112.08 , 27.79],
                     '江西':[115.89 , 27.97],
                     '贵州':[106.91 , 26.67],
                     '福建':[118.31 , 26.07],
                     '云南':[101.71 , 24.84],
                     '台湾':[121.01 , 23.54],
                     '广西':[108.67 , 23.68],
                     '广东':[113.98 , 22.82],
                     '海南':[110.03 , 19.33],
                     '澳门':[113.54 , 22.19],
                     '香港':[114.17 , 22.32],
            };
    

    执行接口

    $(function(){
        feiyan.getData();
    })
    

    给地图绑定数据

    //配置属性
    在上述mapOption中添加属性:
    series: [{  
        name: '数据',  
        type: 'map',  
        mapType: 'china',  
        zoom: 1.2, 
        roam: true,  
        label: {  
            normal: {  
                show: true  //省份名称  
            },  
            emphasis: {  
                show: false  
            }  
        },  
        data:feiyan.provinceData  //数据
    }]  
    

    后面会给出完整mapOption配置

    这里分步解析

    地图标题

    title: {
        text: '新型冠状病毒感染的肺炎疫情',
            subtext: "截至: 2020-02-12 ",
                sublink: 'http://www.baidu.com',
                    left: 'center',
                        textStyle: {
                            color: '#fff'
                        }
    },
    

    鼠标悬停地图方块显示

    tooltip: {
        trigger: 'item',
            formatter: "{b}",
                formatter: function(params,ticket, callback){
                    console.log(params,ticket)
                    return params.name + '<br />' + 
                        "确诊数:"+params.data.quezhen + '<br />' +
                        "新增:"+params.data.xinzeng + '<br />' +
                        "死亡:"+params.data.siwang + '<br />' +
                        "疑似:"+params.data.yisi + '<br />'
                },
                    backgroundColor: 'rgba(0,0,0,0.5)',
                        padding: 10,
                            // 悬停
                            textStyle: {
                                color: 'orange',
                                    fontSize: 12
                            },
    },
    

    左侧小导航

    visualMap: {  
        show : true,
            type: 'piecewise',
                left: '20%',
                    //left: "left",
                    top: "bottom",
                        //bottom: '0',
                        textStyle: {
                            color: '#fff',
                                fontSize: 12
                        },
                            pieces: [{
                                min: 1,
                                max: 9,
                                label: "<10",
                                color: "#FFD7BB"
                            }, {
                                min: 10,
                                max: 99,
                                label: "10-99",
                                color: "#FFAD83"
                            }, {
                                min: 100,
                                max: 499,
                                label: "100-499",
                                color: "#F2684F"
                            }, {
                                min: 500,
                                max: 999,
                                label: "500-999",
                                color: "#D02327"
                            }, {
                                min: 1e3,
                                max: 1e15,
                                label: "≥1000",
                                color: "#6F151C"
                            }, {
                                max: -1e15,
                                label: "疑似",
                                color: "#FFF0D2"
                            }],
    },  
    

    PS:

    文章尚未发布,今早官方数据机构大变化,湖北一下子新增上万确诊,猝不及防!

    文章也是猝不及防,以上数据截止2020-02-12

    `1

    相关文章

      网友评论

        本文标题:全省疫情地图开发

        本文链接:https://www.haomeiwen.com/subject/jiylfhtx.html