是一种由六边形为主要元素构成的统计图表。它既是散点图的延伸,又兼具直方图(频数统计)和普通热力图(按值着色)的特征。 适用于大规模的数据集,可以将散点聚合起来,更好的反映数据的聚集情况、发现变量之间的关系。
构建属于自己的蜂窝热力图
//创建蜂窝热力图数据类BMKHexagonHeatMap *heatHexagonMap = [[BMKHexagonHeatMap alloc] init];//读取数据NSData *jsonData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"multPoints" ofType:@"json"]];NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];//创建热力图数据数组NSMutableArray *data = [NSMutableArray array];if (jsonData) {for (NSDictionary *dic in array) {//创建BMKHeatMapNodeBMKHexagonHeatMapNode *heapmapnode_test = [[BMKHexagonHeatMapNode alloc] init];CLLocationCoordinate2D coor;coor.latitude = [dic[@"lat"] doubleValue];coor.longitude = [dic[@"lng"] doubleValue];heapmapnode_test.pt = coor;//随机生成点强度heapmapnode_test.intensity = arc4random() % 900;//添加BMKHeatMapNode到数组[data addObject:heapmapnode_test];}}//将点数据赋值到热力图数据类heatHexagonMap.mData = data;heatHexagonMap.mRadius = 5000;heatHexagonMap.mMaxIntensity = 1800;heatHexagonMap.mGap = 100;heatHexagonMap.mHexagonType = BMKHexagonTypeVertexUp;BMKGradient *graident = [[BMKGradient alloc] initWithColors:@[[UIColor blueColor], [UIColor redColor], [UIColor greenColor]] startPoints:@[@0.08, @0.4, @1.0]];heatHexagonMap.mGradient = graident;//调用mapView中的方法根据热力图数据添加热力图[self.mapView addHexagonHeatMap:heatHexagonMap];
json数据样式示例:
[{"lng": 116.895579, "lat": 24.306521},{"lng": 113.951068, "lat": 22.772504},…{"lng": 110.00006, "lat": 40.603564},{"lng": 111.846788, "lat": 21.897821}]
运行程序
蜂窝热力图效果如下:
上一篇
下一篇
本篇文章对您是否有帮助?