antv-l7/docs/api/layer/heatmap.zh.md

4.2 KiB
Raw Blame History

title order
HeatmapLayer 5

heatmapLayer

简介

热力图图层,包含三种类型的,

  • 方格热力图

将一组点数据按照等大小的正方形网格进行聚合,一个正方形网格代表网格内所有点的统计值。方格热力图特点以方格网布局。

  • 六边形热力图

将一组点数据按照等大小的六边形网格进行聚合,一个六边形网格代表网格内所有点的统计值。蜂窝热力图特点以六边形热力图网格布局

  • 经典热力图

⚠️ 网格热力图和蜂窝热力图需要对数据聚合处理使用之前需要在source方法设置数据聚合方法

source

热力图只支持点数据作为数据源

布局方法 通过source的 tansforms属性配置

  • type  数据聚合类型 grid、hexagon
  • size  网格半径 单位 米
  • field  聚合字段
  • method 聚合方法  count,max,min,sum,mean5个统计维度
 
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方法只支持常量的可视化。

HeatmapLayer.shape('square');
HeatmapLayer.shape('hexagon');
// 默认类型可以不设置

size

当前版本 shape 为gridhexagon不需要设置 size 映射

default 类型需要设置size映射 详细参数见Size

**size(field,values) **

  • field: 热力图权重字段
  • values: 数据映射区间 热力图显示 [0, 1] 效果最佳
HeatmapLayer.size ('field', [0, 1])

color

default heatMap 类型不需设置 color映射

color 配置项同 color

style

grid hexagon 可以通过style 设置透明度

default热力图需要通过style配置参数热力图参数

  • intensity   全局热力权重   推荐权重范围 1-5
  • radius  热力半径单位像素
  • rampColors 色带参数
    • colors  颜色数组
    • positions 数据区间
  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 ]
      }
    })

完整代码示例

普通热力图

// 测试数据 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 ]
      }
    })

网格热力图

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"])

六边形热力图

 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()