views:

412

answers:

2

When I debug code below, I see that span is changed by mapkit from what I have provided. span2 contains different numbers from what was provided. Why is this happening?

- (void) viewDidLoad
{
    [super viewDidLoad];

    CLLocationCoordinate2D loc;
    loc.latitude = self.atm.lat;
    loc.longitude = self.atm.lon;

    MKCoordinateSpan span1 = MKCoordinateSpanMake(0.05f, 0.05f);
    self.mapView.region = MKCoordinateRegionMake(loc, span1);
    // at this point numbers are not 0.05 anymore
    MKCoordinateSpan span2 = self.mapView.region.span;
// ... more code
}
A: 

Note that latitude and longitude change differently so square MapView will actually display region with different span values for its coordinates. This is likely to cause your mapview region to have span (slightly?) different from what you set.

In reference for MKMapView's region property there's somewhat relevant phrase:

Changing only the center coordinate of the region can still cause the span to change implicitly. This is due to the fact that the distances represented by a span change at different latitudes and longitudes and the map view may need to adjust the span to account for the new location.

Vladimir
Thanks for idea, I will check if that is the case.
Igor Romanov
A: 

A square MapView with identical values for the latitudinal and longitudinal span will almost always experience the change in span indicated above as longitudinal arc-length varies significantly as you move from the equator to either pole. As the latitude approaches +/-90, the longitudinal arc-length approaches 0.

In addition, however, identical span values will also change if the MapView region is not square (as the span only refers to the region actually visible at the time).

Rg