How to zoom in and zoom out MKCircle in MKMapView on the same button click in ios?

386 views Asked by At

I am creating a MKMapView app where I want to provide a user with a facility of zooming MKCircle deep inside to see annotations and at the same moment if user wants to go back to the previous zoom level to see the circle,he just need to press the same button. I'm not getting how to toggle between the zoom levels?

//in the below code I have calculated the radius of mkcircle before putting it on mkmapview

- (IBAction)adjustCircle:(id)sender{
long radius=[self calculateRadius];
NSLog(@"draw circle of radius=%ld",radius);
//int meter = 1000;
MKCircle *circle= [[MKCircle alloc]init];
circle = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]) radius:radius];
[myMapView addOverlay:circle];

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]), 500, 500);
region.span.latitudeDelta  =[self getZoomLevel:circle];
region.span.longitudeDelta =[self getZoomLevel:circle];
[myMapView setRegion:region animated:YES];




-(int) getZoomLevel:(MKCircle*) circle {
zoomLevel = 11;

if(isShowLocPoints == YES){
    return 20;
}

if (circle != nil) {
double radius = [circle radius] + [circle radius] / 2;
double scale = radius / 500;
zoomLevel=(16 - log(scale) / log(2));
}
NSLog(@"zoom level=%d",zoomLevel);
return zoomLevel;

Thanks

1

There are 1 answers

2
Ezatu. On

you can property a BOOL value to mark iszoomed when the view did load, when user first click the button ,zoom in or zoom out, change the BOOL value, when click the button again, check the BOOL value, if true, zoom in ; if false, zoom out.