Why MKMapView region is different than requested?
        Posted  
        
            by Kamil
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Kamil
        
        
        
        Published on 2009-09-05T13:09:50Z
        Indexed on 
            2010/05/09
            20:08 UTC
        
        
        Read the original article
        Hit count: 399
        
Greetings!
I'm saving map region into user defaults when my iPhone app is closing like this:
MKCoordinateRegion region = mapView.region;
[[NSUserDefaults standardUserDefaults] setDouble:region.center.latitude forKey:@"map.location.center.latitude"];
[[NSUserDefaults standardUserDefaults] setDouble:region.center.longitude forKey:@"map.location.center.longitude"];
[[NSUserDefaults standardUserDefaults] setDouble:region.span.latitudeDelta forKey:@"map.location.span.latitude"];
[[NSUserDefaults standardUserDefaults] setDouble:region.span.longitudeDelta forKey:@"map.location.span.longitude"];
When app launches again, i read those values back the same way, so that the user can see exactly the same map view as it was last time:
MKCoordinateRegion region;
region.center.latitude  = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.center.latitude"];
region.center.longitude = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.center.longitude"];
region.span.latitudeDelta  = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.span.latitude"];
region.span.longitudeDelta = [[NSUserDefaults standardUserDefaults] doubleForKey:@"map.location.span.longitude"];
NSLog([NSString stringWithFormat:@"Region read  : %f %f %f %f", region.center.latitude, region.center.longitude, region.span.latitudeDelta, region.span.longitudeDelta]);
[mapView setRegion:region];
NSLog([NSString stringWithFormat:@"Region on map: %f %f %f %f", mapView.region.center.latitude, mapView.region.center.longitude, mapView.region.span.latitudeDelta, mapView.region.span.longitudeDelta]);
The region I read from user defaults is (not surprisingly) exactly the same as when it was saved. Notice that what is saved comes directly from the map, so it's not transformed in any way. I set it back on map with setRegion: method, but then it is different!
Example results:
Region read  : 50.241110 8.891555 0.035683 0.042915
Region on map: 50.241057 8.891544 0.050499 0.054932
Does anybody know why this happens?
© Stack Overflow or respective owner