diff --git a/dev-demos/features/heatmap/heatmap.md b/dev-demos/features/heatmap/heatmap.md
new file mode 100644
index 0000000000..ed169c7b73
--- /dev/null
+++ b/dev-demos/features/heatmap/heatmap.md
@@ -0,0 +1,2 @@
+### Heatmap
+
\ No newline at end of file
diff --git a/dev-demos/features/heatmap/heatmap.tsx b/dev-demos/features/heatmap/heatmap.tsx
new file mode 100644
index 0000000000..75b24d4673
--- /dev/null
+++ b/dev-demos/features/heatmap/heatmap.tsx
@@ -0,0 +1,58 @@
+// @ts-ignore
+import { Scene, HeatmapLayer } from '@antv/l7';
+// @ts-ignore
+import { GaodeMap } from '@antv/l7-maps';
+import React, { useEffect } from 'react';
+
+export default () => {
+ useEffect(() => {
+ const scene = new Scene({
+ id: 'map',
+ map: new GaodeMap({
+ style: 'dark',
+ pitch: 0,
+ center: [127.5671666579043, 7.445038892195569],
+ zoom: 2.632456779444394,
+ }),
+ });
+
+ scene.on('loaded', () => {
+ fetch(
+ 'https://gw.alipayobjects.com/os/basement_prod/d3564b06-670f-46ea-8edb-842f7010a7c6.json',
+ )
+ .then((res) => res.json())
+ .then((data) => {
+ const layer = new HeatmapLayer({})
+ .source(data)
+ .shape('heatmap')
+ .size('mag', [0, 1.0]) // weight映射通道
+ .style({
+ intensity: 2,
+ radius: 20,
+ opacity: 1.0,
+ rampColors: {
+ colors: [
+ '#FF4818',
+ '#F7B74A',
+ '#FFF598',
+ '#91EABC',
+ '#2EA9A1',
+ '#206C7C',
+ ].reverse(),
+ positions: [0, 0.2, 0.4, 0.6, 0.8, 1.0],
+ },
+ });
+ scene.addLayer(layer);
+ });
+ });
+ }, []);
+ return (
+