2010-01-08 59 views
0

我正在嘗試「uncenter」地圖視圖並刪除所有註釋。原因是mapView將被不同的視圖控制器用來顯示不同的註釋和位置。現在發生的事情是,我正在使用「刪除註釋」方法,並刪除它們,但是地圖保持以當場爲中心,因此當新註釋進入時,它不會移動。有沒有辦法重置區域,如果是的話,我重置它的值是什麼。我試過零,零和一些計算值,但「核心動畫」說他們都是無效的。我如何獲得縮小和回到我的新註釋?Uncenter MkMapView

這裏是一些代碼

-(void)recenterMap { 

NSArray *coordinates = [_mapView valueForKeyPath:@"annotations.coordinate"]; 
CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f}; 
CLLocationCoordinate2D minCoord = {90.0f, 180.0f}; 

//NSLog(@"%@", [coordinates description]); 

for (NSValue *value in coordinates) { 
    CLLocationCoordinate2D coord = {0.0f, 0.0f}; 
    [value getValue: &coord]; 

    if(coord.longitude > maxCoord.longitude) { 
     maxCoord.longitude = coord.longitude; 
    } 

    if(coord.latitude > maxCoord.latitude){ 

     maxCoord.latitude = coord.latitude; 
    } 

    if(coord.longitude < minCoord.longitude){ 
     minCoord.longitude = coord.longitude; 
    } 

    if(coord.latitude < minCoord.latitude){ 
     minCoord.latitude = coord.latitude; 
    } 
} 


MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}}; 
region.center.longitude = (minCoord.longitude + maxCoord.longitude)/2.0; 
region.center.latitude = (minCoord.latitude + maxCoord.latitude)/2.0; 
region.span.longitudeDelta = maxCoord.longitude - minCoord.longitude; 
region.span.latitudeDelta = maxCoord.latitude - minCoord.latitude; 


[_mapView setRegion: region animated: YES]; 
} 

多數民衆贊成在recenter methos我使用

- (MKAnnotationView *)mapView: (MKMapView *)mapView viewForAnnotation: (id <MKAnnotation>)annotation{ 

MKAnnotationView *view = nil; 
if(annotation != mapView.userLocation){ 

    Annotation *schoolAnn = (Annotation*)annotation; 
    view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"schoolLoc"]; 
    if(nil == view){ 
     view = [[[MKPinAnnotationView alloc] initWithAnnotation:schoolAnn  reuseIdentifier:@"schoolLoc"]autorelease]; 
    } 

    [(MKPinAnnotationView *)view setAnimatesDrop:YES]; 
    [view setCanShowCallout:YES]; 

} 
else { 
    [self recenterMap]; 
} 

return view; 
} 

這個「別人」一塊等待,直到藍色大理石下降則recenters地圖。我與那部分的問題是,當我回到以前的視圖控制器我刪除所有註釋,所以當我回來的用戶位置(出於某種原因)不會彈出回來。我如何得到這個流行早在?

在此先感謝球員

回答

0

拿到了第一部分,使得它僅通過調用一個函數我做了設定的區域後成爲對美國再次縮小。

-(void)unCenterMap{ 

MKCoordinateRegion region2 = {{0.0f, 0.0f}, {0.0f, 0.0f}}; 
region2.center.longitude = (-98.151855); //coordinate for approximately the center of the US 
region2.center.latitude = 39.402244; 
region2.span.longitudeDelta = 3.0; 
region2.span.latitudeDelta = 3.0; 


[_mapView setRegion: region2 animated: YES]; 

} 

第二部分仍然讓我感到困惑,我怎樣才能讓那個位置再次彈出?