如何使用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 相关文章推荐
javascript Array.remove() 数组删除
Aug 06 Javascript
网页中的图片的处理方法与代码
Nov 26 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
最全面的百度地图JavaScript离线版开发
Sep 10 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
vue实现简单表格组件实例详解
Apr 16 Javascript
jQuery tip提示插件(实例分享)
Apr 28 jQuery
详解VueJs前后端分离跨域问题
May 24 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
js+canvas实现纸牌游戏
Mar 16 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字符串过滤,转换函数代码
2012/05/01 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
应届毕业生就业自荐信
2013/10/26 职场文书
银行职员思想汇报
2013/12/31 职场文书
清扬洗发水广告词
2014/03/14 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
效能监察建议书
2014/05/19 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
pytorch 使用半精度模型部署的操作
2021/05/24 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript