didAddAnnotationViews不适用于MKMapView

时间:2011-01-29 23:04:51

标签: objective-c ios mkmapview mkannotation

我一直在玩MKMapView并尝试了解MKMapViewDelegate系统的工作原理。到目前为止,我没有运气在添加当前位置标记时调用didAddAnnotationViews。

我已经设置了我的app委托来实现MKMapViewDelegate,我在我的xib中有一个Outlet到MapView并且已经将MapView的delegate属性设置为self,就像在app delegate实例中一样。我已经在app委托中实现了didAddAnnotationViews,我只是NSLog对它的任何调用,如下所示。地图设置为显示它所执行的当前位置,并在启动时添加蓝色图钉注释,但由于某种原因,未添加了addAddAnnotationViews。

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views{
    NSLog(@"Annotation added!");
}

我可能错过了哪些想法?

3 个答案:

答案 0 :(得分:5)

我在BNR遇到了同样的问题。以下是我最终使用的内容:

    // Tell MKMapView to zoom to current location when found
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    NSLog(@"didUpdateUserLocation just got called!");

    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([userLocation coordinate], 250, 250);
    [mapView setRegion:region animated:YES];
}

答案 1 :(得分:3)

mapView:didAddAnnotations:仅在回复addAnnotation:addAnnotations:时被调用。用户位置引脚不会触发此委托方法。

答案 2 :(得分:0)

只是想确认我能够使用

使其正常工作
 - (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id <MKAnnotation> mp = [annotationView annotation];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 250,250);
    [mv setRegion:region animated:YES];
}

确保您正在使用 mapView.delegate = self; 要么 [mapView setDelegate:self];