openlayers与echarts3的结合使用

85 篇文章 3 订阅
50 篇文章 0 订阅

来源:https://blog.csdn.net/u010430471/article/details/60594208

OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问,echarts是百度的开源js图表库,下面简单讲解下如何在openlayers的地图‘贴’上echarts的图表。


开始

首先在html界面上添加两个div,一个装载地图,一个装载表格:

<div id="map"></div>
<div id="chart"></div>

 

定义style:

#map{
  height: 70%;
  width: 90%;
}
#chart{
  height: 200px;
  width: 200px;
}

加载地图我就不说了,要用openlayers开始就要学会如何加载地图。

准备图表

然后是准备要显示的数据,我们的数据很简单

var data = [{name:'第一类',value:20},{name:'第二类',value:23},{name:'第三类',value:45},{name:'第四类',value:34},{name:'第五类',value:14}];

接下来指定图表的配置项和数据,我们这里配置echarts的饼状图,具体配置项代码:

var option = {
    tooltip: {
      trigger: 'item',
      formatter: "{b} : {c} ({d}%)"
    },
    toolbox:{
      show:true,
      feature : {
          mark : {show: true},
          magicType : {
              show: true,
              type: ['pie', 'funnel']
          },
      }
    },
    calculable: true,
    series: [{
        type: 'pie',
        radius: '60%',
        startAngle:'45',
        label: {
            normal: {
                show: false
            },
            emphasis: {
                show: false,
                textStyle:{
                  color: '#000000',
                  fontWeight:'bold',
                  fontSize:16
                }
            }
        },
        lableLine: {
          normal: {
              show: false
          },
          emphasis: {
              show: false
          }
        },
        data:data
    }]
};
var chart = echarts.init(document.getElementById('chart'));
chart.setOption(option);

配置项里的具体参数大家可以参考我的博文echarts力导向图里的详细注释,这里就不多加解释了,大家根据自己的需要去调整图表显示吧。

结合

其实以上两个步骤相信有很多人已经非常熟练了,关键是如何将两个结合起来,这也是这篇博文的重点。

这里我们将图表作为openlayers里的Overlay叠加上去,这是一种比较传统的方式,实际上与html要素显示图片类似。

var pt = [103.980167,30.770697];
var pie = new ol.Overlay({
    position: pt,
    positioning: 'center-center',
    element: document.getElementById('chart')
});
map.addOverlay(pie);

其中position是叠加的图表显示的坐标,positioning是将坐标与图表的对应方式,代码里的’center-center’是将其以中心点的方式将坐标与图标对应,其他的对应方式还有’bottom-left’, ‘bottom-center’, ‘bottom-right’, ‘center-left’, ‘center-center’, ‘center-right’, ‘top-left’, ‘top-center’, ‘top-right’。element是对应的html要素。

这样我们就将openlayers与echarts相结合起来了,无图无真相:
这里写图片描述

结尾(示例里没有)

多提一句吧,我们把echarts加到openlayers以后又需要删除,该怎么删除呢?

openlayers已经给我们提供好参数了,通过getOverlays()可以获取到map上的所有overlays 代码如下

map.getOverlays().clear();

--------------------- 本文来自 续汉冕 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u010430471/article/details/60594208?utm_source=copy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 echartsopenlayers 分别实现热力图,下面分别介绍一下具体的方法: 1. echarts 实现热力图 使用 echarts 实现热力图需要使用 echarts 的插件 echarts-gl,通过 echarts-gl 可以使用 WebGL 技术绘制更加复杂的图表,包括热力图。 具体步骤如下: (1)安装 echarts-gl 插件: ``` npm install echarts-gl --save ``` (2)引入 echartsecharts-gl: ```html <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script> ``` (3)创建一个包含地图的 div 容器和一个 echarts 实例: ```html <div id="map" style="width: 100%; height: 600px;"></div> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('map')); </script> ``` (4)配置 echarts 实例,包括地图类型、地图数据和热力图数据: ```javascript option = { tooltip: {}, visualMap: { min: 0, max: 500, calculable: true, inRange: { color: ['#50a3ba', '#eac736', '#d94e5d'] } }, geo: { map: 'world', roam: true }, series: [{ type: 'heatmap', coordinateSystem: 'geo', data: [ {name: 'Afghanistan', value: 283.54}, {name: 'Albania', value: 198.28}, {name: 'Algeria', value: 200.20}, // ... 省略部分数据 ] }] }; myChart.setOption(option); ``` 2. openlayers 实现热力图 使用 openlayers 实现热力图需要使用第三方库 ol-heatmap,ol-heatmap 是一个基于 openlayers 的热力图插件。 具体步骤如下: (1)安装 ol-heatmap: ``` npm install ol-heatmap --save ``` (2)引入 openlayers 和 ol-heatmap: ```html <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol/dist/ol.css" type="text/css"> <script src="https://cdn.jsdelivr.net/npm/ol/dist/ol.js"></script> <script src="https://cdn.jsdelivr.net/npm/ol-heatmap/ol-heatmap.js"></script> ``` (3)创建一个包含地图的 div 容器和一个 openlayers 实例: ```html <div id="map" style="width: 100%; height: 600px;"></div> <script type="text/javascript"> var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: [0, 0], zoom: 2 }) }); </script> ``` (4)创建一个热力图层并添加到 openlayers 实例中: ```javascript var heatmapLayer = new ol.layer.Heatmap({ source: new ol.source.Vector({ url: 'data.json', format: new ol.format.GeoJSON() }), blur: 15, radius: 5, opacity: 0.8 }); map.addLayer(heatmapLayer); ``` 其中,data.json 是包含热力图数据的 GeoJSON 格式文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值