DTMHeatmap 1.0

DTMHeatmap 1.0

测试测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年4月

Bryan Oltman 维护。



为 iOS 实现的 heatmap,作为 MKOverlay 实现,以实现与 MapKit 的无缝集成。

本项目基于 https://github.com/ryanolsonk/HeatMapDemo。经过更新以提高性能并添加 "diff" 模式。《a href="https://github.com/gpolak/LFHeatMap">https://github.com/gpolak/LFHeatMap 也有所参考。

模式

标准

该模式是一个标准heatmap,应该会产生与原始 HeatMapDemo 项目相同的结果,但速度更快。

Diff

该模式比较两组数据,以可视化哪些区域“变热”了,哪些区域“变冷”了。增加的活动以温暖的颜色显示,减少的活动以冷色显示。

安装

获取 DTMHeatmap 的最简单方法是使用 Cocoapods

pod 'DTMHeatmap'

使用方法

使用 DTMHeatmap 相对简单。按照上述说明安装后

  1. 将您的地图视图注册为代理
  2. 创建一个 DTMHeatmap 实例
  3. 以字典的形式提供数据,将 MKMapPoint(使用 [NSValue value:&point withObjCType:@encode(MKMapPoint)] 包装)映射到权重
  4. 将热图添加到您的地图视图重叠层。

在最简单的形式中,代码看起来像这样

- (void)viewDidLoad
{
    self.mapView.delegate = self;

    // Create DTMHeatmap
    self.heatmap = [DTMHeatmap new];
    [self.heatmap setData:myData];
    [self.mapView addOverlay:self.heatmap];

    // or...
    // Create DTMDiffHeatmap
    self.diffHeatmap = [DTMDiffHeatmap new];
    [self.diffHeatmap setBeforeData:beforeData
                          afterData:afterData];
    [self.mapView addOverlay:self.diffHeatmap];
}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView
            rendererForOverlay:(id<MKOverlay>)overlay
{
    return [[DTMHeatmapRenderer alloc] initWithOverlay:overlay];
}

如您所见,标准热图 API 和 diff 热图的 API 之间的唯一区别在于差分热图需要两组数据 - 之前和之后。

示例项目

为了演示基本使用,提供了一个示例项目(DTMHeatmapExample)。目前有四种可视化选项

  • 标准:显示作为常规heatmap的美国麦当劳位置
  • 第一周:显示 2006 年 1 月第一周的萨克拉门托犯罪数据作为常规heatmap
  • 第三周:显示 2006 年 1 月第三周的萨克拉门托犯罪数据作为常规heatmap
  • Diff:比较第三周和第一周的数据作为 diff heatmap。如预期的那样,差异相当随机。如果您能推荐更好的数据集,请告诉我 :)

数据源

麦当劳位置

萨克拉门托犯罪数据