iOS 地理位置未更新
Posted
技术标签:
【中文标题】iOS 地理位置未更新【英文标题】:iOS Geolocation Not Updating 【发布时间】:2015-01-23 02:24:31 【问题描述】:使用 ios 8 并设置了 NSLocationAlwaysUsageDescription。
这是我的代码:
#import "GeoLocation.h"
#import "AppDelegate.h"
@implementation GeoLocation
- (id)init
self = [super init];
if (self)
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = 5; //in meters
// Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
[self.locationManager requestWhenInUseAuthorization];
self.numberOfUpdates = 0;
[self.locationManager startUpdatingLocation];
return self;
// Wait for location callbacks
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
NSLog(@"Location Updated: %@", [locations lastObject]);
- (float) getLatitude
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSLog(@"getLatitude: %f", self.locationManager.location.coordinate.latitude);
appDelegate.gMyProfile.latitude = self.locationManager.location.coordinate.latitude;
return self.locationManager.location.coordinate.latitude;
- (float) getLongitude
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSLog(@"getLongitude: %f", self.locationManager.location.coordinate.longitude);
appDelegate.gMyProfile.longitude = self.locationManager.location.coordinate.longitude;
return self.locationManager.location.coordinate.longitude;
- (float) getAltitude
return self.locationManager.location.altitude;
当用户登录时,我实例化一个 GeoLocation 对象,该对象开启后开始更新位置。
如果我使用 self.locationManager.distanceFilter = 5; 在我家附近走动,didUpdateLocations 不会触发。
但是,如果我摆脱 self.locationManager.distanceFilter = 5; didUpdateLocations 将每秒触发一次。
你们看到的我不是。当用户移动 5 米时,我希望它能够更新。
【问题讨论】:
你有打开wifi吗?尝试将其关闭。 【参考方案1】:添加距离过滤器很可能会导致 iOS 将水平精度考虑在内。
由于您在内部,因此您不太可能获得水平精度为 5 的位置,这是最佳精度。
如果没有距离过滤器,您可能只是在水平精度中获得相同的位置或距离内的另一个位置。
一般情况下,当您在室外可以清楚地看到您上方的卫星而不是靠近可以反射和遮挡信号的高楼时,您只能获得 5 米的精度。
【讨论】:
以上是关于iOS 地理位置未更新的主要内容,如果未能解决你的问题,请参考以下文章