DataEase 数据可视化大屏:3D 地图与动态效果实现

DataEase 数据可视化大屏:3D 地图与动态效果实现

【免费下载链接】dataease DataEase: 是一个开源的数据可视化分析工具,支持多种数据源以及丰富的图表类型。适合数据分析师和数据科学家快速创建数据可视化报表。 【免费下载链接】dataease 项目地址: https://gitcode.com/GitHub_Trending/da/dataease

在企业级数据可视化场景中,3D 地图因其立体展示效果和沉浸式交互体验,成为展示区域数据分布的重要方式。DataEase 作为开源数据可视化分析工具,提供了丰富的 3D 地图配置能力,支持多种数据源接入和动态效果设置。本文将从实际操作出发,详细介绍如何在 DataEase 中构建具有动态效果的 3D 地图大屏。

3D 地图数据准备与加载

DataEase 的 3D 地图功能依赖地理信息数据(GeoJSON 格式)和业务指标数据的结合。系统内置了基础行政区划数据,存储在 mapFiles/ 目录下,例如赵县的地理边界数据 mapFiles/156/156130133.json,其结构包含行政区划编码(adcode)、中心点坐标(center)和多边形边界坐标(coordinates):

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "adcode": 130133,
        "name": "赵县",
        "center": [114.775362, 37.754341]
      },
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [[[[115.072289, 37.794126], ...]]]
      }
    }
  ]
}

开发者可通过 getGeoJsonFile 方法加载自定义区域数据,该方法位于 core/core-frontend/src/views/chart/components/js/util.ts,支持缓存机制避免重复请求:

export const getGeoJsonFile = async (areaId: string): Promise<FeatureCollection> => {
  const mapStore = useMapStoreWithOut()
  let geoJson = mapStore.mapCache[areaId]
  if (!geoJson) {
    const res = await getGeoJson(areaId)
    geoJson = res.data
    mapStore.setMap({ id: areaId, geoJson })
  }
  return toRaw(geoJson)
}

3D 地图基础配置

在 DataEase 中创建 3D 地图需通过图表样式面板完成核心参数配置,主要包括以下维度:

地图类型与投影方式

系统支持高德、百度、天地图等多种地图服务提供商,可在 core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue 中切换:

const mapStyleOptions = computed(() => {
  switch (mapType.value) {
    case 'tianditu':
      return tdtMapStyleOptions
    case 'qq':
      return qqMapStyleOptions
    default:
      return gaodeMapStyleOptions
  }
})

3D 效果通过「俯仰角(pitch)」控制,取值范围 0-90 度,角度越大立体感越强:

<el-slider
  :min="0"
  :max="90"
  v-model="state.miscForm.mapPitch"
  @change="changeMisc('mapPitch')"
/>

热力图与高度映射

3D 热力图(heatmap3D)是展示区域密度分布的常用形式,通过 core/core-frontend/src/locales/en.ts 定义中英文切换:

heatmap_classics: 'Classic heatmap',
heatmap3D: '3D heatmap'

核心配置参数包括:

export const getDynamicColorScale = (minValue, maxValue, intervals, colors) => {
  const step = (maxValue - minValue) / intervals
  return Array(intervals).fill(0).map((_, i) => ({
    value: [minValue + i * step, minValue + (i + 1) * step],
    color: colors?.[i]
  }))
}

动态效果实现方案

DataEase 3D 地图支持多种动态交互效果,提升数据叙事能力:

视角动画与交互

通过配置「旋转角(rotation)」和「动画时长」实现自动旋转效果,相关代码位于 core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue

<el-slider
  :min="0"
  :max="360"
  v-model="state.miscForm.mapRotation"
  @change="changeMisc('mapRotation')"
/>

支持鼠标拖拽旋转、滚轮缩放等交互,依赖 core/core-frontend/src/views/chart/components/js/util.ts 中定义的地图图表类型检测:

const mapChartTypes = ['bubble-map', 'flow-map', 'heat-map', 'map', 'symbolic-map']

数据驱动动画

通过时间维度数据实现动态变化效果,例如人口流动轨迹动画。在 core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue 中配置动画参数:

<el-select v-model="state.basicStyleForm.heatMapType">
  <el-option label="Classic heatmap" value="heatmap"/>
  <el-option label="3D heatmap" value="heatmap3D"/>
</el-select>

性能优化与最佳实践

数据分片加载

对于包含大量坐标点的 3D 地图,建议采用分片加载策略。系统通过 core/core-frontend/src/views/chart/components/js/util.ts 中的缓存机制优化重复请求,同时在 core/core-frontend/src/views/chart/components/js/panel/charts/map/common.ts 中实现地图瓦片懒加载。

样式配置建议

场景推荐配置代码参考路径
夜间模式map_style: 'darkblue'locales/en.ts#L1904
省市级行政区划展示areaId: '100000'(全国)util.ts#L497
实时数据更新开启 autoFit 自动适配数据范围BasicStyleSelector.vue#L701

常见问题解决

地图加载空白

  1. 检查 GeoJSON 格式是否正确,可通过 mapFiles/156/156130133.json 验证结构
  2. 确认地图服务密钥配置,参考 core/core-frontend/src/views/chart/components/editor/editor-style/components/BasicStyleSelector.vue 中的 getMapKey 方法

3D 效果卡顿

export const filterChartDataByRange = (data, maxValue, minValue) => 
  data.filter(item => item.value == null || (item.value >= minValue && item.value <= maxValue))

总结

DataEase 提供了从数据准备、样式配置到动态交互的完整 3D 地图解决方案,通过本文介绍的 GeoJSON 加载、热力图配置和动画参数调节,可快速构建企业级数据大屏。更多高级功能可参考:

建议结合实际业务数据,通过「先静态后动态,先2D后3D」的迭代方式构建可视化大屏,平衡展示效果与系统性能。

【免费下载链接】dataease DataEase: 是一个开源的数据可视化分析工具,支持多种数据源以及丰富的图表类型。适合数据分析师和数据科学家快速创建数据可视化报表。 【免费下载链接】dataease 项目地址: https://gitcode.com/GitHub_Trending/da/dataease

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值