我需要在MKMapView上显示数千个引脚,我需要一个好的委托方法,我可以添加引脚.didUserUpdateLocation很糟糕,因为它被多次触发.向MKMapView添加数千个引脚的最佳方法是什么?
更新:
我只是使用BOOL检查一次加载引脚,它似乎工作得非常好!
-(void) mapView:(MKMapView *) mv didUpdateUserLocation:(MKUserLocation *)userLocation
{
NSLog(@"didUpdateUserLocation");
if(self.isMapped) return;
for(Facility *facility in self.facilities)
{
CLLocationCoordinate2D facilityCoord = { facility.latitude,facility.longitude };
MapPoint *mp = [[MapPoint alloc] initWithCoordinate:facilityCoord title:facility.facilityName];
[mv addAnnotation:mp];
}
self.isMapped = YES;
}
Run Code Online (Sandbox Code Playgroud)
我使用mapView:regionDidChangeAnimated:.我通过纬度和经度从核心数据过滤中提取数据,以获取当前区域和周围环境的引脚,以便用户可以滚动一点而不会再次提取数据.
缩小时,您可以决定显示数据的聚类版本,您可以使用K-Means算法在运行时预先计算或计算.
如果您有大量数据来使用基于结构而不是对象的轻型数据结构,这可能会有所帮助.
添加和删除引脚时,您可能需要为淡入/淡出设置动画以平滑过渡.在屏幕上弹出一些东西是一种糟糕的用户体验.
如果所有这些都涉及服务器调用,则可以将调用封装在NSOperations中,以便在用户在地图中移动太快时取消旧调用.
| 归档时间: |
|
| 查看次数: |
1359 次 |
| 最近记录: |