如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)


Posted in Javascript onFebruary 23, 2016

ECharts地图主要用于地理区域数据的可视化,展示不同区域的数据分布信息。ECharts官网提供了中国地图、世界地图等地图数据下载,通过js引入或异步加载json文件的形式调用地图。

如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)

效果演示       源码下载

本文将结合实例讲解如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据,我们以中国地图为例,展示去年(2015年)我国各省份GDP数据。通过异步请求php,读取mysql中的数据,然后展示在地图上,因此本文除了你掌握前端知识外,还需要你了解PHP以及MySQL方面的相关知识。

HTML

首先在页面中需要加载地图的位置放上div#myChart。

<div id="myChart" style="width: 600px;height:400px;"></div> 
<script src="echarts.min.js"></script>

然后是加载Echarts和中国地图js文件。由于本文实例中应用了异步ajax加载数据,所以需要加载jQuery库文件。

<script src="js/echarts.min.js"></script> 
<script src="js/china.js"></script> 
<script src="js/jquery.min.js"></script>

Javascript

接下来js部分,先设置好Echarts选项内容,请看以下代码及注释。

option = { 
title : { 
text: '2015年GDP统计数据', 
subtext: '数据来源网络(单位:万亿元)', 
left: 'center' //标题居中 
}, 
tooltip : { //提示工具, 
trigger: 'item', 
formatter: "{a} <br/>{b} : {c}万亿元" 
}, 
visualMap: { //视觉映射组件,可以根据范围调节数据变化 
min: 0, //最小值 
max: 10, //最大值 
left: 'left', //位置 
top: 'bottom', 
orient: 'horizontal', //水平 
text:['高','低'], // 文本,默认为数值文本 
calculable : true //是否启用值域漫游,即是否有拖拽用的手柄,以及用手柄调整选中范围。 
}, 
toolbox: { //工具栏 
show: true, 
orient : 'vertical', //垂直 
left: 'right', 
top: 'center', 
feature : { 
mark : {show: true}, 
saveAsImage : {show: true} //保存为图片 
} 
}, 
series : [ 
{ 
name: '2015年GDP', 
type: 'map', 
mapType: 'china', //使用中国地图 
roam: false, //是否开启鼠标缩放和平移 
itemStyle:{ 
normal:{label:{show:true}}, 
emphasis:{label:{show:true}} 
}, 
data:[] 
} 
] 
}; 
var myChart = echarts.init(document.getElementById('myChart')); 
myChart.showLoading(); //预加载动画 
myChart.setOption(option); //渲染地图

然后我们使用jQuery的Ajax()来异步请求数据。

$.ajax({ 
type: "post", 
async: false, //同步执行 
url: "mapdata.php", 
dataType: "json", //返回数据形式为json 
success: function(result) { 
myChart.hideLoading(); //隐藏加载动画 
myChart.setOption({ //渲染数据 
series: [{ 
// 根据名字对应到相应的系列 
name: '2015年GDP', 
data: result 
}] 
}); 
}, 
error: function() { 
alert("请求数据失败!"); 
} 
});

很显然,我们看到通过jQuery的$.ajax()向mapdata.php发送了一个post请求,要求返回json格式的数据,当请求成功并得到回应时,重新渲染地图数据。

PHP

mapdata.php的任务是读取mysql数据表中的数据,然后返回给前端。首先是要连接数据库,这部分代码在connect.php中,请下载源码查看。然后就是sql查询,读取表echarts_map中的数据,最后以json格式返回。

include_once('connect.php'); //连接数据库 
//查询数据 
$sql = "select * from echarts_map"; 
$query = mysql_query($sql); 
while($row=mysql_fetch_array($query)){ 
$arr[] = array( 
'name' => $row['province'], 
'value' => $row['gdp'] 
); 
} 
mysql_close($link); 
echo json_encode($arr); //输出json格式数据

MySQL

最后提供mysql数据表结构信息,数据信息可以下载源码后,将sql导入你的mysql中即可,注意演示时修改connect.php的数据库配置信息。

CREATE TABLE IF NOT EXISTS `echarts_map` ( 
`id` int(10) NOT NULL AUTO_INCREMENT, 
`province` varchar(30) NOT NULL, 
`gdp` decimal(10,2) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Javascript 相关文章推荐
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
Dec 02 Javascript
jQuery+Ajax实现无刷新操作
Jan 04 Javascript
jQuery文字横向滚动效果的实现代码
May 31 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
小试小程序云开发(小结)
Jun 06 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
Jul 22 Javascript
vue 中 命名视图的用法实例详解
Aug 14 Javascript
Node.js创建一个Express服务的方法详解
Jan 06 Javascript
教你如何终止JQUERY的$.AJAX请求
Feb 23 #Javascript
JQUERY的AJAX请求缓存里的数据问题处理
Feb 23 #Javascript
javascript每日必学之多态
Feb 23 #Javascript
javascript每日必学之继承
Feb 23 #Javascript
JS实现的仿QQ空间图片弹出效果代码
Feb 23 #Javascript
理解javascript封装
Feb 23 #Javascript
学习Javascript面向对象编程之封装
Feb 23 #Javascript
You might like
PHP数据库开发知多少
2006/10/09 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
理工学院学生自我鉴定
2014/02/23 职场文书
个人授权委托书
2014/09/15 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
写给老师的感谢信
2015/01/20 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
angular异步验证器防抖实例详解
2022/03/31 Javascript