我对位置有疑问。
我需要获得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);
}
有人知道我的代码有什么问题吗?
非常感谢
答案 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:代理方法。
希望这有帮助! :)