MapKit example in iPhone

In this application we will see how to map display and how to point out any location using latitude and longitude.

In this application we will see how to map display and how to point out any location using latitude and longitude.

Step 1: Create a View base application using template. Give the application name “MapKitDisplay”.

Step 2: Xcode automatically creates the directory structure and adds essential frameworks to it. You can explore the directory structure to check out the content of the directory.

Step 3: Xpand classes and notice Interface Builder created the MapKitDisplayViewController class for you. Expand Resources and notice the template generated a separate nib, MapKitDisplay ViewController.xib, for the “ MapKitDisplay”.

Step 4: We need to add NSObject class in the project. Select Classes -> Add -> New File -> Cocoa Touch Class -> Objective C class -> select NSObject from the Subclass of. Give the file name “DisplayMap”.

Step 5: We have added two framework in the project. Select Frameworks -> Add -> Existing Frameworks -> Add CoreLocation.framework and MapKit.framework.

Step 6: In the MapKitDisplayViewController.h file, we have import MapKit framework, and define MKMapViewDelegate protocol in the file, also add Outlet with a pointer to the MkMapView class. So make the following changes in the file.

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

@class DisplayMap;

@interface MapKitDisplayViewController : UIViewController <MKMapViewDelegate> {
       
        IBOutlet MKMapView *mapView;
}
@property (nonatomic, retain) IBOutlet MKMapView *mapView;

Step 7: Double click the MapKitDisplayViewController.xib file and open it to the Interface Builder. First drag the MapView from the library and place it to the view window. Connect File’s Owner icon to the View icon and select view. Connect File’s Owner icon to the MKMapView and select mapView. Now save the MapKitDisplayViewController.xib file, close it and go back to the Xcode.

Step 8: Open the MapKitDisplayViewController.m file and make the following changes in the file:

- (void)viewDidLoad {
    [super viewDidLoad];
       
        [mapView setMapType:MKMapTypeStandard];
        [mapView setZoomEnabled:YES];
        [mapView setScrollEnabled:YES];
        MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } };
        region.center.latitude = 22.569722 ;
        region.center.longitude = 88.369722;
        region.span.longitudeDelta = 0.01f;
        region.span.latitudeDelta = 0.01f;
        [mapView setRegion:region animated:YES];
       
        [mapView setDelegate:self];
       
        DisplayMap *ann = [[DisplayMap alloc] init];
        ann.title = @" Kolkata";
        ann.subtitle = @"Mahatma Gandhi Road";
        ann.coordinate = region.center;
        [mapView addAnnotation:ann];
}

-(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:
 (id <MKAnnotation>)annotation {
        MKPinAnnotationView *pinView = nil;
        if(annotation != mapView.userLocation)
        {
                static NSString *defaultPinID = @"com.invasivecode.pin";
                pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
                if ( pinView == nil ) pinView = [[[MKPinAnnotationView alloc]
                                                                                  initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];

                pinView.pinColor = MKPinAnnotationColorRed;
                pinView.canShowCallout = YES;
                pinView.animatesDrop = YES;
                }
        else {
                [mapView.userLocation setTitle:@"I am here"];
        }
        return pinView;
}

We define here first, coordinate regions to zeros, Then we enter coordinates of our place that, Kolkata (Mahatma Gandhi Road), define the latitude and longitude of this place. We create an instantiate of DisplayView object and add it to our map. To do this, we add the delegate function that will display the annotations on to our map. We start by having DisplayView name a pointer we’ll call “ann.”

Step 8: In the DisplayView.h file , we have import and set CLLocation class reference to incorporate the geographical coordinates and altitude of our device. So make the following changes in the file.

#import <Foundation/Foundation.h>
#import <MapKit/MKAnnotation.h>

@interface DisplayMap : NSObject <MKAnnotation> {

        CLLocationCoordinate2D coordinate;
        NSString *title;
        NSString *subtitle;
}
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;

Step 9: Open the DisplayView.m file and make the following changes in the file:

#import "DisplayMap.h"

@implementation DisplayMap

@synthesize coordinate,title,subtitle;

-(void)dealloc{
        [title release];
        [super dealloc];
}

Step 10: Now compile and run the application on the simulator.

You can Download SourceCode from here MapKitDisplay

WP Greet Box icon
Hello there! If you are new here, you might want to subscribe to the RSS feed for updates on this topic, and free programming tips and tricks and source code            snippets.

13 Responses to “MapKit example in iPhone”

  1. prashanth says:

    hi…
    this is prashanth …and i have been started i phone development from last few months….i need some help for my app…
    i want to draw on already exited image in iphone ..and save back to same location ………can any one help me……

  2. Luke says:

    Thank you. This code was very helpful.

  3. GJ says:

    thanks for the tutorial.

    how would you display more than one annotation on a map. if you had a few different locations for example.

  4. Phuoc Linh says:

    Thanks!

  5. Warmup says:

    I’ve just dowloaded XCode v4
    Having some troubel to follow your example would it be possible to specify howto connect “STEP 7″ in xcode 4.

    I can get the map map up and running but it is not centering or showingen any annotations.

    -tnx for a cool site

  6. Warmup says:

    I’ve just dowloaded XCode v4
    Having some troubel to follow your example would it be possible to specify howto connect \"STEP 7\" in xcode 4.

    I can get the map map up and running but it is not centering or showingen any annotations.

    -tnx for a cool site

  7. Gautam says:

    Thanx , Tutorial is very useful !!!!

  8. Oriolus says:

    thanks you, this is very helpful!!!

  9. Ambo says:

    Help please, i did everything as it says and get error saying:
    receiver ‘DisplayMap’ is a forward class and corresponding @interface may not exist

    and wont build :S

    • Sushant says:

      Please checked

      #import “MapKitDisplayViewController.h”
      #import “DisplayMap.h” //is it import MapKitDisplayViewController.m file?

      next checked in DisplayMap.h file

      #import // Are you import this in the file?
      Just checked and let us know if you have any problem.

  10. Gary Benna says:

    Doesn’t work got these messages

    DisplayMap *ann = [[DisplayMap alloc] init]; Receiver ‘DisplayMap’ is a forward class and corresponding @interface may not exist.
    ann.title = @”Kolkata”; Request for member ‘title’ in something not a structure or union
    ann.subtitle = @”Mahatma Gandhi Road”; Request for member ’subtitle’ in something not a structure or union
    ann.coordinate = region.center; Request for member ‘coordinate’ in something not a structure or union
    [mapView addAnnotation:ann]; Type ‘DisplayMap *’ does not conform to the MKAnnotation protocol.

    I am using sdk 4.0 for iphone

    Any suggestions what to do to fix this.

    • Sushant says:

      Please checked

      You need to import DisplayMap.h file in the MapKitDisplayViewController.m file. It should be look like below:

      #import “MapKitDisplayViewController.h”
      #import “DisplayMap.h” //import this file.

      If you have still problem then let us know.

  11. Gary Benna says:

    Sorry about the multiple entriies it said invalid security code. Then I imported DisplayMap.h and everything works fine. Thanks gary

Leave a Reply

Security Code:

learn iphone programming

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Our Mobile Training Courses

EDUmobile.ORG offers the following 4 Mobile Training Courses. Our iPhone Training Course is very popular, with over 200 developers in training.

learn iphone programming
© 2010 EDUmobile.ORG