绘制热力图 最后更新时间: 2021年01月22日
热力图功能提供将业务数据展示在地图上,可以给使用者直观描述一个区域的人员,车辆等事物的热度情况。
第一步,组织热力图数据
以下以本地模拟数据为例,简单说明 SDK 热力图需要的是经纬度点数组/列表数据。
示例代码如下:
//生成热力点坐标列表
LatLng[] latlngs = new LatLng[500];
double x = 39.904979;
double y = 116.40964;
for (int i = 0; i < 500; i++) {
double x_ = 0;
double y_ = 0;
x_ = Math.random() * 0.5 - 0.25;
y_ = Math.random() * 0.5 - 0.25;
latlngs[i] = new LatLng(x + x_, y + y_);
}
第二步,构建热力图 HeatmapTileProvider
HeatmapTileProvider 是生成热力图的核心类,一些基础用法可参考如下代码:
// 构建热力图 HeatmapTileProvider
HeatmapTileProvider.Builder builder = new HeatmapTileProvider.Builder();
builder.data(Arrays.asList(latlngs)) // 设置热力图绘制的数据
.gradient(ALT_HEATMAP_GRADIENT); // 设置热力图渐变,有默认值 DEFAULT_GRADIENT,可不设置该接口
// Gradient 的设置可见参考手册
// 构造热力图对象
HeatmapTileProvider heatmapTileProvider = builder.build();
第三步,绘制热力图图层
通过 TileOverlay 绘制热力图,方法如下:
// 初始化 TileOverlayOptions
TileOverlayOptions tileOverlayOptions = new TileOverlayOptions();
tileOverlayOptions.tileProvider(heatmapTileProvider); // 设置瓦片图层的提供者
// 向地图上添加 TileOverlayOptions 类对象
mAMap.addTileOverlay(tileOverlayOptions);
效果图如下: