• echarts地图散点高亮弹框制作


    效果图如下:

    实现大致思路:

    引入echarts最新版本,还有china.json,以及地级市坐标,(因为产品需求中不考虑省份,只考虑各个地级市),echarts官网已经不让下载地图了,网上很多地级市坐标不全,格式又不是想要的,没办法只能自己整理了;地级市坐标会放在下一篇文章中;

    var bg_echarts_map = echarts.init(document.getElementById('bg_echarts_map')); //地图
    //获取地图相关数据
    function getMapData(){
    $.ajax({
    url: '/assets/statuserpercity',
    type: 'get',
    data: { },
    success: function (res) {
    var res = typeof res == 'object' ? res : JSON.parse(res);
    if (res.result == 1) {
    var arr = [];
    if(res.data){
       var cityData = res.data.data.statUserPerCity;
       for(var i in cityData){
           arr.push({
                                            name: cityData[i].city.replace(/市/g, '').replace(/辖区/g, '').replace(/地区/g, ''),
                                            value: cityData[i].uv,
    id: cityData[i].cityId,
                                        });
                                    }
    setMap(arr);
    cityAllData = arr;
                                 }
    }
    },
    error: function (res) {
    console.log(res);
    }
    })
    }
     
    //地图
                function setMap(data) {
                 var cityObj = [];
    var sum = 0;
                 for(var i in cityJson ){
                 cityObj.push({name: cityJson[i].properties.name ,cp: cityJson[i].properties.cp});
                 }
    for (var i = 0; i < data.length; i++) {
    for(var j = 0; j < cityObj.length; j++){
    if(data[i].name == cityObj[j].name){
    sum += data[i].value;
    }
    }
    }
    var convertData = function (data) {
    var res = [];
    for (var i = 0; i < data.length; i++) {
    for(var j = 0; j < cityObj.length; j++){
    if(data[i].name == cityObj[j].name){
    var geoCoord = cityObj[j].cp;
    if (geoCoord) {
    res.push({
    name: data[i].name,
    value: geoCoord.concat(data[i].value),
    });
    }
    }
    }
    }
    return res;
    };
    var optionMap = {
    tooltip:{
    padding: 0,
    enterable:true,
    transitionDuration:1,
    textStyle : {
    color: '#000',
    decoration: 'none',
    },
    formatter: function () {
    var tipHtml = '';
    if(tootilpData.probeRtUserInfo){
    tipHtml = ' <div class="tooltip" style="word-wrap:break-word; white-space:pre-wrap !important;">'+
    '<div class="horn">'+
    '<div class="lt"></div>'+
    '<div class="rb"></div>'+
    '</div>'+
    '<div class="phoneData">'+'用户'+tootilpData.probeRtUserInfo.phone+'在'+tootilpData.probeRtUserInfo.address+'联网成功</div>'+
    '</div>';
    }
    if(tootilpData.wiproRtUserInfo){
    tipHtml = ' <div class="tooltip">'+
    '<div class="horn">'+
    '<div class="lt"></div>'+
    '<div class="rb"></div>'+
    '</div>'+
    '<div class="imgData">'+
    '<img class="tooltip_img" src='+tootilpData.wiproRtUserInfo.picId+'>'+
    ' <div class="tooltip_text">'+
    '<span class="tooltip_text_span"><i>'+tootilpData.wiproRtUserInfo.gender+'</i>,<i>'+tootilpData.wiproRtUserInfo.age+'岁</i></span>'+
    '<span class="tooltip_text_span2">到达'+tootilpData.wiproRtUserInfo.city+'的'+tootilpData.wiproRtUserInfo.shopName+'</span>'+
    '</div>'+
    '</div>'+
    '</div>';
    }
    return tipHtml;
    }
    },
    geo: {
    map: 'china',
    show: true,
    roam: false,
    layoutCenter: ['50%','50%'],
    layoutSize: '127%',
    label: {
    emphasis: {
    show: false
    }
    },
    itemStyle: {
    normal: {
    areaColor: 'transparent',
    borderColor: '#0266b4',
    shadowColor: '#0266b4',
    shadowBlur: 20
    },
    },
    emphasis: {
    itemStyle: {
    areaColor: 'transparent',
    }
    },
    },
    series: [
    {
    name: '前30',
    type: 'effectScatter',
    coordinateSystem: 'geo',
    hoverAnimation: false,
    legendHoverLink: false,
    data: convertData(data.sort(function (a, b) {
    return b.value - a.value;
    }).slice(0, 31)),
    symbolSize: function (val) {
    return val[2] / sum * 300
    },
    showEffectOn: 'render',
    rippleEffect: {
    brushType: 'stroke'
    },
    itemStyle: {
    normal: {
    color: '#2fb6a5',
    shadowBlur: 10,
    shadowColor: '#31b8a6'
    },
    emphasis: {
    show: false,
    color: '#03FCDE'
    }
    },
    zlevel: 0,
    silent: true,
    },
    {
    name: '城市',
    type: 'scatter',
    coordinateSystem: 'geo',
    zoom: 2,
    data: convertData(data),
    legendHoverLink: false,
    symbolSize: function (val) {
    var a = val[2] / sum * 300;
    if(a < 5){
    a=5;
    }
    return a;
    },
    itemStyle: {
    normal: {
    color: '#2fb6a5',
    },
    emphasis: {
    show: false,
    color: '#03FCDE'
    }
    },
    zlevel: 1,
    silent: true,
    },
    ]
    };
    bg_echarts_map.setOption(optionMap, true);
     
                }
     
    //获取弹框气泡数据
    function getAlertData (data){
    $.ajax({
    url: '/assets/wiprortuserinfo',
    type: 'get',
    async: false,
    data: { },
    success: function (res) {
    var res = typeof res == 'object' ? res : JSON.parse(res);
    if (res.result == 1) {
    var apData = res.data;
    if(apData){
    if(apData.data.probeRtUserInfo){
    apData.data.probeRtUserInfo.phone = apData.data.probeRtUserInfo.phone ? apData.data.probeRtUserInfo.phone.substr(0,3)+"****"+apData.data.probeRtUserInfo.phone.substr(7) : apData.data.probeRtUserInfo.phone;
    apData.data.probeRtUserInfo.address = apData.data.probeRtUserInfo.city+'的'+apData.data.probeRtUserInfo.shopName;
    apData.data.probeRtUserInfo.address = apData.data.probeRtUserInfo.address.length > 19 ? apData.data.probeRtUserInfo.address.substring(0,19)+'...' : apData.data.probeRtUserInfo.address;
    tootilpData = apData.data;
    }
    if(apData.data.wiproRtUserInfo){
    apData.data.wiproRtUserInfo.gender = apData.data.wiproRtUserInfo.gender == 'f' ? '女' : '男';
    tootilpData = apData.data;
    }
    for(var i in data){
    if(apData.data.probeRtUserInfo){
    if(data[i].id == apData.data.probeRtUserInfo.cityId){
    dataIndex = i;
    }
    }
    if(apData.data.wiproRtUserInfo){
    if(data[i].id == apData.data.wiproRtUserInfo.cityId){
    dataIndex = i;
    }
    }
    }
    if(dataIndex !== null){
    bg_echarts_map.dispatchAction({
    type: 'downplay',
    seriesIndex: 1,
    });
    bg_echarts_map.dispatchAction({
    type: 'highlight',
    seriesIndex: 1,
    dataIndex: dataIndex
    });
    bg_echarts_map.dispatchAction({
    type: 'hideTip',
    seriesIndex: 1,
    });
    bg_echarts_map.dispatchAction({
    type: 'showTip',
    seriesIndex: 1,
    dataIndex: dataIndex
    });
    }
    }else{
    bg_echarts_map.dispatchAction({
    type: 'downplay',
    seriesIndex: 1,
    });
    bg_echarts_map.dispatchAction({
    type: 'hideTip',
    seriesIndex: 1,
    });
    }
    }
    },
    error: function (res) {
    console.log("error...");
    }
    })
    }
  • 相关阅读:
    谷粒商城学习——P52商品服务-API-三级分类-新增效果
    验证码爆破总结
    利用crawlergo-to-xray实现自动化漏洞被动扫描平台搭建
    数据导入经验总结
    SQL实现2个日期之间的工作日数(MySQL)(转)
    MySQL查询所有表的数据量
    crontab定时配置(转)
    SQLyog还原会话失败
    Nginx以xxx开头的转发
    mysql备份shell脚本
  • 原文地址:https://www.cnblogs.com/fmixue/p/9668089.html
Copyright © 2020-2023  润新知