- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试获取设备的航向信息,以便使用磁航向和真实航向之间的差异来确定用户位置的磁偏角。为此,我有一个 Helper 类和我的 MainVc (mvc)。在我的助手类 init 方法中,我执行以下操作:
...
...
locationManager = CLLocationManager()
switch CLLocationManager.authorizationStatus() {
case .AuthorizedAlways:
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
case .NotDetermined:
locationManager.requestAlwaysAuthorization()
case .AuthorizedWhenInUse, .Restricted, .Denied:
mvc.alertDenied();
}
if (!initialized)
{
initialized = true;
self.performSelector("finishUpdatingLocation", withObject: nil, afterDelay: 2.0);
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print ("didUpdateLocations")
var userLocation:CLLocation = locations[0] as! CLLocation
longitude = Float(userLocation.coordinate.longitude);
latitude = Float(userLocation.coordinate.latitude);
}
func finishUpdatingLocation () {
locationManager.stopUpdatingLocation();
NSObject.cancelPreviousPerformRequestsWithTarget(self, selector: "finishUpdatingLocation", object: nil);
mvc.goingToUpdateHeading();
locationManager.startUpdatingHeading();
}
正在调用 didUpdateLocations,我正在成功获取设备的坐标。然而,尽管我添加了 didUpdateHeading,但它的第一行没有被打印,设备卡在了这一点:
func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
print("didUpdateHeading");
if (newHeading.headingAccuracy > 0) {
variation = newHeading.trueHeading - newHeading.magneticHeading;
doneLoading = true;
locationManager.stopUpdatingHeading();
mvc.goingToCalculateData();
if (calcData) {
calculateData();
print ("Calculating data");
calcData = false;
}
}
print(newHeading.magneticHeading)
}
为什么没有调用 startUpdatingHeading 有什么想法吗?
最佳答案
你必须像这样调用 locationManager.startUpdatingHeading()
...
...
locationManager = CLLocationManager()
switch CLLocationManager.authorizationStatus() {
case .AuthorizedAlways:
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
locationManager.startUpdatingHeading()
case .NotDetermined:
locationManager.requestAlwaysAuthorization()
case .AuthorizedWhenInUse, .Restricted, .Denied:
mvc.alertDenied();
}
关于swift - 没有 swift 调用 didUpdateHeading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834700/
Android 是否有 didUpdateHeading(来自 iOS)的等价物?是否有使用它旋转 map View 的示例代码? 搜索了很多,但找不到有用的提示。 提前致谢。 编辑:让我解释一下我的
我想用罗盘来更新航向。但是我的 didUpdateHeading 没有调用。我是 iOS 的新手。请帮助任何帮助将不胜感激。 @interface ViewController : UIViewCon
我正在尝试获取设备的航向信息,以便使用磁航向和真实航向之间的差异来确定用户位置的磁偏角。为此,我有一个 Helper 类和我的 MainVc (mvc)。在我的助手类 init 方法中,我执行以下操作
使用 XCode 版本 9.0 (9A235),但使用 Swift 3.x 我的应用程序在 iOS 10.x 上工作正常,调用的 didUpdateHeading 看起来不错,但在 iOS 11.x
我是一名优秀的程序员,十分优秀!