2010-08-20 65 views
4

爲什麼不能正常工作?自動顯示MKAnnotation標註

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    if (TRACE_LOG) NSLog(@"%s", __FUNCTION__); 

    [mapView selectAnnotation:[views lastObject] animated:YES]; 

    return; 
} 

謝謝, Z @ K!

回答

7

因爲您必須選擇註釋對象,而不是與其對應的視圖。

我肯定100%沒有,但我認爲下面應該工作:

MKAnnotationView* annotationView = (MKAnnotationView*)[views lastObject]; 
[mapView selectAnnotation:annotationView.annotation animated:YES]; 

如果您保存您的註釋的地方,可能會更好,讓你直接從存儲需要註釋對象。請注意,只有當您嘗試選擇屏幕上當前可見的註釋時,所有這些方法纔會產生影響。

+0

你介意在那裏拋出一個代碼示例嗎? – Zak 2010-08-20 14:11:34

+0

任何簡單的方法來顯示多個註釋? – user1872384 2015-06-04 07:47:06

2

如果你只有一個註釋,這是最簡單的方法:

[mapView selectAnnotation:[mapView.annotations objectAtIndex:0] animated:true]; 

注意:如果你啓用了針掉在地上的動畫,這禁用它。基本上,它在添加到地圖視圖後立即選擇註釋,以便切斷動畫。

如果您想在選擇之前等待引腳放置動畫完成,請繼續使用它。首先,確保你的視圖控制器設置爲MKMapViewDelegate,然後:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:.7 target:self selector:@selector(pinDropped) userInfo:nil repeats:NO]; 

} 

- (void) pinDropped { 
    [mapView selectAnnotation:[mapView.annotations objectAtIndex:0] animated:true]; 
}