0

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

如屏幕截图所示,一切看起来都很好。但是,有一个我不满意的小行为。加载包含 的视图或单元格时,MKMapView地图会立即出现,但在将注释添加到其中之前会有一小段延迟。我认为这是由于注释的工作方式(如UITableView)。

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

谢谢

iphone截图

4

3 回答 3

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 :)

于 2012-11-01T13:31:48.243 回答
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;
}
于 2012-11-01T08:56:06.013 回答
0

我没有如何测试它,但是 set 呢:

myPinView.animatesDrop = NO;

在您的 viewForAnnotation 委托中,因为默认设置为 YES 值。

于 2012-11-01T08:50:58.073 回答