You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Google Map六边形(蜂窝状)热力图实现方案问询

如何在Google Map中构建六边形形状的热力图?

首先,常规Google Map热力图的实现代码如下:

val heatMapProvider = HeatmapTileProvider.Builder()
                    .weightedData(heatMapList)
                    .radius(50)
                    .build()
mGoogleMap?.addTileOverlay(TileOverlayOptions().tileProvider(heatMapProvider))

其中heatMapList是WeightedLatLng类型的ArrayList,生成的常规热力图效果:
常规热力图效果

但需求是创建蜂窝状六边形热力图,效果如下:
六边形热力图效果

实现思路与步骤

1. 生成六边形网格

首先要在目标地图区域生成覆盖性的六边形网格,每个六边形对应一个独立地理区域:

  • 手动计算:基于经纬度的几何规则,六边形网格的奇数行与偶数行存在水平偏移,可根据地图边界范围,先计算所有六边形的中心坐标,再推导每个六边形的六个顶点经纬度。
  • 借助工具库:使用Uber开源的H3六边形网格库,它能快速将地理范围转换为对应分辨率的六边形网格索引,还能直接获取每个六边形的边界顶点坐标,大幅简化网格生成工作。

2. 计算六边形权重值

根据业务数据(如区域内点位密度、事件发生次数等),统计每个六边形区域内的关联数据,计算出对应的权重值,以此决定六边形的颜色深浅。

3. 在地图上绘制六边形

通过Google Map的Polygon组件逐个绘制六边形:

  • 将每个六边形的顶点经纬度转换为LatLng数组,创建PolygonOptions对象,根据权重值设置填充颜色(映射到渐变色谱)、边框颜色及宽度。
  • 调用mGoogleMap?.addPolygon(polygonOptions)将六边形添加到地图中。

核心代码示例(基于H3库)

假设已集成H3库,核心逻辑如下:

// 1. 定义地图范围,获取该范围内的所有H3六边形索引
val bounds = LatLngBounds(LatLng(39.8, 116.2), LatLng(40.0, 116.5))
val hexIndexes = H3.polyfill(bounds.toGeoPolygon(), 12) // 12为H3分辨率,数值越大六边形越小

// 2. 遍历六边形,计算权重并绘制
hexIndexes.forEach { hexIndex ->
    // 获取六边形顶点坐标
    val vertices = H3.h3ToGeoBoundary(hexIndex).map { LatLng(it.lat, it.lng) }.toTypedArray()
    // 模拟权重计算(实际需结合业务数据统计)
    val weight = calculateWeightForHex(hexIndex)
    // 根据权重映射渐变颜色
    val fillColor = getColorFromWeight(weight)
    
    val polygonOptions = PolygonOptions()
        .addAll(vertices)
        .fillColor(fillColor)
        .strokeColor(Color.GRAY)
        .strokeWidth(1f)
    
    mGoogleMap?.addPolygon(polygonOptions)
}

关键注意事项

  • 性能优化:高分辨率下六边形数量极多,直接绘制会导致地图卡顿,建议根据地图缩放级别动态加载网格——缩放级别低时用大尺寸六边形,级别升高时切换为小尺寸六边形。
  • 颜色映射:建立权重值到渐变色谱的对应关系,确保权重越高的区域颜色越醒目(如从浅蓝过渡到深红)。
  • 库集成:H3支持多平台(Android、iOS、Web等),可通过官方依赖快速引入,避免重复造轮子。

内容的提问来源于stack exchange,提问作者Suman Radhakrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:15:09