Preview Updated 2026-05-10

FlowMap 迁徙地图

在简单底图上画起点→终点的弧线,线宽按 value 自动映射,支持箭头与标签。

English translation pending This page hasn't been translated yet — falling back to Chinese. PRs welcome on GitHub.

基础用法

points 是带经纬度的节点列表,edges 通过 from / to 关联 id。value 自动映射到 widthRange 区间;curvature 控制弧线曲率(0 = 直线)。

背景 视口
北京 → 上海北京 → 广州成都 → 上海广州 → 上海沈阳 → 北京西安 → 上海北京上海广州成都西安沈阳
src/App.vue
<script setup lang="ts">
import { CfMapTile, CfFlowMap } from '@chufix-design/maps-vue';
import { samplePointsChina } from '../_shared/sample-geo';

const edges = [
  { from: 'BJ', to: 'SH', value: 120, label: '北京 → 上海' },
  { from: 'BJ', to: 'GZ', value: 80, label: '北京 → 广州' },
  { from: 'CD', to: 'SH', value: 60, label: '成都 → 上海' },
  { from: 'GZ', to: 'SH', value: 200, label: '广州 → 上海' },
  { from: 'SY', to: 'BJ', value: 95, label: '沈阳 → 北京' },
  { from: 'XA', to: 'SH', value: 70, label: '西安 → 上海' },
];
</script>
<template>
  <CfMapTile
    :center="{ lng: 113, lat: 33 }"
    :zoom="4"
    :width="720"
    :height="520"
  >
    <CfFlowMap
      :points="samplePointsChina"
      :edges="edges"
      :show-labels="true"
    />
  </CfMapTile>
</template>
<script setup>
import { CfMapTile, CfFlowMap } from '@chufix-design/maps-vue';
import { samplePointsChina } from '../_shared/sample-geo';

const edges = [
  { from: 'BJ', to: 'SH', value: 120, label: '北京 → 上海' },
  { from: 'BJ', to: 'GZ', value: 80, label: '北京 → 广州' },
  { from: 'CD', to: 'SH', value: 60, label: '成都 → 上海' },
  { from: 'GZ', to: 'SH', value: 200, label: '广州 → 上海' },
  { from: 'SY', to: 'BJ', value: 95, label: '沈阳 → 北京' },
  { from: 'XA', to: 'SH', value: 70, label: '西安 → 上海' },
];
</script>
<template>
  <CfMapTile
    :center="{ lng: 113, lat: 33 }"
    :zoom="4"
    :width="720"
    :height="520"
  >
    <CfFlowMap
      :points="samplePointsChina"
      :edges="edges"
      :show-labels="true"
    />
  </CfMapTile>
</template>
import { CfFlowMap, CfMapTile } from '@chufix-design/react';

export default function Demo() {
  import { CfMapTile, CfFlowMap } from '@chufix-design/maps-vue';
  import { samplePointsChina } from '../_shared/sample-geo';

  const edges = [
    { from: 'BJ', to: 'SH', value: 120, label: '北京 → 上海' },
    { from: 'BJ', to: 'GZ', value: 80, label: '北京 → 广州' },
    { from: 'CD', to: 'SH', value: 60, label: '成都 → 上海' },
    { from: 'GZ', to: 'SH', value: 200, label: '广州 → 上海' },
    { from: 'SY', to: 'BJ', value: 95, label: '沈阳 → 北京' },
    { from: 'XA', to: 'SH', value: 70, label: '西安 → 上海' },
  ];
  return (
    <>
      <CfMapTile center={{ lng: 113, lat: 33 }} zoom={4} width={720} height={520} >
          <CfFlowMap points={samplePointsChina} edges={edges} showLabels={true} />
        </CfMapTile>
    </>
  );
}
import { CfFlowMap, CfMapTile } from '@chufix-design/react';

export default function Demo() {
  import { CfMapTile, CfFlowMap } from '@chufix-design/maps-vue';
  import { samplePointsChina } from '../_shared/sample-geo';

  const edges = [
    { from: 'BJ', to: 'SH', value: 120, label: '北京 → 上海' },
    { from: 'BJ', to: 'GZ', value: 80, label: '北京 → 广州' },
    { from: 'CD', to: 'SH', value: 60, label: '成都 → 上海' },
    { from: 'GZ', to: 'SH', value: 200, label: '广州 → 上海' },
    { from: 'SY', to: 'BJ', value: 95, label: '沈阳 → 北京' },
    { from: 'XA', to: 'SH', value: 70, label: '西安 → 上海' },
  ];
  return (
    <>
      <CfMapTile center={{ lng: 113, lat: 33 }} zoom={4} width={720} height={520} >
          <CfFlowMap points={samplePointsChina} edges={edges} showLabels={true} />
        </CfMapTile>
    </>
  );
}

API

属性类型默认说明
points{ id, name?, lng, lat }[]节点
edges{ from, to, value?, label? }[]起→终边
geojsonFeatureCollection可选底图
extentMapBounds自动投影范围
width / heightnumber480 / 280SVG 尺寸
widthRange[number, number][0.6, 3]value → 线宽映射
curvaturenumber0.22弧线弯曲度,0 为直线
showArrowbooleantrue显示箭头
showNodesbooleantrue显示节点圆点
showLabelsbooleanfalse显示节点名称

反馈与讨论

FlowMap 迁徙地图 · Discussion

0
0 / 600
正在加载评论...