How to get center of an MKMapView map?

Haydn picture Haydn · Jul 2, 2010 · Viewed 15.1k times · Source

I have an MKMapView which allows the user to scroll the map around. Later, I want to get the latitude and longitude of the point at the center of the map, but can't find an easy way to do it. At the moment I'm trying something like:

CLLocationCoordinate2D centre = [locationMap convertPoint:locationMap.center toCoordinateFromView:locationMap];
txtLatitude.text = [NSString stringWithFormat:@"%f",centre.latitude];
txtLongitude.text = [NSString stringWithFormat:@"%f",centre.longitude];

But it's not working - both latitude and longitude both come out as zero. I'd be grateful for any ideas anyone might have!

==============

-- Update 1 --

Oh. If I add the:

NSLog(@"%@", locationMap);

line as suggested below, the log shows "(null)". I've got the following in my header (amongst other things):

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>

IBOutlet MKMapView *locationMap;

@property (nonatomic, retain) IBOutlet MKMapView *locationMap;

and the following in my methods file:

@synthesize locationMap;

This is compiling without any warnings or errors at present. Starting to wonder if I've missed something obvious?

Answer

deanWombourne picture deanWombourne · Jul 2, 2010

What about the centerCoordinate property?

i.e.

CLLocationCoordinate2D centre = [locationMap centerCoordinate];

If the centerCoordindate property is all 0, check that you've got a valid locationMap pointer - objective-c will let you send messages to nil without any errors!

Try NSLog(@"%@", locationMap); - if that outputs nil, you've probably forgotten to connect the mapLocation to a MKMapView in Interface Builder ;)