當用戶放大到合理的水平時,我有一個包含大量註釋(3000+)的地圖視圖,一切都很好,很快。處理大量的MKMapView註解
雖然當用戶縮小和大量的註釋進入視野時,由於一次顯示大量註釋,導致大量減速。處理這個問題的最好方法是什麼?
目前的解決辦法,我使用:
- (void)mapView:(MKMapView *)_mapView regionDidChangeAnimated:(BOOL)animated {
NSArray *annotations = [_mapView annotations];
MapAnnotation *annotation = nil;
for (int i=0; i<[annotations count]; i++)
{
annotation = (MapAnnotation*)[annotations objectAtIndex:i];
if (_mapView.region.span.latitudeDelta > .010)
{
[[_mapView viewForAnnotation:annotation] setHidden:YES];
warningLabel.hidden = NO;
}
else {
[[_mapView viewForAnnotation:annotation] setHidden:NO];
warningLabel.hidden = YES;
}
}
}
偉大的作品雖然由於循環的龐大規模放大和縮小的時候和周圍滾動這會導致大量的放緩。我似乎無法想出一個更好的方法來處理這個問題,有沒有辦法只循環當前顯示的註釋或沿着這些行來減少循環的大小?
嘿donkim,我已經有dequeueReusableAnnotationViewWithIdentifier:到位,但我會研究其他技術,你建議嘗試讓所有的工作更快。這是一個恥辱annotationsInMapRect僅支持> 4.2,似乎它會解決我所有的麻煩 – Alex 2011-01-24 10:34:43
在我的經驗dequeueReusableAnnotationViewWithIdentifier永遠不會返回一箇舊的註釋。 – malhal 2012-06-29 02:14:09
annotationsInMapRect確實比自己計算座標的速度快。 – Skoua 2015-06-28 13:55:52