我一直在玩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!");
}
我可能错过了哪些想法?
答案 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];