Zooming out to fit all annotations in MapKit

Posted by Krismutt on Stack Overflow See other posts from Stack Overflow or by Krismutt
Published on 2010-12-21T17:27:26Z Indexed on 2010/12/21 18:54 UTC
Read the original article Hit count: 348

Hey everybody!! I wanna zoom out so that all my annotations(my location and one more annotation) fit to the screen...what do I do wrong?? I get the following warning: "'getDistanceFrom:' is deprecated"....

-(void)viewDidLoad {
    [super viewDidLoad];

    mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
    mapView.showsUserLocation = TRUE;
    mapView.delegate = self;
    mapView.mapType = MKMapTypeStandard;
    mapView.zoomEnabled = YES;
    mapView.scrollEnabled = YES;
    mapView.userInteractionEnabled = YES;

    [mapView.userLocation setTitle:@"Nuvarande plats"];
    [mapView.userLocation setSubtitle:@"Du är här"];

    [self.view insertSubview:mapView atIndex:0];

    self.locationManager = [[[CLLocationManager alloc] init] autorelease];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    [locationManager startUpdatingLocation];
    [mapView release];
}

-(void) locationManager: (CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    NSLog (@"Position uppdateras" );

    location = newLocation.coordinate;

    if (friZoom) {
        MKCoordinateRegion region;
        region.center.latitude = location.latitude;
        region.center.longitude= location.longitude;

        MKCoordinateSpan span;
        span.latitudeDelta = 0.01;
        span.longitudeDelta = 0.01;
        region.span = span;

        [mapView setRegion:region animated:TRUE];}
}


- (MKAnnotationView *)mapView:(MKMapView *)mapview 
            viewForAnnotation:(id <MKAnnotation>)knappnal
{
    if ([knappnal isKindOfClass:MKUserLocation.class]) 
    {
        return nil;
    }

    MKPinAnnotationView *knappnalView = (MKPinAnnotationView*)[mapview dequeueReusableAnnotationViewWithIdentifier:@"annot"];
    if (!knappnalView)
    {
        knappnalView = [[[MKPinAnnotationView alloc] initWithAnnotation:knappnal reuseIdentifier:@"annot"] autorelease];
        knappnalView.pinColor = MKPinAnnotationColorRed;
        knappnalView.animatesDrop = YES;
        knappnalView.canShowCallout = YES;

    }
    else {
        knappnalView.annotation = knappnal;
    }

    return knappnalView;
}   


- (IBAction)storeLocationInfo:(id) sender{

    SparaPosition *position=[[SparaPosition alloc] initWithCoordinate:location];
    [mapView addAnnotation:position];
    savedPosition = location;
}


- (IBAction)visaPosition:(id)sender{

 CLLocationCoordinate2D southWest =location;
        CLLocationCoordinate2D northEast =savedPosition;

        southWest.latitude = MIN(southWest.latitude, location.latitude);
        southWest.longitude = MIN(southWest.longitude, location.longitude);

        northEast.latitude = MAX(northEast.latitude, savedPosition.latitude);
        northEast.longitude = MAX(northEast.longitude, savedPosition.longitude);

        CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
        CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];

        CLLocationDistance meters = [locSouthWest getDistanceFrom:locNorthEast];

        MKCoordinateRegion region;
        region.center.latitude = (southWest.latitude + northEast.latitude) / 2.0;
        region.center.longitude = (southWest.longitude + northEast.longitude) / 2.0;
        region.span.latitudeDelta = meters / 111319.5;
        region.span.longitudeDelta = 0.0;

       region = [mapView regionThatFits:region];
        [mapView setRegion:region animated:YES];

        [locSouthWest release];
        [locNorthEast release]; 
}

Would really appreciate an answer!

© Stack Overflow or respective owner

Related posts about iphone

Related posts about mapkit