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