6

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

我已经将我的应用程序委托设置为实现 MKMapViewDelegate,我在我的 xib 中有一个到 MapView 的 Outlet,并将 MapView 的委托属性设置为 self,就像在应用程序委托实例中一样。我已经在应用程序委托中实现了 didAddAnnotationViews,我只需 NSLog 对它的任何调用,如下所示。该地图设置为显示它所做的当前位置,并在启动时添加蓝色引脚注释,但由于某种原因,didAddAnnotationViews 没有被点击。

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

有什么我可能错过的想法吗?

4

3 回答 3

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];
}
于 2011-03-12T19:33:56.993 回答
3

mapView:didAddAnnotations:仅在响应addAnnotation:or时调用addAnnotations:。用户位置 pin 不会触发此委托方法。

于 2011-01-29T23:13:46.920 回答
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];

于 2012-03-05T20:49:13.017 回答