【问题标题】:Display MapKit annotation automatically自动显示 MapKit 注释
【发布时间】:2012-08-09 21:14:04
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c mapkit mkannotation ios5


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 非常感谢!没想到用户位置点也是注解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多