echart——ip地区分布地图

利用Echart插件,实现用户IP自动绘制用户地区分布情况。

1、php解析ip数据

从mysql表取用户ip,调用新浪IP地址库解析得到对应地区,存到php数组:

    格式:array("江苏"=>"15","上海"=>"18"),表示用户在江苏分布数量为15。

<?php
header("Content-type=text/json;charset=UTF8");

$conn = @mysql_connect("127.0.0.1","root","root") or die("无法连接数据库...");
mysql_query("set names UTF8");
mysql_select_db("identity",$conn);

#query
$resultset = mysql_query('SELECT * FROM ipinfo ');
#mysql_query('delete from province');
$data = array();

class Alteration{
	public $ipinfo;
	
}

while($row = mysql_fetch_array($resultset,MYSQL_ASSOC)) {
	$data[] = $row['ip']; 
	
}

function getLocation($ip=''){
    //empty($ip) && $ip = getip();
    if($ip=="127.0.0.1") return "本机地址";
    $api = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip"; 
    $json = @file_get_contents($api);//调用新浪IP地址库 
    $arr = json_decode($json,true);//解析json
    $country = $arr['country']; //取得国家
    $province = $arr['province'];//获取省份 
    $city = $arr['city']; //取得城市

    if((string)$country == "中国"){
     $_location=$province;      //把ip的省份赋给_location

    }else{
    $_location = $country;
    }

    return $_location;
}
//遍历ip字段得到各自的省份信息,存入city数组
$city = [];
for ($i = 0; $i < count($data); $i++){
    $city[$i] = getLocation($data[$i]);
}
$array=[];
//统计每个省份的用户数量存入array数组,array("江苏"=>"15","上海"=>"18")
for ($i = 0; $i < count($city); $i++){

    
    if(array_key_exists($city[$i],$array))
    {
        $array[$city[$i]]+=1;
    }
    else
    {
        $array[$city[$i]]=1;
    }    
} 

/*
class dataArr{
    public $province;
    public $numb;
}  
foreach($array as $pro=>$pro_value) {
    $alter=new dataArr();
    $alter->province= $pro;
    $alter->numb= $pro_value;
    $data_Pro[]=$alter;
    
}

*/



echo json_encode($array);
/*输出用户量
echo $array['上海'];
echo '<br/>';
echo $array['江苏'];
echo '<br/>';
echo $array['湖北'];

*/
mysql_close($conn);

?>

2、利用ajax传入jason格式的“用户地区分布”信息

<!DOCTYPE html>
<head>
        <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!--自适应device-width设备宽度-->
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1">


    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <script src="http://127.0.0.1/echarts.js"></script>
    <script src="http://127.0.0.1/echarts/china.js"></script>
    <script src="http://127.0.0.1/jquery.min.js"></script>
    
        <title>ECharts</title>

    <style> 

    </style> 
</head>

<body>

<div  id="main" style="height:600px;width:100%;border:1px solid black;"></div>


<script type="text/javascript">

var datas;
        function getusers() {
            $.ajax({
                type:"post",
                async:false,    //async属性
                url:"http://127.0.0.1/getip/IpInfo.php",
                data:{},
                dataType:"json",
                
                contentType: "application/x-www-form-urldecoded; charset=utf-8",
                success:function(result){
                    datas=result;
                    //alert(datas['江苏']);
                },
                error:function(errmsg) {
                    alert("Ajax获取数据错误"+errmsg);
                }
            });
            
        }
        getusers();

