1

我有一个关于位置的问题。

我需要在 iOS 5.1 和 iOS 6 上获取经纬度位置。

但是我在 didUpdateLocations 和 didUpdateToLocation 函数中编写了 NSLog。

我没有在控制台中看到日志显示。

我正在使用模拟设置位置。我测试纬度值为25.317973,经度值为121.538161(D1)。

然后我的测试值为( 25.917973, 121.538161 )(D2)。

D1和D2距离大于10米;

但我从未在控制台中看到日志显示。

我在下面附上我的代码:

我的 .h 文件

#mport <GoogleMaps/GoogleMaps.h>
#import <CoreLocation/CoreLocation.h>
#import <Corelocation/CLLocationManagerDelegate.h> 

@interface LocationMapViewController : AbstractViewController<     CLLocationManagerDelegate, GMSMapViewDelegate >
@property (strong, nonatomic) CLLocationManager *locationManager;
@end

我的 .m 文件

   - (void)viewDidLoad
       {
           [super viewDidLoad];

 if( _locationManager == nil )
    {
        _locationManager =  [CLLocationManager new];
        _locationManager.delegate = self;

        _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        _locationManager.distanceFilter = 10.0f;
        [_locationManager startUpdatingHeading];

    }

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray     *)locations
{
    NSLog(@"==latitude %f, longitude %f", [[locations objectAtIndex:([locations     count]-1)] coordinate].latitude , [[locations objectAtIndex:([locations count]-1)]     coordinate].longitude);
}

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation     *)newLocation fromLocation:(CLLocation *)oldLocation
{
     NSLog(@"====latitude %f, longitude %f", newLocation.coordinate.latitude,     newLocation.coordinate.longitude);
}

有人知道我的代码有什么问题吗?

非常感谢您

4

1 回答 1

1

您不必CLLocationManagerDelegate在 .h 和 AFAIK 中导入,我认为CoreLocation也没有使用 Google Maps,因此除非您使用 Google Maps API 或其他东西,否则也不需要导入 GoogleMaps。

尝试在您的方法中使用它:

- (void)viewDidLoad
{
    [super viewDidLoad];

    if( _locationManager == nil )
    {
       _locationManager = [[CLLocationManager alloc] init];
       _locationManager.delegate = self;
       _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

       [_locationManager startUpdatingLocation];
    }
}

编辑:

我意识到你正试图获得距离的差异。所以也许只是改变你的

_locationManager = [CLLocationManager new];

_locationManager = [[CLLocationManager alloc] init];

那应该可以解决问题。

根据您的评论,我检查了更多,并意识到您正在使用startUpdatingHeading方法调用,因此您应该使用didUpdateHeading委托方法。这是来自AppleCLLocationManager参考:

标题事件被传递到你的委托的 locationManager:didUpdateHeading: 方法。如果出现错误,位置管理器会调用您的委托的 locationManager:didFailWithError: 方法。

希望这可以帮助!:)

于 2013-10-23T09:31:46.010 回答