how to make mapview zoom to 5 mile radius of current location

纵然是瞬间 提交于 2019-12-29 11:35:09

问题


I know its a very common issue but I am not getting the exact answer for this thing.

How to make MKMapView defaults to a zoom of a 5 mile radius of current location.

Thanks in advance.


回答1:


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



回答2:


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)
)



回答3:


[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



来源:https://stackoverflow.com/questions/5025339/how-to-make-mapview-zoom-to-5-mile-radius-of-current-location

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!