首页 / MapLibre / 使用示例
热力图
点太密时改用密度着色。热力图的半径是像素单位, 所以同一份数据在不同缩放下呈现的聚集范围会变化。
源码与运行效果
说明
800 个点围绕八个人口密集城市生成,每个点带一个 0–1 的权重。
热力颜色按 heatmap-density 插值,
从透明过渡到蓝、绿、黄、橙。
map.addLayer({
id: 'density-heat',
type: 'heatmap',
source: 'density',
paint: {
'heatmap-weight': ['interpolate', ['linear'], ['get', 'v'], 0, 0.2, 1, 1],
'heatmap-radius': 30,
'heatmap-color': [
'interpolate', ['linear'], ['heatmap-density'],
0, 'rgba(31,95,208,0)',
0.2, '#1f5fd0',
0.45, '#17694a',
0.7, '#a16207',
1, '#c2410c'
]
}
});
| 属性 | 作用 | 单位 |
|---|---|---|
heatmap-weight | 单点贡献强度 | 0–1 |
heatmap-radius | 单个点的影响半径 | 像素 |
heatmap-intensity | 整体浓度倍数 | 倍 |
heatmap-opacity | 图层透明度 | 0–1 |
半径是屏幕像素,不是米。放大后同样的点会显得更分散, 因此热力图适合看「相对聚集」,不适合量算面积。 需要按真实距离统计时,用六边形网格先聚合。
热力图不适合几十个点的稀疏数据。点太少时整幅图只有几团模糊色块, 看不出分布差异,这种数据用 circle 图层更清楚。