Skip to content

3D 地图

3D 地图用于展示地理数据,支持加载任意 GeoJSON 数据源,并提供区域着色、地图钻取(省/市/区县三级联动)和多图层叠加(标记点、飞线、热力图、柱状棱柱等)。

快速开始

地图配置放在 option.map3D 中,区域数据放在 series 中:

vue
<template>
  <RayMap3D :option="chartOption" />
</template>

<script setup>
import { ref } from 'vue';
import { RayMap3D } from 'raychart';

const chartOption = ref({
  map3D: {
    geojsonUrl: 'https://geojson.raychart.cn/china.json', // 中国地图 GeoJSON
  },
  series: [
    {
      type: 'map3D',
      data: [
        { name: '北京', value: 100 },
        { name: '上海', value: 200 },
        { name: '广东', value: 300 },
      ],
    },
  ],
});
</script>

数据格式

series.data 中的 name 需要与 GeoJSON 特征的 name 属性一致(如"北京市"),value 用于区域着色和标签显示。

核心配置

地图配置(map3D

属性类型默认值说明
map3D.geojsonUrlstring-GeoJSON 数据地址(与 geojson 二选一)
map3D.geojsonobject-直接传入 GeoJSON 数据(与 geojsonUrl 二选一)
map3D.center[number, number]自动计算投影中心经纬度
map3D.scalenumber1投影缩放比例
map3D.elevationnumber0地图整体抬高高度
map3D.baseHeightnumber-底面厚度
map3D.heightScalenumber0.02区域高度缩放系数
map3D.pitch / rotation / zoomnumber-初始相机角度和缩放
map3D.minPolarAngle / maxPolarAnglenumber(弧度)-π/4 / π/8俯仰角限制范围(详见视角与视口限制
map3D.minAzimuthAngle / maxAzimuthAnglenumber(弧度)-π/12 / π/12方位角限制范围
map3D.viewRationumber0.8地图包围盒占视口比例(0-1)
map3D.borderobject-区域边界线:{ show, color, opacity }
map3D.labelobject-区域名称标签样式(LabelStyle
区域样式与颜色

series.color 设置区域默认调色板,data 项中的 itemStyle 可单独指定某个区域的颜色:

javascript
series: [
  {
    type: 'map3D',
    color: ['#5470c6', '#91cc75', '#fac858'], // 按数值分档的调色板
    data: [
      { name: '北京市', value: 100, itemStyle: { color: '#ff6b6b' } }, // 单独高亮
      { name: '上海市', value: 200 },
    ],
  },
],

地图钻取(map3D.drillDown

属性类型默认值说明
drillDown.enabledbooleanfalse启用钻取
drillDown.baseUrlstring-下级地图 GeoJSON 地址模板({adcode} 会被替换)
drillDown.maxLevel'country' | 'province' | 'city''city'最大钻取级别
drillDown.allowAdcodes / denyAdcodesstring[]-允许 / 禁止钻取的行政区划代码

钻取行为

启用后点击区域会加载下一级地图(如点击"广东省"进入广东省地图),navigation 配置 { show: true } 可显示返回上一级的导航按钮。

图层(map3D.layers

图层用于在地图上叠加数据可视化元素,data 项通过 coord: [经度, 纬度] 定位:

类型说明
point标记点,支持 colorRanges 分级着色和 pulse 脉冲动画
prism柱状棱柱,heightScale 控制高度,常用来做柱状地图
label自定义文本标签,支持 labelTypes 多种样式
billboard立牌标签(文字 + 支柱)
line普通折线
arc弧线(飞线),curveHeight 控制弧度
flow流动线(沿线流动的光点),支持 speed / tailCount
path路径图层,统一管理 line / flow / arc 三种模式
heatmap热力图,radius / intensity / gradient 控制效果
hex六边形蜂窝热力图
ground地面圆点

常见场景

区域高亮

通过 data 项的 itemStyle 单独着色:

vue
<script setup>
const chartOption = ref({
  map3D: {
    geojsonUrl: 'https://geojson.raychart.cn/china.json',
  },
  series: [
    {
      type: 'map3D',
      data: [
        { name: '北京市', value: 100, itemStyle: { color: '#ff6b6b' } },
        { name: '上海市', value: 200, itemStyle: { color: '#4ecdc4' } },
        { name: '广东省', value: 300, itemStyle: { color: '#45b7d1' } },
      ],
    },
  ],
});
</script>

标记点 + 飞线

叠加 pointarc 图层,展示城市之间的数据流动:

vue
<script setup>
const chartOption = ref({
  map3D: {
    geojsonUrl: 'https://geojson.raychart.cn/china.json',
    layers: [
      {
        type: 'point',
        data: [
          { coord: [116.4, 39.9], name: '北京', value: 100, color: '#ff6b6b', size: 1.2 },
          { coord: [121.47, 31.23], name: '上海', value: 80, color: '#4ecdc4', size: 1.0 },
        ],
        pulse: { enabled: true, speed: 1.5 }, // 呼吸动画
      },
      {
        type: 'arc',
        data: [
          { from: [116.4, 39.9], to: [121.47, 31.23], value: 60, curveHeight: 8 },
        ],
        speed: 0.5, // 飞线流动速度
      },
    ],
  },
  series: [{ type: 'map3D', data: [{ name: '北京市', value: 100 }] }],
});
</script>

地图钻取

vue
<script setup>
const chartOption = ref({
  map3D: {
    geojsonUrl: 'https://geojson.raychart.cn/china.json',
    drillDown: {
      enabled: true,
      baseUrl: 'https://geojson.raychart.cn/province/{adcode}.json',
      maxLevel: 'city',
    },
    navigation: { show: true }, // 显示返回上级按钮
  },
  series: [{ type: 'map3D', data: [{ name: '广东省', value: 300 }] }],
});
</script>

地图编辑器

RayChart 提供了专门的地图编辑器,可以可视化地配置 3D 地图的样式、数据和图层:

使用地图编辑器

访问 地图编辑器 可视化配置地图,编辑器生成的配置可直接复制到项目中。

组件属性

属性类型默认值说明
optionRayChartOption-图表配置对象(必填)
widthstring | number'100%'图表宽度
heightstring | number'600px'图表高度

相关文档

基础学习

进阶主题

API 参考

其他图表类型

在线工具