如何使用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 request函数 用来获取url参数
May 17 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
Dec 29 Javascript
Javascript MVC框架Backbone.js详解
Sep 18 Javascript
jQuery中innerHeight()方法用法实例
Jan 19 Javascript
javascript等号运算符使用详解
Apr 16 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
AngularJs 延时器、计时器实例代码
Sep 16 Javascript
Angularjs添加排序查询功能的实例代码
Oct 24 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
vuex vue简单使用知识点总结
Aug 29 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加密解密示例分享
2014/01/29 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
CSS常用网站布局实例
2008/04/03 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
浅谈Python单向链表的实现
2015/12/24 Python
python 实现登录网页的操作方法
2018/05/11 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
django-csrf使用和禁用方式
2020/03/13 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
保洁主管岗位职责
2013/11/20 职场文书
简历的个人自我评价范文
2014/01/03 职场文书
运动会广播稿60字
2014/01/15 职场文书
保险专业自荐信范文
2014/02/20 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
趣味运动会标语口号
2015/12/26 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android