var chart = echarts.init(document.getElementById('main'));
    chart.setOption({
        title:{
            text:'交易终端用户地区分布',
            subtext:'2017/07/03',
            left:'center',
        },
        tooltip: {
        trigger: 'item'
        },
        
        
    
    visualMap: {
        min: 0,
        max: 2500,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],           // 文本,默认为数值文本
        calculable: true,
        inRange: {
            color: ['lightskyblue','yellow', 'orangered']
        }
    },
    toolbox: {
        show: true,
        
        orient: 'vertical',
        left: 'right',
        top: 'top',
        feature: {
            dataView: {readOnly: false},
            restore: {},
            saveAsImage: {}
        }
    },
        series: [{
            name: '用户分布',
            type: 'map',
            map: 'china',
            roam: false,
            label: {
                normal: {
                    show: true
                },
                emphasis: {
                    show: true
                }
            },
            data:[
                {name: '上海',value: datas["上海"]}, 
                {name: '北京',value: datas["北京市"]},  
                {name: '天津',value: datas["天津市"]},  
                {name: '上海',value: datas["上海市"]},  
                {name: '重庆',value: datas["重庆市"]},  
                {name: '河北',value: datas["河北"]},  
                {name: '河南',value: datas["河南"]},  
                {name: '云南',value: datas["云南"]},  
                {name: '辽宁',value: datas["辽宁"]},  
                {name: '黑龙江',value: datas["黑龙江"]},  
                {name: '湖南',value: datas["湖南"]},  
                {name: '安徽',value: datas["安徽"]},  
                {name: '山东',value: datas["山东"]},  
                {name: '新疆',value: datas["新疆"]},  
                {name: '江苏',value: datas["江苏"]},  
                {name: '浙江',value: datas["浙江"]},  
                {name: '江西',value: datas["江西"]},  
                {name: '湖北',value: datas["湖北"]},  
                {name: '广西',value: datas["广西"]},  
                {name: '甘肃',value: datas["甘肃"]},  
                {name: '山西',value: datas["山西"]},  
                {name: '内蒙古',value: datas["内蒙古"]},  
                {name: '陕西',value: datas["陕西"]},  
                {name: '吉林',value: datas["吉林"]},  
                {name: '福建',value: datas["福建"]},  
                {name: '贵州',value: datas["贵州"]},  
                {name: '广东',value: datas["广东"]},  
                {name: '青海',value: datas["青海"]},  
                {name: '西藏',value: datas["西藏"]},  
                {name: '四川',value: datas["四川"]},  
                {name: '宁夏',value: datas["宁夏"]},  
                {name: '海南',value: datas["海南"]},  
                {name: '台湾',value: datas["台湾"]},  
                {name: '香港',value: datas["香港"]},  
                {name: '澳门',value: datas["澳门"]} 
            
            ]
        }]
        
        
    });
</script>

</body>


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Echart 是一款功能强大的数据可视化工具,可以用来制作某个城市的地图。首先,我们需要准备地理数据和相关的统计数据。地理数据可以是该城市的地理坐标点的集合,统计数据可以是与这些坐标点相关的数据,例如人口数量、经济指标等。 其次,我们可以使用 Echart地图组件来绘制该城市的地图Echart 提供了丰富的地图模板,可以满足不同需求。我们可以选择一个与该城市对应的地图模板,并根据具体需求进行自定义修改。 在绘制地图的过程中,我们可以设置不同的图例、标签和颜色来展示统计数据,以便更清晰地反映城市的特征和分布情况。例如,我们可以设置不同颜色的区域表示不同的统计指标数值,再为每个区域添加标签以便查看具体数值。 另外,Echart 还提供了交互式的功能,可以通过鼠标移动、滚动等操作来浏览和比较不同区域的统计数据。这样,我们可以更加直观地了解城市的地理特征和统计情况。 最后,我们可以将制作好的地图导出为图片或 HTML 文件,以便在网页、报告等各种场景中使用和分享。同时,Echart 还支持响应式设计,可以根据不同的设备自动调整地图的大小和布局,以便在不同终端上展示地图。 总而言之,Echart 提供了丰富的功能和灵活的操作方式,可以帮助我们制作精美、交互性强的某个城市地图,用来展示该城市的地理特征和统计数据。无论是做科研、教学还是市场调研,Echart 都是一个非常好用的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值