Echarts 地图+散点图结合 +闪点+轮播

Echarts 地图+散点图结合 +闪点+轮播

1.jsp:

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2018/12/11
  Time: 19:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <title>项目情况</title>
    <link href="echarts/css/style.css"  rel="stylesheet" type="text/css" media="all" />
    <script src="echarts/js/echarts.js" charset="utf-8"></script>
    <script src="js/jquery-3.2.0.min.js" charset="utf-8"></script>
    <script src="js/page3.js" charset="utf-8"></script>
    <style type="text/css">
        #box{
            display:none;
            background-color: goldenrod;
            width: 180px;
            height: 30px;
        }
        #box-title{
            display:block;
        }
    </style>
</head>
<body>
<div class="wpboxPage3">
    <div class="bnt">
        <div class="topbnt_left fl">
        </div>
        <h1 class="tith1 fl">测试页</h1>
        <div class=" fr topbnt_right">
            </div>
        </div>
    </div>
    <div class="mrbox">
        <div class="mrbox_topmidd">
            <div class="amiddboxttop">
                <h2 class="tith2 pt1">吉林省</h2>
                <div class="hot_map" id="topmap"   >

                </div>
                <div id="box" >
                    <span id="box-title"></span>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

2.js:

function getContextPath() {

    var pathName = document.location.pathname;
    var index = pathName.substr(1).indexOf("/");
    var result = pathName.substr(0,index+1);
    return result;
}
$("document").ready(function() {
    /**
     此版本通过设置geoindex && seriesIndex: [1] 属性来实现geo和map共存,来达到hover散点和区域显示tooltip的效果

     默认情况下,map series 会自己生成内部专用的 geo 组件。但是也可以用这个 geoIndex 指定一个 geo 组件。这样的话,map 和 其他 series(例如散点图)就可以共享一个 geo 组件了。并且,geo 组件的颜色也可以被这个 map series 控制,从而用 visualMap 来更改。
     当设定了 geoIndex 后,series-map.map 属性,以及 series-map.itemStyle 等样式配置不再起作用,而是采用 geo 中的相应属性。

     http://echarts.baidu.com/option.html#series-map.geoIndex

     并且加了pin气泡图标以示数值大小
     */

    // var uploadedDataURL = "echarts/js/json/data-1482909892121-BJ3auk-Se.json";
    var uploadedDataURL = "echarts/js/json/jilinshengPoint.json";
    var myChart = echarts.init(document.getElementById("topmap"));
    myChart.showLoading();
    $.getJSON(uploadedDataURL, function(geoJson) {
        echarts.registerMap('jiangxi', geoJson);
        myChart.hideLoading();
        var geoCoordMap = {
            '长春市': [125.33,43.88],
            '吉林市': [126.57,43.79],
            '四平市': [124.31,43.32],
            '辽源市': [125.19,42.82],
            '通化市': [125.95,41.70],
            '白山市': [126.44,41.93],
            '松原市': [124.85,45.16],
            '白城市': [122.85,45.57],
            '延边朝鲜族自治州': [129.18,43.05],
        }
        var data = [
            {name:'长春市', value: 1800},
            {name:'白城市', value: 1700},
            {name:'松原市', value: 1600},
            {name:'四平市', value: 1400},
            {name:'吉林市', value: 1200},
            {name:'辽源市', value: 1000},
            {name:'通化市', value: 800},
            {name:'白山市', value: 600},
            {name:'延边朝鲜族自治州', value: 400},
        ];

        var convertData = function (data) {
            var res = [];
            for (var i = 0; i < data.length; i++) {
                var geoCoord = geoCoordMap[data[i].name];
                if (geoCoord) {
                    res.push({
                        name: data[i].name,
                        value: geoCoord.concat(data[i].value)
                    });
                }
            }
            return res;
        };


        option = {
            // backgroundColor: '#020933',
            title: {
                top:20,
                // text: ' 吉林省',
                subtext: '',
                x: 'center',
                textStyle: {
                    color: '#ccc'
                }
            },

            tooltip: {
                trigger: 'item',
                formatter: function (params) {
                    if(typeof(params.value)[2] == "undefined"){
                        return params.name + ' : ' + params.value;
                    }else{
                        return params.name + ' : ' + params.value[2];
                    }
                }
            },
            /*   legend: {
                   orient: 'vertical',
                   y: 'bottom',
                   x: 'right',
                    data:['pm2.5'],
                   textStyle: {
                       color: '#fff'
                   }
               },*/

            visualMap: {
                show: false,
                min: 0,
                max: 500,
                left: 'left',
                top: 'bottom',
                text: ['高', '低'], // 文本,默认为数值文本
                calculable: true,
                seriesIndex: [1],
                inRange: {
                    //color: ['#3B5077', '#031525'] // 蓝黑
                    // color: ['#ffc0cb', '#800080'] // 红紫
                    // color: ['#3C3B3F', '#605C3C'] // 黑绿
                    // color: ['#0f0c29', '#302b63', '#24243e'] // 黑紫黑
                    //color: ['#23074d', '#cc5333'] // 紫红
                    // color: ['#00467F', '#A5CC82'] // 蓝绿
                    color: ['#1488CC', '#2B32B2'] // 浅蓝
                    // color: ['#00467F', '#A5CC82'] // 蓝绿
                    // color: ['#00467F', '#A5CC82'] // 蓝绿
                    // color: ['#00467F', '#A5CC82'] // 蓝绿
                    // color: ['#00467F', '#A5CC82'] // 蓝绿

                }
            },
            // toolbox: {
            //     show: true,
            //     orient: 'vertical',
            //     left: 'right',
            //     top: 'center',
            //     feature: {
            //             dataView: {readOnly: false},
            //             restore: {},
            //             saveAsImage: {}
            //             }
            // },
            geo: {
                show: true,
                map: 'jiangxi',
                label: {
                    normal: {
                        show: false
                    },
                    emphasis: {
                        show: false,
                    }
                },
                roam: true,
                itemStyle: {
                    normal: {
                        areaColor: 'transparent',
                        borderColor: '#3fdaff',
                        borderWidth: 2,
                        shadowColor: 'rgba(63, 218, 255, 0.5)',
                        shadowBlur: 30
                    },
                    emphasis: {
                        areaColor: '#2B91B7',
                    }
                }
            },
            series : [
                {
                    name: 'light',
                    type: 'scatter',
                    coordinateSystem: 'geo',
                    data: convertData(data),
                    symbolSize: function (val) {
                        return 25;
                    },
                    label: {
                        normal: {
                            formatter: '{b}',
                            position: 'right',
                            show: true
                        },
                        emphasis: {
                            show: true
                        }
                    },
                    itemStyle: {
                        normal: {
                            color: '#F4E925'
                        }
                    }
                },
                {
                    type: 'map',
                    map: '吉林',
                    geoIndex: 0,
                    aspectScale: 0.75, //长宽比
                    showLegendSymbol: false, // 存在legend时显示
                    label: {
                        normal: {
                            show: false
                        },
                        emphasis: {
                            show: false,
                            textStyle: {
                                color: '#fff'
                            }
                        }
                    },
                    roam: true,
                    itemStyle: {
                        normal: {
                            areaColor: '#031525',
                            borderColor: '#FFFFFF',
                        },
                        emphasis: {
                            areaColor: '#2B91B7'
                        }
                    },
                    animation: false,
                    data: data
                },
                {
                    name: 'Top 5',
                    type: 'effectScatter',
                    coordinateSystem: 'geo',
                    data: convertData(data.sort(function (a, b) {
                        return b.value - a.value;
                    }).slice(0, 5)),
                    symbolSize: function (val) {
                        return 25;
                    },
                    showEffectOn: 'render',
                    rippleEffect: {
                        brushType: 'stroke'
                    },
                    hoverAnimation: true,
                    label: {
                        normal: {
                            formatter: '{b}',
                            position: 'right',
                            show: true
                        }
                    },
                    itemStyle: {
                        normal: {
                            color: '#F4E925',
                            shadowBlur: 10,
                            shadowColor: '#05C3F9'
                        }
                    },
                    zlevel: 1
                },

            ]
        };
        myChart.setOption(option);
    });
    myChart.on('click', function (params) {
        alert(params.dataIndex);
        alert(option.series[params.seriesIndex].data[params.dataIndex].name);
        // alert(option.series[params.seriesIndex].name)
    });
    autohover();
    function autohover(data) {
        var count = 0;
        var timeTicket = null;
        var dataLength = 11;//此处设置的是需要轮播的次数
        timeTicket && clearInterval(timeTicket);
        timeTicket = setInterval(function () {
            myChart.dispatchAction({
                type: 'downplay',
                seriesIndex: 1,

            });
            myChart.dispatchAction({
                type: 'highlight',
                seriesIndex: 1,
                dataIndex: (count) % dataLength
            });
            myChart.dispatchAction({
                type: 'showTip',
                seriesIndex: 1,
                dataIndex: (count) % dataLength
            });
            count++;
        }, 1000*3);


    myChart.on('mouseover', function(params) {
        clearInterval(timeTicket);
        myChart.dispatchAction({
            type: 'downplay',
            seriesIndex: 0
        });
        myChart.dispatchAction({
            type: 'highlight',
            seriesIndex: 0,
            dataIndex: params.dataIndex
        });
        myChart.dispatchAction({
            type: 'showTip',
            seriesIndex: 0,
            dataIndex: params.dataIndex,
        });
    });
    myChart.on('mouseout', function(params) {
        timeTicket && clearInterval(timeTicket);
        timeTicket = setInterval(function() {
            myChart.dispatchAction({
                type: 'downplay',
                seriesIndex: 0,
            });
            myChart.dispatchAction({
                type: 'highlight',
                seriesIndex: 0,
                dataIndex: (count) % dataLength
            });
            myChart.dispatchAction({
                type: 'showTip',
                seriesIndex: 0,
                dataIndex: (count) % dataLength
            });
            count++;
        }, 1000*3);
    });
    }
});

3效果:
在这里插入图片描述

4.代码地址 代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值