OCMapView 0.1.0

OCMapView 0.1.0

测试测试
语言语言 Obj-CObjective C
许可证 自定义
发布最后发布2014年12月

Botond Kis维护。



OCMapView 0.1.0

  • 作者:
  • Botond Kis 和 Markus Emrich

什么是 OCMapView?

OpenClusterMapView 是 iOS 中 MKMapView 的一个简单易用的扩展。如果您需要在地图上显示很多标注,这个类就是为您设计的。

OCMapView 可以自动将标注组合成簇,速度非常快。它可以与任何 iOS 应用程序一起工作。

屏幕截图

Screenshots

背景

您可能已经遇到过这样的问题:当向 MKMapView 添加几百个标注时,它会变得卡顿,用户体验不佳。

许多开发者认为,由于 iDevice 内存容量有限,iOS 无法处理 MKMapView 上的大量标注。因此,他们开始使用一些相当简单的过滤方法来自己管理标注,这只会让用户更加困惑。

实际上,问题并不在于内存。这更多是由于 annotationViewsUIViews,这些视图执行非常缓慢。因此,如果您在带有许多标注的 MKMapView 上滚动/缩放,iOS 必须一次性重新绘制所有标注,这需要时间。

OCMapView 会将指定范围内的多个标注组合起来,并且作为簇中单个 annotationView 来显示。因此,您的应用将不会有太多的视图,从而不会导致应用运行缓慢和卡顿。此外,您根本不需要自己处理标注!只需将所有标注添加到您的 OCMapView 中,它将为您完成一切。即使是带有 iOS 3.1.x 的 iPhone 3G 也能够处理成千上万的标注而不会出现卡顿!

设置

OCMapView 会自动处理标注并将它们组合成 。只需将 OCMapView 文件夹添加到您的项目中,您就可以开始使用了。从 Interface Builder/Storyboard 中将您的 MapView 类从 MKMapView 更改为 OCMapView,或者像普通的 MKMapView 一样在代码中手动创建它。别忘了将 MapKitCoreLocation 框架链接到您的项目中,并在您正在工作的视图控制器中导入 OCMapView.h

示例项目是用 Xcode 4.1 生成的,用于 iOS +4.0

用法

就像普通的MKMapView一样使用它,添加您想显示的标注,并实现常用的MKMapViewDelegate方法。

处理MKAnnotationView的方式完全相同,因此您可以为您自己的标注和簇使用自定义视图。《viewForAnnotation》代理方法在生成聚合时将返回《OCAnnotation》对象。所以您可以为自定义视图提供

- (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id <MKAnnotation>)annotation{  
    // if it's a cluster  
    if ([annotation isKindOfClass:[OCAnnotation class]]) {  
        // create your custom cluster annotationView here!  
    }  
    // If it's a single annotation  
    else if([annotation isKindOfClass:[Your_Annotation class]]){  
        // create your custom annotationView  as regular here!  
    }  
    return Your_annotationView;  
}

您可以通过设置特定属性来自定义簇的行为。了解更多信息,请查看示例项目或文档

分组

您可以像上面的截图所示一样对不同的标注组进行分组

在您的标注类中实现《OCGrouping》协议,设置其分组标记,并将你的《OCMapView》的《clusterByGroupTag》属性设置为《true》。查看示例项目以了解其如何工作。

OCMapView提供

  • 一个用于同时处理地图上超过9000个标注的快速且易于使用的类。
  • 就像标准的MKMapView一样简单,易于安装和使用。
  • 易于升级!您可以保留所有您的MKMapView委托方法不变。
  • 就像常规MKAnnotation一样,您可以根据需要自定义生成的簇的《MKAnnotationViews》。
  • 2种不同的聚类算法。
  • 算法帮助函数是用C编写的,以最大限度地提高性能。
  • 可以像修改簇的大小这样的行为进行自定义。
  • 通过提供一个忽略注标记注列表,您可以在自己的管理簇。
  • 新的:通过使用分组创建独立的群体。

贡献

使用OCMapView的App

  • 官方Car2Go App
  • Car2Go的cost control,又名aCar2Go
  • AbHof
  • 还有更多,他们没有告诉我;)

如果您使用OCMapView并想做出贡献,请联系我,添加您的应用程序到支持的列表!

OpenClusterMapView Logo