html+js+css+接口交互+echarts实例一枚
1. 解决了echarts的展现
2. 解决了echarts全屏幕展现(width:100%;height:100%;)
3. 解决了向接口取数据问题
<!DOCTYPE html>
<html> <head>
<meta charset="utf-8">
<title>xxx可视化数据中心</title>
<!-- 引入 echarts.js -->
<script src="/static/echarts.min.js"></script>
<script src="/static/china.js"></script>
</head>
<style>
html,
body {
width: 100%;
height: 100%;
margin: 0;
}
</style> <body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="left" style="width: 75%;height:100%;float:left;"></div>
<div id="rtop" style="width: 25%;height:50%;float:left;background:#404a59;display:none;">
<p class="voice" style="font-size:24px;font-weight:bold;color:#3dbfda;margin-top:100px;">今日请求总量:<span class="voiceCount" style="color:#ddb926"></span></p>
<p class="device" style="font-size:24px;font-weight:bold;color:#3dbfda">今日活跃数:<span class="deviceCount" style="color:#ddb926"></span></p>
<p class="city" style="font-size:24px;font-weight:bold;color:#3dbfda">今日活跃城市数:<span class="cityCount" style="color:#ddb926"></span></p>
</div>
<div id="right" style="width: 25%;height:50%;float:left;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('left'));
var barChart = echarts.init(document.getElementById('right'));
// 指定图表的配置项和数据 var data = [];
var geoCoordMap = {
'海门': [121.15, 31.89],
'鄂尔多斯': [109.781327, 39.608266],
'招远': [120.38, 37.35],
'舟山': [122.207216, 29.985295],
'齐齐哈尔': [123.97, 47.33],
'盐城': [120.13, 33.38],
'赤峰': [118.87, 42.28],
'青岛': [120.33, 36.07],
'乳山': [121.52, 36.89],
'金昌': [102.188043, 38.520089],
'泉州': [118.58, 24.93],
'莱西': [120.53, 36.86],
'日照': [119.46, 35.42],
'胶南': [119.97, 35.88],
'南通': [121.05, 32.08],
'拉萨': [91.11, 29.97],
'云浮': [112.02, 22.93],
'梅州': [116.1, 24.55],
'文登': [122.05, 37.2],
'上海': [121.48, 31.22],
'攀枝花': [101.718637, 26.582347],
'威海': [122.1, 37.5],
'承德': [117.93, 40.97],
'厦门': [118.1, 24.46],
'汕尾': [115.375279, 22.786211],
'潮州': [116.63, 23.68],
'丹东': [124.37, 40.13],
'太仓': [121.1, 31.45],
'曲靖': [103.79, 25.51],
'烟台': [121.39, 37.52],
'福州': [119.3, 26.08],
'瓦房店': [121.979603, 39.627114],
'即墨': [120.45, 36.38],
'抚顺': [123.97, 41.97],
'玉溪': [102.52, 24.35],
'张家口': [114.87, 40.82],
'阳泉': [113.57, 37.85],
'莱州': [119.942327, 37.177017],
'湖州': [120.1, 30.86],
'汕头': [116.69, 23.39],
'昆山': [120.95, 31.39],
'宁波': [121.56, 29.86],
'湛江': [110.359377, 21.270708],
'揭阳': [116.35, 23.55],
'荣成': [122.41, 37.16],
'连云港': [119.16, 34.59],
'葫芦岛': [120.836932, 40.711052],
'常熟': [120.74, 31.64],
'东莞': [113.75, 23.04],
'河源': [114.68, 23.73],
'淮安': [119.15, 33.5],
'泰州': [119.9, 32.49],
'南宁': [108.33, 22.84],
'营口': [122.18, 40.65],
'惠州': [114.4, 23.09],
'江阴': [120.26, 31.91],
'蓬莱': [120.75, 37.8],
'韶关': [113.62, 24.84],
'嘉峪关': [98.289152, 39.77313],
'广州': [113.23, 23.16],
'延安': [109.47, 36.6],
'太原': [112.53, 37.87],
'清远': [113.01, 23.7],
'中山': [113.38, 22.52],
'昆明': [102.73, 25.04],
'寿光': [118.73, 36.86],
'盘锦': [122.070714, 41.119997],
'长治': [113.08, 36.18],
'深圳': [114.07, 22.62],
'珠海': [113.52, 22.3],
'宿迁': [118.3, 33.96],
'咸阳': [108.72, 34.36],
'铜川': [109.11, 35.09],
'平度': [119.97, 36.77],
'佛山': [113.11, 23.05],
'海口': [110.35, 20.02],
'江门': [113.06, 22.61],
'章丘': [117.53, 36.72],
'肇庆': [112.44, 23.05],
'大连': [121.62, 38.92],
'临汾': [111.5, 36.08],
'吴江': [120.63, 31.16],
'石嘴山': [106.39, 39.04],
'沈阳': [123.38, 41.8],
'苏州': [120.62, 31.32],
'茂名': [110.88, 21.68],
'嘉兴': [120.76, 30.77],
'长春': [125.35, 43.88],
'胶州': [120.03336, 36.264622],
'银川': [106.27, 38.47],
'张家港': [120.555821, 31.875428],
'三门峡': [111.19, 34.76],
'锦州': [121.15, 41.13],
'南昌': [115.89, 28.68],
'柳州': [109.4, 24.33],
'三亚': [109.511909, 18.252847],
'自贡': [104.778442, 29.33903],
'吉林市': [126.57, 43.87],
'阳江': [111.95, 21.85],
'泸州': [105.39, 28.91],
'西宁': [101.74, 36.56],
'宜宾': [104.56, 29.77],
'呼和浩特': [111.65, 40.82],
'成都': [104.06, 30.67],
'大同': [113.3, 40.12],
'镇江': [119.44, 32.2],
'桂林': [110.28, 25.29],
'张家界': [110.479191, 29.117096],
'宜兴': [119.82, 31.36],
'北海': [109.12, 21.49],
'西安': [108.95, 34.27],
'金坛': [119.56, 31.74],
'东营': [118.49, 37.46],
'牡丹江': [129.58, 44.6],
'遵义': [106.9, 27.7],
'绍兴': [120.58, 30.01],
'扬州': [119.42, 32.39],
'常州': [119.95, 31.79],
'潍坊': [119.1, 36.62],
'重庆': [106.54, 29.59],
'台州': [121.420757, 28.656386],
'南京': [118.78, 32.04],
'滨州': [118.03, 37.36],
'贵阳': [106.71, 26.57],
'无锡': [120.29, 31.59],
'本溪': [123.73, 41.3],
'克拉玛依': [84.77, 45.59],
'渭南': [109.5, 34.52],
'马鞍山': [118.48, 31.56],
'宝鸡': [107.15, 34.38],
'焦作': [113.21, 35.24],
'句容': [119.16, 31.95],
'北京': [116.46, 39.92],
'徐州': [117.2, 34.26],
'衡水': [115.72, 37.72],
'包头': [110, 40.58],
'绵阳': [104.73, 31.48],
'乌鲁木齐': [87.68, 43.77],
'枣庄': [117.57, 34.86],
'杭州': [120.19, 30.26],
'淄博': [118.05, 36.78],
'鞍山': [122.85, 41.12],
'溧阳': [119.48, 31.43],
'库尔勒': [86.06, 41.68],
'安阳': [114.35, 36.1],
'开封': [114.35, 34.79],
'济南': [117, 36.65],
'德阳': [104.37, 31.13],
'温州': [120.65, 28.01],
'九江': [115.97, 29.71],
'邯郸': [114.47, 36.6],
'临安': [119.72, 30.23],
'兰州': [103.73, 36.03],
'沧州': [116.83, 38.33],
'临沂': [118.35, 35.05],
'南充': [106.110698, 30.837793],
'天津': [117.2, 39.13],
'富阳': [119.95, 30.07],
'泰安': [117.13, 36.18],
'诸暨': [120.23, 29.71],
'郑州': [113.65, 34.76],
'哈尔滨': [126.63, 45.75],
'聊城': [115.97, 36.45],
'芜湖': [118.38, 31.33],
'唐山': [118.02, 39.63],
'平顶山': [113.29, 33.75],
'邢台': [114.48, 37.05],
'德州': [116.29, 37.45],
'济宁': [116.59, 35.38],
'荆州': [112.239741, 30.335165],
'宜昌': [111.3, 30.7],
'义乌': [120.06, 29.32],
'丽水': [119.92, 28.45],
'洛阳': [112.44, 34.7],
'秦皇岛': [119.57, 39.95],
'株洲': [113.16, 27.83],
'石家庄': [114.48, 38.03],
'莱芜': [117.67, 36.19],
'常德': [111.69, 29.05],
'保定': [115.48, 38.85],
'湘潭': [112.91, 27.87],
'金华': [119.64, 29.12],
'岳阳': [113.09, 29.37],
'长沙': [113, 28.21],
'衢州': [118.88, 28.97],
'廊坊': [116.7, 39.53],
'菏泽': [115.480656, 35.23375],
'合肥': [117.27, 31.86],
'武汉': [114.31, 30.52],
'大庆': [125.03, 46.58],
'台北市': [121.56, 25.1],
'新竹市': [121.01, 24.47],
'黔西南布依族苗族自治州': [104.9043700000, 25.0898800000],
'伊犁哈萨克自治州': [81.3241600000, 43.9168900000],
'西双版纳傣族自治州': [100.79, 22.00],
'黔东南苗族侗族自治州': [108.3, 27.3],
'恩施土家族苗族自治州': [109.5, 30.3],
'楚雄彝族自治州': [101.5276700000, 25.0449500000],
'中卫': [105.18, 37.51],
'黄冈': [114.87, 30.45],
'塔城': [82.98, 46.74],
'呼伦贝尔': [119.7658400000, 49.2116300000],
'信阳': [114.09, 32.14],
'周口': [114.69, 33.62],
'红河哈尼族彝族自治州': [103.37, 23.36],
'怀化': [110.00, 27.56],
'忻州': [112.73, 38.41],
'衡阳': [112.57, 26.89],
'贺州': [111.56, 24.40],
'宁德': [119.54, 26.66],
'巴彦淖尔': [107.38, 40.74],
'漯河': [114.01, 33.58],
'赣州': [114.93, 25.83],
'绥化': [126.97, 46.65],
'吕梁': [111.14, 37.51],
'内江': [105.06, 29.58],
'淮南': [116.99, 32.62],
'河池': [108.08, 24.69],
'眉山': [103.84, 30.07],
'抚州': [116.35, 27.94],
'潜江': [112.91, 30.36],
'哈密': [93.51, 42.81],
'新乡': [113.9267500000, 35.3032300000],
'汉中': [107.0237700000, 33.0676100000],
'阜阳': [115.8149500000, 32.8896300000],
'广元': [105.8435700000, 32.4354900000],
'安庆': [117.0635400000, 30.5429400000],
'达州': [107.4679100000, 31.2086400000],
'文山壮族苗族自治州': [104.2150400000, 23.3984900000],
'商洛': [109.94, 33.87],
'宜春': [114.41, 27.81],
'黄石': [115.0389000000, 30.1995300000],
'益阳': [112.3551600000, 28.5539100000],
'莆田': [119.0077100000, 25.4540000000],
'漳州': [117.6472500000, 24.5134700000],
'上饶': [117.9435700000, 28.4546300000],
'六盘水': [104.8302300000, 26.5933600000],
'晋城': [112.8511300000, 35.4903900000],
'十堰': [110.7980100000, 32.6291800000]
}; var convertData = function (data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value)
});
}
}
return res;
};
var barValue = function (data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
value: data[i].value
});
}
}
return res;
};
var barName = function (data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
value: data[i].name
});
}
}
return res;
};
function randomData() {
return Math.round(Math.random() * 1000);
}
option = {
backgroundColor: '#404a59',
title: {
text: 'ROKID语音请求量全国分布',
left: 'center',
top: "20",
textStyle: {
color: '#fff',
fontSize: "28"
}
},
tooltip: {
trigger: 'item',
formatter: function (params) {
return params.name + ' : ' + params.value[2] + '次';
}
},
geo: {
map: 'china',
label: {
emphasis: {
show: false
}
},
roam: true,
itemStyle: {
normal: {
//地图色块
areaColor: '#323c48',
borderColor: '#111'
},
emphasis: {
//地图hover色块
areaColor: '#2a333d'
}
}
},
color: ['#3398DB'],
visualMap: {
min: 0,
max: 15000,
left: 'left',
top: 'bottom',
text: ['高', '低'], // 文本,默认为数值文本
calculable: true,
inRange: {
color: ['#3dbfda', '#eac736', '#FE2E2E']
},
show: false
},
series: [ {
name: '访问量',
type: 'scatter',
coordinateSystem: 'geo',
data: convertData(data),
symbolSize: function (val) {
return 8;
},
label: {
normal: {
formatter: '{b}',
position: 'right',
show: false
},
emphasis: {
show: true
}
},
itemStyle: {
normal: {
color: '#ddb926'
}
}
},
{
name: '访问量Top 5',
type: 'effectScatter',
coordinateSystem: 'geo',
data: convertData(data.sort(function (a, b) {
return b.value - a.value;
}).slice(0, 5)),
symbolSize: function (val) {
return 16;
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke',
period: 1,
scale: 3.5
},
hoverAnimation: true,
label: {
normal: {
formatter: '{b}',
position: 'right',
show: true
}
},
itemStyle: {
normal: {
//top10颜色
color: '#3dbfda',
shadowBlur: 10,
shadowColor: '#333'
}
},
zlevel: 1
}
]
};
baroption = {
backgroundColor: '#404a59',
color: ['#3398DB'],
title: {
text: '语音请求量TOP10',
left: 'center',
top: '5%',
textStyle: {
color: '#fff'
}
},
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: {
left: '0%',
right: '6%',
top: '20%',
bottom: '10%',
containLabel: true,
show: false
},
xAxis: [
{
type: 'value',
position: "top",
axisLabel: { textStyle: { color: '#aaa' } },
splitLine: { show: false },
axisLine: { show: false },
axisTick: { show: false }
}
],
yAxis: [
{
type: 'category',
data: barName(data.sort(function (a, b) {
return b.value - a.value;
}).slice(0, 10)),
inverse: true,
axisTick: {
alignWithLabel: true
},
axisLabel: { textStyle: { color: '#aaa' } },
splitLine: { show: false },
axisLine: { show: false },
axisTick: { show: false }
}
],
series: [
{
name: '语音访问量',
type: 'bar',
barWidth: '60%',
data: barValue(data.sort(function (a, b) {
return b.value - a.value;
}).slice(0, 10)),
itemStyle: {
normal: {
color: '#3dbfda'
}
},
label: {
normal: {
show: true,
position: 'right'
}
}
}
]
}
var getData = function () {
var url = '/api/statistics/city';
var voiceCount = 0,
deviceCount = 0,
voiceDOM = document.getElementsByClassName("voiceCount")[0],
deviceDOM = document.getElementsByClassName("deviceCount")[0],
cityDOM = document.getElementsByClassName("cityCount")[0],
outer = document.getElementById("rtop");
fetch(url, {
method: 'GET',
credentials: 'same-origin',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
}).then((res) => {
res.json().then((json) => {
deviceDOM.innerHTML = json.device_count;
cityDOM.innerHTML = json.data.length;
data = json.data;
data.forEach(function (item) {
voiceCount += item.value;
})
voiceDOM.innerHTML = voiceCount;
// 使用刚指定的配置项和数据显示图表。
option.series[0].data = convertData(data);
option.series[1].data = convertData(data.sort(function (a, b) {
return b.value - a.value;
}).slice(0, 11));
baroption.yAxis[0].data = barName(data.sort(function (a, b) {
return b.value - a.value;
}).slice(0, 11));
baroption.series[0].data = barValue(data.sort(function (a, b) {
return b.value - a.value;
}).slice(0, 11));
myChart.setOption(option);
barChart.setOption(baroption);
outer.style.display = "block";
})
})
}
getData();
var timer = setInterval(function () {
getData();
}, 135000)
</script>
</body> </html>
接口数据的格式
{
"data": [
{
"name": "金华",
"value": 23
},
{
"name": "韶关",
"value": 4
},
{
"name": "福州",
"value": 32
}
],
"device_count": 111,
"errcode": 0,
"errmsg": ""
}
备注,供以后参考和使用
html+js+css+接口交互+echarts实例一枚的更多相关文章
- JS/CSS 响应式样式实例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 微信js SDK接口
微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...
- Js与flash交互:在html页面中用js与MyReport插件交互
Html页面与flash的加载 如下图,flash是html页面的一个插件节点. js与flash进行交互,首先要处理好html页面和swf的加载问题. Swf调用外部js方法,要确保js方法已存在, ...
- ASP.net与SQLite数据库通过js和ashx交互(连接和操作)
ASP.net与SQLite数据库通过js和ashx交互(连接和操作): 废话(也是思路):用的是VS2010,打算做网站前后台.由于不喜欢前台语言里加些与html和css和js的其他内容,想实现前后 ...
- Android 中 js 和 原生交互
Android中的WebView 中加载的URL 默认是在手机浏览器中加载的,我们可以覆盖这种默认的动作,让网页在WebView中打开.通过设置WebView的WebViewClent 达到这个效果. ...
- JS&Swift相互交互
加载本地HTML文件 x override func loadView() { super.loadView() let conf = WKWebViewCon ...
- js与native交互
js与native交互 UIWebView Native调用JS,使用stringByEvaluatingJavaScriptFromString来解释执行js脚本. //script即为要执行的js ...
- 利用缓存实现APP端与服务器接口交互的Session控制
与传统B/S模式的Web系统不同,移动端APP与服务器之间的接口交互一般是C/S模式,这种情况下如果涉及到用户登录的话,就不能像Web系统那样依赖于Web容器来管理Session了,因为APP每发一次 ...
- CEF3开发者系列之JS与C++交互之一
JS与Native交互是相对于比较困难的技术,在学习这门技术之前,我们先了解下浏览器内核中的JS引擎与chromium内核的V8引擎相关知识.在浏览器应用中,JS与本地代码互相调用,得益于浏览器内核对 ...
随机推荐
- 优化iOS程序性能的25个方法
1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自己主动引用计数)和iOS5一起公布.它避免了最常见的也就是常常是因为我们忘记释放内存所造成的内存泄露.它自己 ...
- sqlserver ssms ctrl+e快捷键问题
大部分的环境 win2008R2+sqlserver2014R2 ssms 中 ctrl+e都是可以执行查询的,某些情况下,ctrl+e是个组合键 ctrl+e已按下,正在等待按下第二个键 调整方法 ...
- demo02
class PhoneNumber(): def __init__(self,number): self.a=number[1:4] self.b=number[6:9] self.c=number[ ...
- Makefile 中:= ?= += =的区别【转】
转自:http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 在Makefile中我们经常看到 = := ?= +=这几个赋值 ...
- Java JDBC数据库编程
课程 Java面向对象程序设计 一.实验目的 掌握数据库编程技术 二.实验环境 1.微型计算机一台 2.WINDOWS操作系统,Java SDK,Eclipse开发环境,Microsoft SQL ...
- hadoop编译map/reduce时的问题
参考链接 http://hadoop.apache.org/common/docs/stable/mapred_tutorial.html http://blog.endlesscode.com/20 ...
- Java虚拟机学习 - 对象引用强度 ( 8 )
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关. 引用主要分为 :强引用(Strong Reference).软引用(Soft Ref ...
- C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌
1. IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...
- 转 WEB前端性能分析--工具篇
在线网站类: WebPageTest 说明: 在线的站点性能评测网站,地址http://www.webpagetest.org/ 补充: 其实这网站也是个开源项目,所以支持自己搭建一个内部的测试站点 ...
- Spring.net(二)----初探IOC容器
我在上一篇关于Spring.net的文章“Spring.NET框架简介及模块说明 ”中很详细的介绍了,本文就不旧话从提.我门就直奔主题吧. 1.首先了解两个接口. IObjectFactory接口和 ...