2

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

- (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];
}
4

1 回答 1

1

showsUserLocation如果打开, 这似乎会发生。

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

在通话中设置animated为将避免缩放到北极,但您最终可能会选择用户位置注释而不是您的注释。NOselectAnnotation

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

for (MKAnnotationView *av in views) {
    id <MKAnnotation> mp = [av annotation];
    if (![mp isKindOfClass:[MKUserLocation class]])
    {
        [mv selectAnnotation:mp animated:YES];
        break;
    }
}
于 2012-08-09T23:49:40.180 回答