heatmapPaint

View source
生成 mapbox heatmap 图层 paint,把要素属性线性映射为热力权重并按密度着色。

简介

heatmapPaint 一步生成 heatmap 图层的完整 paint:把指定要素属性按 weightRange 线性映射为 0..1 热力权重,并按 heatmap-density 经颜色断点着色(density 0 处自动透明,避免全图铺底色)。免去手写冗长的 interpolate 表达式。

@movk/mapbox/utils/heatmap 导入(非自动导入)。

用法

把带 temperature 属性的点数据渲染为热力图:

<script setup lang="ts">
import { heatmapPaint } from '@movk/mapbox/utils/heatmap'
import type { FeatureCollection } from 'geojson'

const data: FeatureCollection = {
  type: 'FeatureCollection',
  features: Array.from({ length: 200 }, (_, i) => ({
    type: 'Feature',
    properties: { temperature: (i * 37) % 40 },
    geometry: {
      type: 'Point',
      coordinates: [116.3 + ((i * 53) % 100) / 500, 39.85 + ((i * 71) % 100) / 600]
    }
  }))
}

const paint = heatmapPaint({ weightProperty: 'temperature', weightRange: [0, 40], radius: 28 })
</script>

<template>
  <div class="h-115 w-full overflow-hidden rounded-(--ui-radius) border border-default">
    <MapboxMap
      :options="{ style: 'mapbox://styles/mapbox/dark-v11', center: [116.4, 39.93], zoom: 11 }"
    >
      <MapboxLayer
        layer-id="heat"
        type="heatmap"
        :source="{ type: 'geojson', data }"
        :paint="paint"
      />
    </MapboxMap>
  </div>
</template>

API

heatmapPaint()

生成 heatmap 图层 paint。

options.weightProperty
string
权重取值的要素属性,默认 'temperature'
options.weightRange
[number, number]
权重属性取值范围 [min, max],线性映射到 0..1,默认 [0, 40]
options.colorStops
[number, string][]
密度-颜色断点 [密度比 0..1, 颜色][];缺省为蓝→红五档,density 0 处自动透明。
options.radius
number
热力半径(像素),默认 30
options.intensity
number
热力强度,默认 1
options.opacity
number
整体不透明度,默认 1

返回热力图层 paint 对象,可直接绑定到 <MapboxLayer type="heatmap">paint

Changelog

No recent changes
Copyright © 2026 - 2026 YiXuan - MIT License