Hiren Patel
Hiren Patel

Reputation: 69

Rotate image in the direction of which user moving through compass methods of class CLLocationManagerDelegate

I want to move the bike / car in the direction of which, user moving through compass methods. For, that i have used didUpdateHeading method, but still i can't able to move the bike image in the user's direction.

<pre>
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString *AnnotationViewID = @"annotationViewID";
    annotationView = (MKAnnotationView *)[map dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
    if (annotationView == nil)
    {
        annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease];
    }    
    annotationView.image = [UIImage imageNamed:@"Bike.png"];
    return annotationView;
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    currentLocation = newLocation;
    previousLocation = oldLocation;
    if(currentLocation != nil)
    {
        if (myAnnotation)
        {
            [self.myMapView removeAnnotation:myAnnotation];
        }
        CLLocationCoordinate2D location = CLLocationCoordinate2DMake(currentLocation.coordinate.latitude, currentLocation.coordinate.longitude);
        myAnnotation = [[MyAnnotation alloc] initWithCoordinates:location title:@"Current Location" subTitle:nil];
        [self.myMapView addAnnotation:myAnnotation];
    }
}
- (void)locationManager:(CLLocationManager*)manager didUpdateHeading:(CLHeading*)newHeading {

    if (newHeading.headingAccuracy > 0) {
        float heading = -1.0f * M_PI * newHeading.magneticHeading / 180.0f;
        annotationView.transform = CGAffineTransformMakeRotation(heading);
    }
}
</pre>

Upvotes: 0

Views: 752

Answers (1)

Bhavesh Nayi
Bhavesh Nayi

Reputation: 3656

- (void)viewDidLoad
{
    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;

    [locationManager startUpdatingLocation];

    locationManager.headingFilter = kCLHeadingFilterNone;
    [locationManager startUpdatingHeading];

    [self.view bringSubviewToFront:_compass_image];


    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}


- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{

    double rotation = newHeading.magneticHeading * 3.14159 / 180;

    [_compass_image setTransform:CGAffineTransformMakeRotation(-rotation)];

}

Upvotes: 1

Related Questions