0

我正在尝试编写一个简单的地理定位应用程序来查找用户在 iOS 中的位置。当用户按下按钮时,会找到并显示用户的位置,并且应该在触发 startUpdatingLocation 时发生变化。但是 startUpdatingLocation 没有被解雇。这是我的代码:

在我的 ViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface CGViewController : UIViewController<CLLocationManagerDelegate>
@property (strong, nonatomic) IBOutlet UITextField *nameField;
- (IBAction)butStart:(id)sender;
@property (strong, nonatomic) IBOutlet MKMapView *map;
@property (strong, nonatomic) CLLocationManager *locationManager;
@property (strong, nonatomic) IBOutlet UILabel *latitude;

@property (strong, nonatomic) IBOutlet UILabel *longitude;

@property (strong, nonatomic) IBOutlet UILabel *altitude;


@end

在我的 ViewController.m 中:

- (IBAction)butStart:(id)sender {
    self.locationManager=[[CLLocationManager alloc] init];
    if([CLLocationManager locationServicesEnabled]){
        self.locationManager.delegate=self;
        self.locationManager.distanceFilter=1;
        [self.locationManager startUpdatingLocation];
    }
}

(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(CLLocation     *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog( @"new location = %@", [newLocation description] );
    MKCoordinateSpan span;
    span.latitudeDelta = 0.2;
    span.longitudeDelta = 0.2;

    MKCoordinateRegion region;
    region.span = span;
    region.center = newLocation.coordinate;
        map.showsUserLocation = YES;
        self.latitude.text = [NSString stringWithFormat:@"%.3f",   newLocation.coordinate.latitude];
    self.longitude.text = [NSString stringWithFormat:@"%.3f", newLocation.coordinate.longitude];
     }    

我试图省略不必要的代码,比如我拥有的地图。我见过的每个示例都在 AppDelegate.h/.m 中设置了 locationManager 内容,而我试图在用户按下按钮时调用它。我不确定为什么它没有被调用。

4

2 回答 2

2

您使用的方法在 SDK 6 中已弃用。您应该改用以下方法:

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray *)locations;

如果您使用的是 iOS 6.0 及更高版本,您编写的方法可能不会被调用。

于 2013-08-01T04:32:29.810 回答
0

我还在我的项目中实现了您的代码,并且运行良好。

- 如果您第一次在模拟器中运行您的项目,则会出现位置服务允许和禁止消息,如果您允许,则调用此方法,请用此替换 yoyr 方法

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation

{

float currentLangitude = newLocation.coordinate.longitude;
float currentLatitude =  newLocation.coordinate.latitude;
NSLog( @"new location lat = %f long = %f", currentLangitude,currentLatitude );

}

谢谢。

于 2013-08-01T04:38:12.670 回答