0

我基本上是从这个 CoreLocation iOS 教程开始的,以了解如何在我的应用程序中实现 CoreLocation。(http://www.techotopia.com/index.php/An_Example_iOS_5_iPhone_Location_Application

但是我在尝试将本教程合并到我的应用程序时遇到的是,它现在只是一遍又一遍地循环,这让我感到困惑。有人可以帮忙吗?

GPSViewController.h

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

@interface GPSViewController : UIViewController
@property (strong, nonatomic) CLLocationManager *locationManager;
@property (strong, nonatomic) CLLocation *startLocation;
@end

GPSViewController.m

#import "GPSViewController.h"

#import "DataClass.h"

@interface GPSViewController ()

@end

@implementation GPSViewController
@synthesize locationManager, startLocation;

DataClass *obj;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //initialization og global varable.
    DataClass *obj=[DataClass getInstance];

    //GPS Initialise
    self.locationManager = [[CLLocationManager alloc] init];
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.delegate = self;
    [locationManager startUpdatingLocation];
    startLocation = nil;

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark -
#pragma mark CLLocationManagerDelegate

-(void)locationManager:(CLLocationManager *)manager
   didUpdateToLocation:(CLLocation *)newLocation
          fromLocation:(CLLocation *)oldLocation
{
    NSString *currentLatitude = [[NSString alloc]
                                 initWithFormat:@"%g",
                                 newLocation.coordinate.latitude];
    //latitude.text = currentLatitude;
    obj.Latatude = currentLatitude;

    NSString *currentLongitude = [[NSString alloc]
                                  initWithFormat:@"%g",
                                  newLocation.coordinate.longitude];
    //longitude.text = currentLongitude;
    obj.Longitude = currentLongitude;

    NSLog(@"latitude %+.6f, longitude %+.6f\n",
          newLocation.coordinate.latitude,
          newLocation.coordinate.longitude);

    if(obj.Latatude != NULL && obj.Longitude != NULL){
        [self performSegueWithIdentifier:@"GPSSuccess" sender:self];
    }
}

-(void)locationManager:(CLLocationManager *)manager
      didFailWithError:(NSError *)error
{
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.startLocation = nil;
    self.locationManager = nil;
}


@end
4

1 回答 1

3

您应该调用[locationManager stopUpdatingLocation];以阻止它一遍又一遍地获取用户的位置。

于 2013-01-24T04:32:03.143 回答