如何在Swift中使用magneticHeading?

时间:2015-01-06 08:26:32

标签: swift rotation imageview compass

我正在尝试制作一个简单的双脚导航器,使用箭头图像,旋转以指示持续刷新的方向。

使用magneticHeading我发现错误unexpectedly found nil while unwrapping an Optional value,也许我忘记了一些事情。

我如何才能正确使用磁性标题?

var northLatitude :CLLocationDegrees 
var latitude :CLLocationDegrees = 46.0
var longitude :CLLocationDegrees = 7.0


func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

    longitude = manager.location.coordinate.longitude
    latitude = manager.location.coordinate.latitude

    var buildingLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
    var regionOfInterest:MKCoordinateRegion = MKCoordinateRegionMake(buildingLocation, span)

    self.mapView.setRegion(regionOfInterest, animated: true)
    self.mapView.addAnnotation(buildingAnnotation)

    northLatitude = manager.heading.magneticHeading  //ERROR
}

1 个答案:

答案 0 :(得分:0)

您可以计算箭头指向的角度,然后使用图像视图的transform属性来改变方向。伪代码就是这样的。

func onPositionChange()
{
    UIView.animateWithDuration(1.0, animations:
        {
            var angle_in_degrees:CGFloat = 10 // Calculated Angle.
            var angle_in_radians = (angle_in_degrees * 3.1415) / 180.0
            self.imgView.transform = CGAffineTransformMakeRotation(angle_in_radians)
    })
}