O'Reilly logo

iOS 7 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

9.7. Converting Meaningful Addresses to Longitude and Latitude

Problem

You have an address of a location and you want to find the spatial location (longitude, latitude) of that address.

Solution

Use the geocodeAddressString:completionHandler: method of the CLGeocoder class.

Discussion

Reverse geocoding is the process of retrieving a meaningful address, city and country, and so on, using spatial locations (Longitude, Latitude). Geocoding, on the other hand, is the process of finding the spatial locations of a given address. Both geocoding and reverse geocoding facilities are encapsulated into the CLGeocoder class in the Core Location framework.

We geocode spatial locations by passing the address as NSString to the geocodeAddressString:completionHandler: method of the CLGeocoder class. The completionHandler parameter of this method accepts a block object that returns no value and has two parameters:

  1. A placemarks array (of type NSArray), which will be set to the locations that matched your search.

  2. An error (of type NSError), which will get set to an error code if the geocoding fails.

Let’s go ahead and declare a property of type CLGeocoder first:

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()
@property (nonatomic, strong) CLGeocoder *myGeocoder;
@end

@implementation ViewController

Now, let’s go ahead and implement the code to geocode an address:

- (void)viewDidLoad{
    [super viewDidLoad];

    /* We have our address */
    NSString *oreillyAddress =
        @"1005 Gravenstein ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required