Search code examples
iphoneobjective-cdirection

Find Direction in iphone like North or etc


I have one trouble in my app i want to know the direction to the Latitude and Longtitude from the current Lat & Long

-(void)showDirection
{
 CGFloat latitude = Lat;
 if (latitude < 0) {
    latitude = -latitude;
    strDirection = @"S";
 } else {
    strDirection = @"N";
 }
 // Longitude
 CGFloat longitude = Long;
 if (longitude < 0) {
    longitude = -longitude;
    strDirection = @"W";
 } else {
    strDirection = @"E";
 }
 NSLog(@"direc %@",strDirection);
}

Solution

  • try this code below:

    first add framework in your project CoreLocation.Framework after adding initialize CLLocationManager object and import CLLocationManager header file.

    Yourviewcontroller.h

    #import <CoreLocation/CoreLocation.h>
    @interface Yourviewcontroller :UIViewController <CLLocationManagerDelegate>
    {
          CLLocationManager *locationManager;
    } 
    

    Yourviewcontroller.m

    locationManager=[[CLLocationManager alloc] init];
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.delegate = self;
    //Start the compass updates.
    [locationManager startUpdatingHeading];
    

    add function for get current direction

    -(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
    {
        float mHeading = newHeading.magneticHeading;
        if ((mHeading >= 339) || (mHeading <= 22)) {
            //[direction setText:@"N"]; 
    
        }else if ((mHeading > 23) && (mHeading <= 68)) {
            //[direction setText:@"NE"];    
    
        }else if ((mHeading > 69) && (mHeading <= 113)) {
            //[direction setText:@"E"]; 
    
        }else if ((mHeading > 114) && (mHeading <= 158)) {
            //[direction setText:@"SE"];
    
        }else if ((mHeading > 159) && (mHeading <= 203)) {
            //[direction setText:@"S"]; 
    
        }else if ((mHeading > 204) && (mHeading <= 248)) {
            //[direction setText:@"SW"];    
    
        }else if ((mHeading > 249) && (mHeading <= 293)) {
           // [direction setText:@"W"];
    
        }else if ((mHeading > 294) && (mHeading <= 338)) {
           // [direction setText:@"NW"];
    
         }
    }
    

    Note :compass is work only real iphone device,not work in iphone simulator..!