giserhome

前言

openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子,这个也是学习 openlayers4 的好素材。

openlayers4 入门开发系列的地图服务基于 Geoserver 发布的,关于 Geoserver 方面操作的博客,可以参考以下几篇文章:

内容概览

1.基于 openlayers4 结合 echarts4 实现统计图
2.源代码 demo 下载

效果图如下:

  • 地图加载代码如下:
/**
* 地图创建初始化
*/
var map = new ol.Map({
target: \'map\',
layers: [
new ol.layer.Tile({
source: new ol.source.XYZ({
url: \'http://cache1.arcgisonline.cn/arcgis/rest/services/ChinaOnline\' +
\'StreetPurplishBlue/MapServer/tile/{z}/{y}/{x}\'
})
})
],
view: new ol.View({
center: [113.53450137499999, 34.44104525],
projection: \'EPSG:4326\',
zoom: 6
})
});
  • echarts数据源设置:
//饼状图数据源
var option = {
title : {
text: \'\',
subtext: \'\',
x:\'center\'
},
tooltip : {
trigger: \'item\',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient: \'vertical\',
left: \'left\',
data: [\'直接访问\',\'邮件营销\',\'联盟广告\',\'视频广告\',\'搜索引擎\'],
textStyle:{
color: [\'#FFFFFF\']
}
},
series : [
{
name: \'访问来源\',
type: \'pie\',
radius : \'55%\',
center: [\'50%\', \'60%\'],
data:[
{value:335, name:\'直接访问\'},
{value:310, name:\'邮件营销\'},
{value:234, name:\'联盟广告\'},
{value:135, name:\'视频广告\'},
{value:1548, name:\'搜索引擎\'}
],
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: \'rgba(0, 0, 0, 0.5)\'
}
}
}
]
};
//柱状图数据源
var option = {
tooltip: {
trigger: \'axis\',
axisPointer: {
type: \'cross\',
crossStyle: {
color: \'rgba(0, 0, 0, 0.5)\'
},
label: {
backgroundColor: \'rgba(0, 0, 0, 0.5)\'
}
}
},
toolbox: {
feature: {
dataView: {show: false, readOnly: false},
magicType: {show: false, type: [\'line\', \'bar\']},
restore: {show: false},
saveAsImage: {show: false}
}
},
legend: {
data:[\'蒸发量\',\'降水量\',\'平均温度\'],
textStyle:{
color: [\'#FFFFFF\']
}
},
xAxis: [
{
type: \'category\',
data: [\'1月\',\'2月\',\'3月\',\'4月\',\'5月\',\'6月\',\'7月\',\'8月\',\'9月\',\'10月\',\'11月\',\'12月\'],
axisPointer: {
type: \'shadow\'
},
nameTextStyle: {
color: [\'#FFFFFF\']
},
axisLine:{
lineStyle:{
color:\'#FFFFFF\',
width:1,//这里是为了突出显示加上的
}
}
}
],
yAxis: [
{
type: \'value\',
name: \'水量\',
min: 0,
max: 250,
interval: 50,
axisLabel: {
formatter: \'{value} ml\'
},
nameTextStyle: {
color: [\'#FFFFFF\']
},
axisLine:{
lineStyle:{
color:\'#FFFFFF\',
width:1,//这里是为了突出显示加上的
}
}
},
{
type: \'value\',
name: \'温度\',
min: 0,
max: 25,
interval: 5,
axisLabel: {
formatter: \'{value} °C\'
},
nameTextStyle: {
color: [\'#FFFFFF\']
},
axisLine:{
lineStyle:{
color:\'#FFFFFF\',
width:1,//这里是为了突出显示加上的
}
}
}
],
series: [
{
name:\'蒸发量\',
type:\'bar\',
data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name:\'降水量\',
type:\'bar\',
data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
},
{
name:\'平均温度\',
type:\'line\',
yAxisIndex: 1,
data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
}
]
};
  • 统计图初始化加载:
//饼状图加载
var dom = document.getElementById("popupPie");
var pos = ol.proj.fromLonLat([113.53450137499999, 34.44104525],\'EPSG:4326\');
var popupPie = new ol.Overlay({
position: pos,
element: dom
});
map.addOverlay(popupPie);
var myChart = echarts.init(dom);
myChart.setOption(option);
 
//柱状图加载
var dom = document.getElementById("popupBar");
var pos = ol.proj.fromLonLat([112.5245, 28.4211],\'EPSG:4326\');
var popupBar = new ol.Overlay({
position: pos,
element: dom
});
map.addOverlay(popupBar);
var myChart = echarts.init(dom);
myChart.setOption(option);

完整demo源码见小专栏文章尾部GIS之家leaflet小专栏

文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

分类:

技术点:

相关文章: