如何使用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 相关文章推荐
JS 遮照层实现代码
Mar 31 Javascript
jQuery随便控制任意div隐藏的方法
Jun 28 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
Feb 04 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
JS创建对象几种不同方法详解
Mar 01 Javascript
jquery实现垂直和水平菜单导航栏
Aug 27 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
vue注册组件的几种方式总结
Mar 08 Javascript
JavaScript和TypeScript中的void的具体使用
Sep 12 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
Vue 数据绑定的原理分析
Nov 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
JS实现移动端双指缩放和旋转方法
2019/12/13 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
深入理解Python 代码优化详解
2014/10/27 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
网络工程专业毕业生推荐信
2013/10/28 职场文书
销售行政专员职责
2014/01/03 职场文书
房屋改造计划书
2014/01/10 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
尼克胡哲观后感
2015/06/08 职场文书
运动会5000米加油稿
2015/07/21 职场文书
自信主题班会
2015/08/14 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书