我使用CLLocationManager
来检测当前用户位置。那是我的代码:
- (void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
locationManager.delegate = self;
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[locationManager requestWhenInUseAuthorization];
}
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
curLocation = [locations lastObject];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude: curLocation.coordinate.latitude longitude: curLocation.coordinate.longitude zoom:currentZoom];
[mapView animateToCameraPosition:camera];
}
现在我正面临着奇怪的行为。我坐在办公室里,旁边还有我的设备,但是CLLocationManager
认为我在我周围+/- 1414.0米范围内随机移动,速度= -1,航线= -1 。我可以通过这些恒定的速度和过程来过滤所有这些“错误的动作”,但我不明白为什么它会像这样工作。任何想法都很受欢迎。
答案 0 :(得分:3)
假设"在+/- 1414.0m范围内随机移动"意味着"位置读数显示水平精度设置为1414.0":
您的设备无法获取GPS定位。这可能是因为办公楼内没有GPS。此外,您可能已关闭WiFi,因为WiFi上应该可以获得更好的水平精度 - 最高+/- 65米。
请记住,有3个位置读数来源:
当电池塔是唯一的光源时,通常会得到+/- 1414m
使用WiFi接入点,您可以获得高达65米的准确度 - 请注意,对于wifi三角测量工作,您需要a)启用WiFi无线电 - 扫描接入点,以及b)访问Apple接入点数据库 - 解析接入点到纬度/长度。如果存在瞬态连接或数据库服务器问题,您将无法使用WiFi AP三角测量。
当通过GPS获取位置读数时,您开始看到非负速度。
缩短它 - 可能你只需要离开办公室:o)