取消MkMapView

时间:2010-01-08 12:03:38

标签: iphone objective-c annotations mapkit

我正试图“取消”地图视图并删除所有注释。原因是不同的视图控制器将使用mapView来显示不同的注释和位置。现在发生的事情是我正在使用“删除注释”方法并删除它们,但是地图保持在现场的中心,因此当新注释进入时,它不会移动。有没有办法重置该区域,如果是这样,我将其重置为什么值。我尝试了零,零和一些计算值,但“核心动画”说它们都是无效的。我怎样才能缩小并重新输入我的新注释?

这是一些代码

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

这就是我正在使用的重新定位方法

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

这件“其他”作品等到蓝色大理石落入然后重新定位地图。我对该部分的问题是,当我回到之前的View Controller时,我删除了所有注释,所以当我回到User位置(由于某种原因)不会弹回。如何让它弹出回来了?

先谢谢你们

1 个答案:

答案 0 :(得分: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];

}

第二部分仍然让我感到困惑,我如何让这个位置再次出现?