自动显示MapKit注释

时间:2012-08-09 21:14:05

标签: objective-c mapkit mkannotation ios5

我正在尝试获取一个自动显示标注的注释。 我已经设法这样做了,但是当这样做时,由于某种原因,地图会放大到北冰洋中部。 任何人都知道为什么会这样? 这是我目前的代码:

- (void)viewDidLoad
{

    CLLocationCoordinate2D zoomLocation;
    zoomLocation.latitude = 59.*****;
    zoomLocation.longitude = 17.*****;
    MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation,  0.5 * METERS_PER_MILE, 0.5 * METERS_PER_MILE);
    MKCoordinateRegion adjustedRegion = [self.mapView regionThatFits:viewRegion];
    [self.mapView setRegion:adjustedRegion animated:YES];

    self.mapView.delegate = self;

    CLLocationCoordinate2D location = CLLocationCoordinate2DMake(59.*****, 17.*****);
    MapAnnotation *annotaion = [[MapAnnotation alloc] initWithCoordinates:location title:@"*****" subTitle:@"*****"];
    [self.mapView addAnnotation:annotation];
    [super viewDidLoad];
}

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id <MKAnnotation> mp = [annotationView annotation];
    [mv selectAnnotation:mp animated:YES];
}

1 个答案:

答案 0 :(得分:1)

如果启用了showsUserLocation,这似乎就会发生。

当地图视图添加用户位置注释视图时,尝试选择它(animated设置为YES)会使地图缩放到北极(原因不明)。

animated调用中将NO设置为selectAnnotation将避免缩放到北极,但最终可能会选择用户位置注释而不是注释。

关闭showsUserLocation或在didAddAnnotationViews中循环遍历views数组,直到找到不是用户位置的注释:

for (MKAnnotationView *av in views) {
    id <MKAnnotation> mp = [av annotation];
    if (![mp isKindOfClass:[MKUserLocation class]])
    {
        [mv selectAnnotation:mp animated:YES];
        break;
    }
}