我为一堆位置设置了带有MKMapViewMKAnnotationView。我对服务器设置了异步请求,该服务器可以在任何给定时间返回屏幕上给定区域内的位置,并在用户拖动地图时发出另一个请求。

但是,引脚会落在已经存在的引脚上,而不是重复使用已经存在的引脚。我以为viewForAnnotation方法中的行:

MKPinAnnotationView *pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"Pin"];


if(pinView == nil)
{
    pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"] autorelease];
    [pinView setAnimatesDrop:YES];
}
else
{
    [pinView setAnnotation:annotation];
}

会照顾它,但事实并非如此。也许我误解了这些代码行的目的。

任何建议,不胜感激!显然,我不想在地图上添加多余的注释,因此不胜感激。

最佳答案

您将必须浏览地图上已经存在的注释,并确定服务器的引脚是否已经放置。如果您有唯一的ID,则可以使用该ID,也可以比较每个图钉的纬度和经度。

您编写的代码的目的是:创建视图非常昂贵,因此当不可见图钉时,其视图可以回收并重新用于其他注释。

关于iphone - iOS MKAnnotationView重复删除而不是重复使用图钉,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8998185/

10-14 20:53