我有一个基于地图的应用程序,使用谷歌地图的iOS SDK。我需要在核心数据数据库中存储多达数千个项目,并在地图上显示标记。出于性能和可用性的原因,我需要在用户缩小时对这些标记进行聚类,但我需要确保放置代表性标记,以便用户知道放大的位置以查看更多细节。
我的核心数据模型中的每个条目都存储了纬度/经度双值。因此,我想要对项目进行聚类的是保留一个单独的实体,我在其中剥离地理坐标的不太重要的部分并在其中存储计数。
因此,每当在数据库中插入具有lat / lon {44.9382719,-130.20293849}的项目时,具有lat / lon {44.9,-130.2}的另一个“cluster”对象的count属性会递增。我的想法是,在低缩放(即缩小)时,我只会查询群集对象并将其放在地图上而不是实际的项目上。
我的问题是:根据NSManagedObject reference,您不应该在awakeFromInsert
中获取内容,因此如何确保插入一种托管对象更新a的值相应的另一种管理对象?
答案 0 :(得分:7)
我已经在Google Maps for iOS中搜索群集标记库三天了,最后我最终得到了这个https://github.com/googlemaps/google-maps-ios-utils,它运行良好且易于使用和理解。
答案 1 :(得分:1)
看一下routeMe,这是默认的
/** Whether the annotation should be clustered when map view clustering is enabled. Defaults to
是. */
@property (nonatomic, assign) BOOL clusteringEnabled;