8

我有一个基于地图的应用程序,使用 Google Maps 的 iOS SDK。我需要在核心数据数据库中存储多达数千个项目,并在地图上用标记显示它们。出于性能和可用性的原因,我需要在用户缩小时对这些标记进行聚类,但我需要确保放置有代表性的标记,以便用户知道在哪里放大以查看更多细节。

我的核心数据模型中的每个条目都存储了纬度/经度双精度值。因此,我想到的对项目进行聚类的方法是保留一个单独的实体,在其中我剥离地理坐标的不太重要的部分并在其中存储一个计数。

因此,每当将具有 lat/lon {44.9382719, -130.20293849} 的项目插入数据库时​​,另一个具有 lat/lon {44.9, -130.2} 的“集群”对象的计数属性就会增加。这个想法是,在低缩放(即缩小)时,我只会查询集群对象并将它们放在地图上而不是实际项目上。

我的问题是:根据NSManagedObject 参考,您不应该在其中获取东西awakeFromInsert,那么如何确保插入一种托管对象会更新另一种相应托管对象的值?

4

2 回答 2

8

我已经在 Google Maps for iOS 中搜索集群标记库三天了,最后我得到了这个https://github.com/googlemaps/google-maps-ios-utils,它工作得很好而且很容易使用和理解。

于 2014-08-04T07:13:10.347 回答
1

Have a look at routeMe, this comes default

/** Whether the annotation should be clustered when map view clustering is enabled. Defaults toYES. */ @property (nonatomic, assign) BOOL clusteringEnabled;

于 2013-11-14T18:06:28.673 回答