Echarts全国地图区域合并------去掉海南子区域及南海诸岛

1 篇文章 0 订阅
1 篇文章 0 订阅

Echarts 地图开发中需要实现地图阴影;

下图是一个失败的demo,真正需要的是为整个地图添加边框阴影而不是为每个区域添加

1.最简单的实现方法,用geo实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>地图样式</title>
    <script src="https://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
    <script src="../echarts.min.js"></script>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .container{
            width: 100%;
            height: 100vh;
            background: #000036;
        }

        #map_container{
            width: 100%;
            height: 100%;
        }
    </style>
</head>
<body>
<div class="container">
    <div id="map_container"></div>
</div>
<script>
    /*
    * GEO实现阴影与边框
    */
    $(function () {
        var data_obj = {
            '1000000': {
                'map_data_all': [
                    {id: "110000", value: 2395274, name: "\u5317\u4eac\u5e02", "level": "1"}, {
                        id: "120000",
                        value: 1087242,
                        name: "\u5929\u6d25\u5e02",
                        "level": "1"
                    }, {id: "130000", value: 2405260, name: "\u6cb3\u5317\u7701", "level": "1"}, {
                        id: "140000",
                        value: 1160702,
                        name: "\u5c71\u897f\u7701",
                        "level": "1"
                    }, {id: "150000", value: 836075, name: "\u5185\u8499\u53e4\u81ea\u6cbb\u533a", "level": "1"}, {
                        id: "210000",
                        value: 2158982,
                        name: "\u8fbd\u5b81\u7701",
                        "level": "1"
                    }, {id: "220000", value: 995060, name: "\u5409\u6797\u7701", "level": "1"}, {
                        id: "230000",
                        value: 982917,
                        name: "\u9ed1\u9f99\u6c5f\u7701",
                        "level": "1"
                    }, {id: "310000", value: 3783735, name: "\u4e0a\u6d77\u5e02", "level": "1"}, {
                        id: "320000",
                        value: 6089455,
                        name: "\u6c5f\u82cf\u7701",
                        "level": "1"
                    }, {id: "330000", value: 4289162, name: "\u6d59\u6c5f\u7701", "level": "1"}, {
                        id: "340000",
                        value: 2145624,
                        name: "\u5b89\u5fbd\u7701",
                        "level": "1"
                    }, {id: "350000", value: 2007123, name: "\u798f\u5efa\u7701", "level": "1"}, {
                        id: "360000",
                        value: 1330358,
                        name: "\u6c5f\u897f\u7701",
                        "level": "1"
                    }, {id: "370000", value: 4959744, name: "\u5c71\u4e1c\u7701", "level": "1"}, {
                        id: "410000",
                        value: 2780641,
                        name: "\u6cb3\u5357\u7701",
                        "level": "1"
                    }, {id: "420000", value: 2237163, name: "\u6e56\u5317\u7701", "level": "1"}, {
                        id: "430000",
                        value: 1664850,
                        name: "\u6e56\u5357\u7701",
                        "level": "1"
                    }, {id: "440000", value: 7836737, name: "\u5e7f\u4e1c\u7701", "level": "1"}, {
                        id: "450000",
                        value: 1344085,
                        name: "\u5e7f\u897f\u58ee\u65cf\u81ea\u6cbb\u533a",
                        "level": "1"
                    }, {id: "460000", value: 522202, name: "\u6d77\u5357\u7701", "level": "1"}, {id: "500000", value: 1396810, name: "\u91cd\u5e86\u5e02", "level": "1"}, {
                        id: "510000",
                        value: 2740271,
                        name: "\u56db\u5ddd\u7701",
                        "level": "1"
                    }, {id: "520000", value: 1040494, name: "\u8d35\u5dde\u7701", "level": "1"}, {
                        id: "530000",
                        value: 1215803,
                        name: "\u4e91\u5357\u7701",
                        "level": "1"
                    }, {id: "540000", value: 99404, name: "\u897f\u85cf\u81ea\u6cbb\u533a", "level": "1"}, {
                        id: "610000",
                        value: 1504225,
                        name: "\u9655\u897f\u7701",
                        "level": "1"
                    }, {id: "620000", value: 786220, name: "\u7518\u8083\u7701", "level": "1"}, {id: "630000", value: 180966, name: "\u9752\u6d77\u7701", "level": "1"}, {
                        id: "640000",
                        value: 298887,
                        name: "\u5b81\u590f\u56de\u65cf\u81ea\u6cbb\u533a",
                        "level": "1"
                    }, {id: "650000", value: 760534, name: "\u65b0\u7586\u7ef4\u543e\u5c14\u81ea\u6cbb\u533a", "level": "1"}, {
                        id: "710000",
                        value: 0,
                        name: "\u53f0\u6e7e\u7701",
                        "level": "1"
                    }, {id: "810000", value: 0, name: "\u9999\u6e2f\u7279\u522b\u884c\u653f\u533a", "level": "1"}, {
                        id: "820000",
                        value: 0,
                        name: "\u6fb3\u95e8\u7279\u522b\u884c\u653f\u533a",
                        "level": "1"
                    }],
            },
            '110000': {
                'map_data_all': [
                    {name: "朝阳区", value: 498208, id: 220104},
                    {name: "海淀区", value: 395226, id: 110108},
                    {name: "丰台区", value: 234487, id: 110106},
                    {name: "通州区", value: 114415, id: 320612},
                    {name: "昌平区", value: 105656, id: 110114},
                    {name: "东城区", value: 103707, id: 110101},
                    {name: "西城区", value: 101420, id: 110102},
                    {name: "大兴区", value: 85330, id: 110115},
                    {name: "房山区", value: 68722, id: 110111},
                    {name: "怀柔区", value: 63215, id: 110116},
                    {name: "顺义区", value: 59300, id: 110113},
                    {name: "密云区", value: 55098, id: 110228},
                    {name: "平谷区", value: 50744, id: 110117},
                    {name: "石景山区", value: 50115, id: 110107},
                    {name: "门头沟区", value: 36631, id: 110109},
                    {name: "延庆区", value: 17687, id: 110229}],
            }
        };
        // 四分位
        function count(data) {
            var data = data.slice(0);
            var markData = data.sort(function (a, b) {
                    return a - b;
                }),
                n = markData.length;
            var index3,
                //较小四分位数
                //中位数(二分位)
                Q3 = 0;  //较大四分位数
            var num3 = (3 * n + 1) / 4,
                index3 = parseInt(num3);
            if (n >= 2) {
                //公式:a[3]+(a[4]-a[3])*小数位
                Q3 = parseFloat(markData[index3 - 1]) + parseFloat((markData[index3] - markData[index3 - 1]) * (num3 - index3));
            } else if (n == 1) {
                Q3 = parseFloat(markData[0]);
            }
            console.log(Q3)
            return {
                Q3: Q3.toFixed(2),
                max: n == 0 ? 0 : markData[n - 1]
            }
        }
        var my_charts = echarts.init(document.getElementById('map_container'));
        function drow_map(maptype,data){
            $.getJSON('./ChinaJson/'+maptype+'.js', function (geoJson) {
                var mapdata3 = [];
                for (var key in data[maptype].map_data_all) {
                    var onedata = data[maptype].map_data_all[key];
                    var val = onedata['value'];
                    if (!val) {
                        val = ""
                    } else {
                        // val=val.replace(/^[1-9]\d*/i,'')
                    }
                    mapdata3.push(val);
                }
                my_charts.hideLoading();
                echarts.registerMap(maptype, geoJson);
                my_charts.setOption(
                    option = {
                        title: {
                            subtext: '全国企业分布',
                        },
                        tooltip: {
                            trigger: 'item',
                            formatter: function (params) {
                                console.log(params)
                                if ($.isArray(params.value)) {
                                    // return ''
                                    return params.name + ' : ' + params.value[params.value.length-1];//鼠标放上去显示value
                                } else {
                                    return params.name + ' : ' + params.value;//鼠标放上去显示value
                                }
                            },
                            textStyle: {
                                color: '#fff'
                            }
                        },
                        visualMap: {
                            min: 0,
                            max: parseFloat(count(mapdata3).Q3),
                            text: ['高', '低'],
                            realtime: false,
                            calculable: true,
                            inRange: {
                                // color: ['#0098EB', 'rgba(6,61,235,1)', '#0000AC'],
                                color: ['#16edff', '#a665f9', '#6865f9'],
                            },
                            textStyle: {
                                color: '#fff'
                            }
                        },
                        geo: {
                            map: maptype,
                            itemStyle: {
                                normal: {
                                    borderColor: '#9757cf',
                                    borderWidth: 6,
                                    shadowColor: '#4a088b',
                                    shadowOffsetX: '15',
                                    shadowOffsetY: '30',
                                    color: {
                                        type: 'linear-gradient',
                                        x: 0,
                                        y: 30,
                                        x2: 7,
                                        y2: 0,
                                        colorStops: [{
                                            offset: 0,
                                            color: '#4a088b' // 0% 处的颜色
                                        }, {
                                            offset: 1,
                                            color: '#6908bf' // 50% 处的颜色
                                        }],
                                        global: true // 缺省为 false
                                    },
                                },
                                emphasis: {
                                    areaColor: '#070F4F'
                                }
                            },
                            zlevel: 2
                        },
                        series: [
                            {
                                type: 'map',
                                map: maptype,
                                tooltip: {
                                    show: false
                                },
                                label: {
                                    normal: {
                                        show: false,
                                        textStyle: {
                                            color: '#fff',
                                            fontSize: 14,
                                            textBorderWidth: 1,
                                            textBorderColor: '#000000',
                                            textShadowColor: '#000',
                                            textShadowBlur: 2,
                                        }
                                    },
                                    emphasis: {
                                        show: false,
                                        textStyle: {
                                            color: '#fff',
                                            fontSize: 14,
                                            textBorderWidth: 1,
                                            textShadowColor: '#2732ff',
                                            textShadowBlur: false,
                                        }
                                    }
                                },
                                roam: true,
                                itemStyle: {
                                    normal: {
                                        borderColor: '#D2FFFF',
                                        borderWidth: 1.5,
                                    },
                                    emphasis: {
                                        areaColor: 'rgb(111,81,248)'
                                    }
                                },
                                zlevel: 4,
                                data: data[maptype].map_data_all
                            }
                        ]
                    });
            });
        }
        drow_map('1000000', data_obj)
    });

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

实现效果:

下图就是上图的分解

2.我想要实现的最终效果是可以加阴影加边框,还能下钻三级(直接用geo就有点难了)

下面是加阴影后的一个效果图

将全国所有地区合并,就是一个图了,可以任意叠加地图,为每个地图添加边框阴影

最终实现类似这样的效果

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值