Ios didUpdateLocations委托方法不';不要因为小距离的位置变化而被叫

Ios didUpdateLocations委托方法不';不要因为小距离的位置变化而被叫,ios,objective-c,ios7,mapkit,core-location,Ios,Objective C,Ios7,Mapkit,Core Location,我使用模拟器并改变位置来模拟设备的运动 我发现的问题是: 在下面的代码中,当我尝试打印纬度和经度值时,该值被四舍五入到6位小数(43.825885,-75.839785),而我在模拟器(调试->位置)中输入的原始值是43.82588498,-75.83978498。(对于这些初始值,将调用didUpdateLocations委托) 现在我输入的下一个位置是43.82499145,-75.84050195,我必须得到43.824991,-75.840502。但是这次没有调用didUpdateLoc

我使用模拟器并改变位置来模拟设备的运动

我发现的问题是:

在下面的代码中,当我尝试打印纬度和经度值时,该值被四舍五入到6位小数(43.825885,-75.839785),而我在模拟器(调试->位置)中输入的原始值是43.82588498,-75.83978498。(对于这些初始值,将调用didUpdateLocations委托)

现在我输入的下一个位置是43.82499145,-75.84050195,我必须得到43.824991,-75.840502。但是这次没有调用didUpdateLocations委托

但是当我现在给出43.82110323,-75.85291386(四舍五入到43.821103,-75.852914)时,这次调用了didUpdateLocation委托

  • (无效)locationManager:(CLLocationManager*)经理 didUpdateLocations:(NSArray*)位置 {

    }

以下是我的locationManager属性:

    _locationManager = [[CLLocationManager alloc] init];
    [_locationManager setDelegate:self];
    [_locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    [_locationManager setDistanceFilter:300];
    [_locationManager startUpdatingLocation];
    [_locationManager startUpdatingHeading];
这是我的mapView对象的设置:

    self.mainMapView.delegate=self;
    [self.mainMapView setShowsUserLocation:YES];
这种行为是因为操作系统正在舍入Lat/Lon值吗?或者是因为我在使用模拟器(我认为这不应该是问题,因为当我读到类似的问题时,人们提到,如果你模拟位置,那么不应该有任何问题)

我没有iOS设备。didUpdateLocation是否仍有可能在实际设备上正常工作


我无法找出这里的错误。我希望每次进行最轻微的位置更新时都调用didUpdateLocations委托。请引导我

尝试删除setDistanceFilter并让LocationManager使用默认设置(KCLDistanceFilterOne)。距离筛选器告诉您的位置管理器仅当设备移动了该数量或超过该数量时才调用didUpdateLocations。因此,在您的情况下,它将每300米更新一次位置

尝试删除setDistanceFilter并让LocationManager使用默认设置(KCLDistanceFilterOne)。距离筛选器告诉您的位置管理器仅当设备移动了该数量或超过该数量时才调用didUpdateLocations。因此,在您的情况下,它将每300米更新一次位置

尝试删除setDistanceFilter并让LocationManager使用默认设置(KCLDistanceFilterOne)。距离筛选器告诉您的位置管理器仅当设备移动了该数量或超过该数量时才调用didUpdateLocations。因此,在您的情况下,它将每300米更新一次位置

尝试删除setDistanceFilter并让LocationManager使用默认设置(KCLDistanceFilterOne)。距离筛选器告诉您的位置管理器仅当设备移动了该数量或超过该数量时才调用didUpdateLocations。因此,在您的情况下,它将每300米更新一次位置

您需要做的第一件事是将以下一个或两个键添加到Info.plist文件中: NSLocationWhenUse用途说明 N位置始终使用说明

接下来,在使用或后台时,您需要请求相应位置方法的授权。使用以下调用之一: [self.locationManager在未使用授权时请求] [self.locationManager请求始终授权]

//检查iOS 8 if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){ [self.locationManager在未使用授权时请求];
}

您需要做的第一件事是将以下一个或两个键添加到Info.plist文件中: NSLocationWhenUse用途说明 N位置始终使用说明

接下来,在使用或后台时,您需要请求相应位置方法的授权。使用以下调用之一: [self.locationManager在未使用授权时请求] [self.locationManager请求始终授权]

//检查iOS 8 if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){ [self.locationManager在未使用授权时请求];
}

您需要做的第一件事是将以下一个或两个键添加到Info.plist文件中: NSLocationWhenUse用途说明 N位置始终使用说明

接下来,在使用或后台时,您需要请求相应位置方法的授权。使用以下调用之一: [self.locationManager在未使用授权时请求] [self.locationManager请求始终授权]

//检查iOS 8 if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){ [self.locationManager在未使用授权时请求];
}

您需要做的第一件事是将以下一个或两个键添加到Info.plist文件中: NSLocationWhenUse用途说明 N位置始终使用说明

接下来,在使用或后台时,您需要请求相应位置方法的授权。使用以下调用之一: [self.locationManager在未使用授权时请求] [self.locationManager请求始终授权]

//检查iOS 8 if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){ [self.locationManager在未使用授权时请求]; }

    self.mainMapView.delegate=self;
    [self.mainMapView setShowsUserLocation:YES];