2012-08-09 117 views
2

我想獲得一個自動顯示標註的註釋。 我已經設法做到了,但是當這樣做完成後,地圖由於某種原因放大了北冰洋的中間部分。 任何人都有一個想法,爲什麼會發生? 這裏是我當前的代碼:自動顯示MapKit註釋

- (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

這似乎如果showsUserLocation被打開的情況發生。

當地圖視圖添加用戶位置註釋視圖時,試圖選擇它(animated設置爲YES)會使地圖縮放至北極(原因不明)。

selectAnnotation通話設置animatedNO將避免放大到北極,但你最終可能會選擇的,而不是你的註釋用戶位置標註。

請開啓showsUserLocation關閉,或者在didAddAnnotationViews,遍歷數組views,直到你找到一個註釋,不是用戶的位置:

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

非常感謝您!沒想到用戶位置點也是註釋。 – user1588740 2012-08-10 01:00:56