skinnypinny
skinnypinny

Reputation: 61

How to trigger alert when iphone reaches a certain location?

I've currently got a map that shows the user's current location and also has a couple of annotation markers (I have yet to put them in an array but will soon). I'm trying to get my iphone app to trigger an alert when the user reaches certain locations. How do I do that? Here's what I have right now...

ViewController.h

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

@interface ViewController : UIViewController <CLLocationManagerDelegate, MKMapViewDelegate>
{
    CLLocationManager *locationManager;
    IBOutlet MKMapView *worldView;


}
@end

view controller.m

#import "ViewController.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [worldView setShowsUserLocation:YES];    

}


- (void)mapView:(MKMapView *)mapView
didUpdateUserLocation:(MKUserLocation *)userLocation
{

    CLLocationCoordinate2D loc = [userLocation coordinate];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250);
    [worldView setRegion:region animated:YES];  

    MKCoordinateRegion pin = { {0.0, 0.0 }, {0.0, 0.0 } };
    pin.center.latitude = 53.363581;
    pin.center.longitude = -6.258183;
    pin.span.longitudeDelta = 0.01f;
    pin.span.latitudeDelta = 0.01f;
    [worldView setRegion:pin animated:YES];

    MapAnnotation *stage1 = [[MapAnnotation alloc] init];
    stage1.title = @"Quinn's";
    stage1.coordinate = pin.center;
    [worldView addAnnotation:stage1];

    MKCoordinateRegion pin2 = { {0.0, 0.0 }, {0.0, 0.0 } };
    pin2.center.latitude = 53.364678;
    pin2.center.longitude = -6.263009;
    pin2.span.longitudeDelta = 0.01f;
    pin2.span.latitudeDelta = 0.01f;
    [worldView setRegion:pin2 animated:YES];

    MapAnnotation *stage2 = [[MapAnnotation alloc] init];
    stage2.title = @"Neighbour";
    stage2.coordinate = pin2.center;
    [worldView addAnnotation:stage2];
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        // Create location manager object
        locationManager = [[CLLocationManager alloc] init];

        // Setting Delegate as AnotherMapFirstViewController
        [locationManager setDelegate:self];

        // And we want it to be as accurate as possible
        // regardless of how much time/power it takes
        [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

            self.title = NSLocalizedString(@"First", @"First");
            self.tabBarItem.image = [UIImage imageNamed:@"first"];


    }

    return self;
}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"%@", newLocation);
}

- (void)locationManager:(CLLocationManager *)manager
       didFailWithError:(NSError *)error
{
    NSLog(@"Could not find location: %@", error);
}


- (void)dealloc
{
    // Tell the location manager to stop sending us messages
    [locationManager setDelegate:nil];
}


@end

Upvotes: 3

Views: 732

Answers (1)

Ortwin Gentz
Ortwin Gentz

Reputation: 54101

You want to look for region monitoring. Check the documentation for -[CLLocationManager startMonitoringForRegion:].

Upvotes: 0

Related Questions