3

我目前有一张显示用户当前位置的地图,还有几个注释标记(我还没有把它们放在一个数组中,但很快就会)。我试图让我的 iphone 应用程序在用户到达某些位置时触发警报。我怎么做?这就是我现在所拥有的...

视图控制器.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

视图控制器.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
4

1 回答 1

0

您想寻找区域监控。检查文档以获取-[CLLocationManager startMonitoringForRegion:].

于 2015-04-20T21:34:51.143 回答