MKMapView在地图上加载成千上万的针脚

aza*_*arp 2 mkmapview ios

我需要在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)

Jan*_*ano 9

我使用mapView:regionDidChangeAnimated:.我通过纬度和经度从核心数据过滤中提取数据,以获取当前区域和周围环境的引脚,以便用户可以滚动一点而不会再次提取数据.

缩小时,您可以决定显示数据的聚类版本,您可以使用K-Means算法在运行时预先计算或计算.

如果您有大量数据来使用基于结构而不是对象的轻型数据结构,这可能会有所帮助.

添加和删​​除引脚时,您可能需要为淡入/淡出设置动画以平滑过渡.在屏幕上弹出一些东西是一种糟糕的用户体验.

如果所有这些都涉及服务器调用,则可以将调用封装在NSOperations中,以便在用户在地图中移动太快时取消旧调用.