gpt4 book ai didi

iphone - 处理 MKMapView 上的 MKAnnotations 时速度变慢

转载 作者:行者123 更新时间:2023-11-29 05:00:45 25 4
gpt4 key购买 nike

我正在逐步浏览 map 上的注释,以便找到具有特定标签的注释。然后,我删除此注释,并添加一个新注释(不同颜色)

问题是这需要非常非常长的时间。不知道为什么。它会处理 300 个注释,最多需要 20 秒!我怎样才能加快速度?例如,有没有办法只获取当前可见的注释?或者,如果我有注释,我可以知道它在 mapView.annotations 数组中的索引是什么,这样我就不必单步执行吗?

for (int i =0; i < [self.mapView.annotations count]; i++) 
{
if ([[self.mapView.annotations objectAtIndex:i] isKindOfClass:[BasicMapAnnotation class]] )
{
BasicMapAnnotation *bmaTemp =(BasicMapAnnotation*)[self.mapView.annotations objectAtIndex:i];
if (bmaTemp.mapTag == pinTag) {
[self.mapView removeAnnotation:[self.mapView.annotations objectAtIndex:i]];
self.customAnnotation = [[[BasicMapAnnotation alloc] initWithLatitude:[shop.latitude doubleValue] andLongitude:[shop.longitude doubleValue]] autorelease];
self.customAnnotation.mapTag = pinTag;
[self.mapView addAnnotation:self.customAnnotation];
}

}
}

最佳答案

如果您确定要修改的注释实际上是可见的,您可以使用类似的内容

for (id annotation in [self.mapView annotationsInMapRect:self.mapView.visibleMapRect]){
if([annotation isKindOfClass:[BasicMapAnnotation class]]){
BasicMapAnnotation *annotationToModify = annotation;
if (bmaTemp.mapTag == pinTag) {
[self.mapView removeAnnotation:annotationToModify];
self.customAnnotation = [[[BasicMapAnnotation alloc] initWithLatitude:[shop.latitude doubleValue] andLongitude:[shop.longitude doubleValue]] autorelease];
self.customAnnotation.mapTag = pinTag;
[self.mapView addAnnotation:self.customAnnotation];
}
}
}

如果您想知道单个给定注释的索引:

int annotationIndex = [self.mapView.annotations indexOfObject:givenAnnotation];

未经测试,我在这里写了这个所以请让我知道它是否有效。

关于iphone - 处理 MKMapView 上的 MKAnnotations 时速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com