获取有关didUpdateLocations的位置,didUpdateToLocation永远不会调用ios 5.1和ios6

时间:2013-10-23 09:14:07

标签: ios google-maps location

我对位置有疑问。

我需要获得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);
}

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

非常感谢

1 个答案:

答案 0 :(得分:1)

您不必在.h和AFAIK中导入CLLocationManagerDelegate我认为CoreLocation也没有使用Google地图,所以除非您使用的是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委托方法。这来自Apple CLLocationManager参考:

  

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

希望这有帮助! :)