how to make mapview zoom to 5 mile radius of current location
Use the MKCoordinateRegionMakeWithDistance
function from MapKit.
Use a conversion function to convert miles to meters since MapKit uses meters.
float MilesToMeters(float miles) { // 1 mile is 1609.344 meters // source: http://www.google.com/search?q=1+mile+in+meters return 1609.344f * miles;}
Then in your code set the map region as (thanks to @DylanBettermann for pointing out that to get a radius of 5 miles, the distance needs to be doubled)
mapView.region = MKCoordinateRegionMakeWithDistance( centerCoordinate, MilesToMeters(10.0f), MilesToMeters(10.0f));
swift 4 version :
mapView.region = MKCoordinateRegion( center: centerCoordinate, latitudinalMeters: MilesToMeters(10.0f), longitudinalMeters: MilesToMeters(10.0f))
Use the following code when ever you want to zoom to 5 miles radius:
double miles = 5.0;double scalingFactor = ABS( (cos(2 * M_PI * newLocation.coordinate.latitude / 360.0) ));MKCoordinateSpan span; span.latitudeDelta = miles/69.0;span.longitudeDelta = miles/(scalingFactor * 69.0); MKCoordinateRegion region;region.span = span;region.center = newLocation.coordinate;[mapView setRegion:region animated:YES];
[self.theMapView setRegion:MKCoordinateRegionMake( [theConsumer.latLong.clLocation coordinate], MKCoordinateSpanMake( MAP_SPAN, MAP_SPAN )) animated:YES];
The parameters to MKCoordinateSpanMake
are in degrees, and 1 degree is approx 69 miles at the equator. Thus MAP_SPAN would be 5.0/69.0