Ios MKMapView,预加载注释

Ios MKMapView,预加载注释,ios,mkmapview,mkannotation,mkannotationview,Ios,Mkmapview,Mkannotation,Mkannotationview,在我的新ios应用程序的不同位置,会显示小的MKMapView,其中滚动和用户交互被禁用。每个地图将始终具有一个自定义注释 如屏幕截图所示,一切看起来都很好。然而,有一个小的行为,我不满意。加载包含MKMapView的视图或单元格时,贴图会立即显示,但在添加注释之前会有一个小的延迟。我认为这是由于注释的工作方式(如UITableView) 因为我的地图总是包含一个注释,所以有没有办法在地图实际出现在屏幕上之前将其预先加载到地图上。当MKMapView包含在一个tableview单元格中时,滚动时

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

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

因为我的地图总是包含一个注释,所以有没有办法在地图实际出现在屏幕上之前将其预先加载到地图上。当
MKMapView
包含在一个tableview单元格中时,滚动时会重新加载,我不希望出现这种小的延迟,这真的很烦人。 任何其他想法都是受欢迎的

谢谢


我不知道如何测试它,但是set呢:

myPinView.animatesDrop = NO;

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

我不知道您在代码中到底做了什么,但它可能会帮助您

- (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;
}
-(MKAnnotationView*)地图视图:(MKMapView*)mv视图用于注释:(id)注释
{
MKPinAnnotationView*pv=(MKPinAnnotationView*)[mv dequeuereusableannotationview with identifier:reuse];
如果(pv==零)
{
pv=[[MKPinAnnotationView alloc]initWithAnnotation:annotation-reuseIdentifier:reuse]autorelease];
[pv setAnimatesDrop:YES];//将此行替换为以下行
[pv SetAnimateDrop:否];
}
[注释:注释];
返回pv;
}

为什么不在初始化过程中将地图视图设置为隐藏,然后在添加注释后,将触发此方法:

- (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;
    }];
}
(参考文献:)