如何使用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实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
Apr 20 Javascript
javascript 使td内容不换行不撑开
Nov 29 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
Dec 15 Javascript
JavaScript——DOM操作——Window.document对象详解
Jul 14 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
canvas时钟效果
Feb 16 Javascript
js判断是否是手机页面
Mar 17 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
使用classList来实现两个按钮样式的切换方法
Jan 24 Javascript
用vue写一个日历
Nov 02 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
帅气的琦玉老师
2020/03/02 日漫
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
windows10下python3.5 pip3安装图文教程
2018/04/02 Python
python框架中flask知识点总结
2018/08/17 Python
python Tensor和Array对比分析
2020/01/08 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
工商管理专业应届生求职信
2013/11/04 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