Report abuse

//YourViewController.h
@interface YourViewController : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate>{
    IBOutlet MKMapView *map;
    BOOL isLocating;

}
@end

//YourViewController.m
#import "YourViewController.h"
#import "MapPlaceMark.h"

@implementation YourViewController {


// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
    }
    return self;
}

- (void) viewDidLoad {
  [NSTimer scheduledTimerWithTimeInterval:60000 target:self selector:@selector(updateLocation) userInfo:nil repeats:YES];
}

- (void) updateLocation {

  isLocating = YES;
  CLLocationManager *locationManager=[[CLLocationManager alloc] init];
  locationManager.delegate=self;
  locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;
  if (![locationManager locationServicesEnabled])
  {
    //replace with alert
    [atextfield setText:@"Location Services Are Not Enabled"];
  }
  [locationManager startUpdatingLocation];

}


#pragma mark LocationMethods
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
  if(isLocating == YES){
    CLLocationCoordinate2D location = [newLocation coordinate];
    //One location is obtained.. just zoom to that location
    NSLog([NSString stringWithFormat:@"%f,%f", location.latitude, location.longitude]);
    MKCoordinateRegion region;
    region.center=location;
    //Set Zoom level using Span
    MKCoordinateSpan span;
    span.latitudeDelta=.090;
    span.longitudeDelta=.090;
    region.span=span;
    [map setRegion:region animated:TRUE];
                MapPlaceMark *placemark=[[MapPlaceMark alloc] initWithCoordinate:location];
    [map addAnnotation:placemark];
    [placemark release];
    isLocating = NO;
  }  


}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
  [atextfield setText:@"Location search failed"];
}


- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation

{
    static NSString *identifier = @"com.companyname.pin";

    MKAnnotationView *pin = [ mapView dequeueReusableAnnotationViewWithIdentifier:identifier ];
    if ( !pin )
    {
    if ( annotation == [map userLocation]) {
      pin = [ [ MKAnnotationView alloc ] initWithAnnotation:annotation reuseIdentifier:identifier ];
    }  
    else{  
    pin = [ [ MKAnnotationView alloc ] initWithAnnotation:annotation reuseIdentifier:identifier ];
    }
    }

    pin.annotation = annotation;

    return pin;
}


}

@end

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

@interface MapPlaceMark : NSObject <MKAnnotation> {
  CLLocationCoordinate2D coordinate;
  NSString *subTitle;
  NSString *Title;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (readwrite, retain) NSString *subTitle;
@property (readwrite, retain) NSString *Title;
-(id)initWithCoordinate:(CLLocationCoordinate2D) coordinate;
- (NSString *)subtitle;
- (NSString *)title;

@end


//MapPlaceMark.m
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface MapPlaceMark : NSObject <MKAnnotation> {
  CLLocationCoordinate2D coordinate;
  NSString *subTitle;
  NSString *Title;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (readwrite, retain) NSString *subTitle;
@property (readwrite, retain) NSString *Title;
-(id)initWithCoordinate:(CLLocationCoordinate2D) coordinate;
- (NSString *)subtitle;
- (NSString *)title;

@end