mirror of https://gitee.com/antv-l7/antv-l7
205 lines
4.2 KiB
Markdown
205 lines
4.2 KiB
Markdown
|
---
|
|||
|
title: HeatmapLayer
|
|||
|
order: 5
|
|||
|
---
|
|||
|
|
|||
|
# heatmapLayer
|
|||
|
|
|||
|
|
|||
|
### 简介
|
|||
|
|
|||
|
热力图图层,包含三种类型的,
|
|||
|
- 方格热力图
|
|||
|
|
|||
|
将一组点数据按照等大小的正方形网格进行聚合,一个正方形网格代表网格内所有点的统计值。方格热力图特点以方格网布局。
|
|||
|
|
|||
|
- 六边形热力图
|
|||
|
|
|||
|
将一组点数据按照等大小的六边形网格进行聚合,一个六边形网格代表网格内所有点的统计值。蜂窝热力图特点以六边形热力图网格布局
|
|||
|
|
|||
|
- 经典热力图
|
|||
|
|
|||
|
|
|||
|
|
|||
|
⚠️ 网格热力图和蜂窝热力图需要对数据聚合处理,使用之前需要在source方法设置数据聚合方法
|
|||
|
|
|||
|
### source
|
|||
|
|
|||
|
热力图只支持点数据作为数据源
|
|||
|
|
|||
|
布局方法 通过source的 tansforms属性配置
|
|||
|
|
|||
|
- type 数据聚合类型 grid、hexagon
|
|||
|
- size 网格半径 单位 米
|
|||
|
- field 聚合字段
|
|||
|
- method 聚合方法 count,max,min,sum,mean5个统计维度
|
|||
|
|
|||
|
```javascript
|
|||
|
|
|||
|
layer.source(data, {
|
|||
|
parser: {
|
|||
|
type: 'csv',
|
|||
|
x: 'lng',
|
|||
|
y: 'lat'
|
|||
|
},
|
|||
|
transforms:[
|
|||
|
{
|
|||
|
type: 'grid',
|
|||
|
size: 15000,
|
|||
|
field:'v',
|
|||
|
method:'sum'
|
|||
|
}
|
|||
|
],
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
### shape
|
|||
|
|
|||
|
不同类型热力图shape支持
|
|||
|
|
|||
|
| | 2D | 3d |
|
|||
|
| --- | --- | --- |
|
|||
|
| 网格格热力图 | circle,triangle,square,heaxgon | cylinder,triangleColumn,hexagonColum,squareColumn |
|
|||
|
| 蜂窝热力图 | circle,triangle,square,heaxgon | circle,triangle,square,heaxgon |
|
|||
|
| 普通热力图 | heatmap | heatmap |
|
|||
|
|
|||
|
|
|||
|
热力图布局下只shape方法只支持常量的可视化。
|
|||
|
|
|||
|
```javascript
|
|||
|
HeatmapLayer.shape('square');
|
|||
|
HeatmapLayer.shape('hexagon');
|
|||
|
// 默认类型可以不设置
|
|||
|
```
|
|||
|
|
|||
|
### size
|
|||
|
当前版本 shape 为grid,hexagon不需要设置 size 映射
|
|||
|
|
|||
|
default 类型需要设置size映射 详细参数见[Size](https://www.yuque.com/antv/l7/layer#size)
|
|||
|
|
|||
|
**size(field,values) **
|
|||
|
|
|||
|
- field: 热力图权重字段
|
|||
|
- values: 数据映射区间 热力图显示 [0, 1] 效果最佳
|
|||
|
|
|||
|
```javascript
|
|||
|
HeatmapLayer.size ('field', [0, 1])
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
### color
|
|||
|
default heatMap 类型不需设置 color映射
|
|||
|
|
|||
|
color 配置项同 [**color**](https://www.yuque.com/antv/l7/layer#color)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
### style
|
|||
|
|
|||
|
grid hexagon 可以通过style 设置透明度
|
|||
|
|
|||
|
default热力图需要通过style配置参数热力图参数
|
|||
|
|
|||
|
- intensity 全局热力权重 推荐权重范围 1-5
|
|||
|
- radius 热力半径,单位像素
|
|||
|
- rampColors 色带参数
|
|||
|
- colors 颜色数组
|
|||
|
- positions 数据区间
|
|||
|
|
|||
|
```javascript
|
|||
|
HeatmapLayer.style({
|
|||
|
intensity: 3,
|
|||
|
radius: 20,
|
|||
|
rampColors: {
|
|||
|
colors: [ 'rgba(33,102,172,0.0)', 'rgb(103,169,207)', 'rgb(209,229,240)', 'rgb(253,219,199)', 'rgb(239,138,98)', 'rgb(178,24,43,1.0)' ],
|
|||
|
positions: [ 0, 0.2, 0.4, 0.6, 0.8, 1.0 ]
|
|||
|
}
|
|||
|
})
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
### 完整代码示例
|
|||
|
|
|||
|
#### 普通热力图
|
|||
|
|
|||
|
```javascript
|
|||
|
// 测试数据 url https://gw.alipayobjects.com/os/basement_prod/08c6ea00-dc5f-4bb0-b0b5-52bde5edf0a3.json
|
|||
|
|
|||
|
HeatmapLayer({
|
|||
|
zIndex: 2
|
|||
|
})
|
|||
|
.source(data)
|
|||
|
.size('mag', [ 0, 1 ]) // weight映射通道
|
|||
|
.style({
|
|||
|
intensity: 3,
|
|||
|
radius: 20,
|
|||
|
rampColors: {
|
|||
|
colors: [ 'rgba(33,102,172,0.0)', 'rgb(103,169,207)', 'rgb(209,229,240)', 'rgb(253,219,199)', 'rgb(239,138,98)', 'rgb(178,24,43,1.0)' ],
|
|||
|
positions: [ 0, 0.2, 0.4, 0.6, 0.8, 1.0 ]
|
|||
|
}
|
|||
|
})
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#### 网格热力图
|
|||
|
|
|||
|
```javascript
|
|||
|
var layer = scene.HeatmapLayer({
|
|||
|
zIndex: 2
|
|||
|
})
|
|||
|
.source(data, {
|
|||
|
parser: {
|
|||
|
type: 'csv',
|
|||
|
x: 'lng',
|
|||
|
y: 'lat'
|
|||
|
},
|
|||
|
transforms:[
|
|||
|
|
|||
|
{
|
|||
|
type: 'grid',
|
|||
|
size: 15000,
|
|||
|
field:'v',
|
|||
|
method:'sum'
|
|||
|
}
|
|||
|
]
|
|||
|
})
|
|||
|
.shape('grid')
|
|||
|
.style({
|
|||
|
coverage: 0.8
|
|||
|
})
|
|||
|
.color('count',
|
|||
|
["#002466","#105CB3","#2894E0","#CFF6FF","#FFF5B8","#FFAB5C","#F27049","#730D1C"])
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
#### 六边形热力图
|
|||
|
|
|||
|
```javascript
|
|||
|
var layer = scene.HeatmapLayer({
|
|||
|
zIndex: 2
|
|||
|
}).
|
|||
|
souce(data,{
|
|||
|
parser:{
|
|||
|
type:'csv',
|
|||
|
x:lng,
|
|||
|
y:lat,
|
|||
|
},
|
|||
|
transforms:[
|
|||
|
{
|
|||
|
type:'hexgon',
|
|||
|
size:1500,
|
|||
|
field:'count',
|
|||
|
operation: 'sum',
|
|||
|
}
|
|||
|
]
|
|||
|
})
|
|||
|
.shape('hexgon')
|
|||
|
.size(1000)
|
|||
|
.color('sum')
|
|||
|
.style({
|
|||
|
coverage:0.8
|
|||
|
})
|
|||
|
render()
|
|||
|
```
|