MKMapView,预加载注释

时间:2012-11-01 08:40:08

标签: ios mkmapview mkannotation mkannotationview

在我的新ios应用程序的不同位置显示小MKMapView,其中滚动和用户交互被禁用。每个地图始终都有一个自定义注释。

如屏幕截图所示,一切都很顺利。但是,有一个我不满意的小行为。当加载包含MKMapView的视图或单元格时,地图会立即显示,但在添加注释之前会有一个小延迟。我认为这是由于注释的工作方式(如UITableView)。

因为我的地图将始终包含单个注释,所以有一种方法可以在地图实际出现在屏幕上之前强制将其预先加载到地图上。我不希望那个小的延迟真的很烦人,而MKMapView包含在滚动时重新加载的tableview单元格中。 欢迎任何其他想法。

由于

iphone screenshot

3 个答案:

答案 0 :(得分:0)

我没有如何测试它但是如何设置:

myPinView.animatesDrop = NO;
在viewForAnnotation委托中

,因为默认设置为YES值。

答案 1 :(得分:0)

我不知道你在代码中做了什么,但也许它可以帮助你。

- (MKAnnotationView *)mapView:(MKMapView *)mv viewForAnnotation:(id <MKAnnotation>)annotation
{
 MKPinAnnotationView* pv = (MKPinAnnotationView*)[mv dequeueReusableAnnotationViewWithIdentifier:reuse];
    if ( pv == nil )
    {
        pv = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuse] autorelease];   
        [pv setAnimatesDrop:YES]; // replace this line with the following line
        [pv setAnimatesDrop:NO];
    }

    [pv setAnnotation:annotation];

    return pv;
}

答案 2 :(得分:0)

为什么不在初始化期间将MapView设置为隐藏,然后在添加注释后,将触发此方法:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    // reveal map
    mapView.hidden = NO;

    // -----------------------------------------------------------------
    // ALTERNATIVE WAY TO SHOW MAP VIEW WITH SMOOTH FADE IN
    //
    // if you want you can even animate the fading in of the 
    // note: this means you need to remove the above line
    // and you also need to set mapView.alpha = 0 during initialsation
    // instead of using mapView.hidden = YES
    // -----------------------------------------------------------------
    [UIView animateWithDuration:0.5 animation:^{ 
        mapView.alpha = 1;
    }];
}

(参考:http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html#//apple_ref/occ/intfm/MKMapViewDelegate/mapView:didAddAnnotationViews:)