Получить текущее местоположение с помощью CLLocationCoordinate2D - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь получить текущее местоположение пользователя, используя CLLocationCoordinate2D. Я хочу значения в формате, как

CLLocationCoordinate2D start = {-28.078694,153.382844};

Чтобы я мог использовать их следующим образом:

 NSString *urlAddress = [NSString 
       stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",  
       start.latitude, start.longitude, 
       destination.latitude, destination.longitude];  

Я использовал

CLLocation *location = [[CLLocation alloc]init ];
CLLocationDegrees currentLatitude = location.coordinate.latitude;
CLLocationDegrees currentLongitude = location.coordinate.longitude;

чтобы получить текущие значения lat & long.

Но я получаю 0,000 за оба, когда пытаюсь проверить. Я тестирую на iPhone 4s.

Если есть какой-либо пример кода, это будет здорово.

Ответы [ 6 ]

15 голосов
/ 14 марта 2012

Сначала добавьте инфраструктуру CoreLocation, а затем используйте следующий код ... и ваш viewController должен реализовать CLLocationManagerDelegate

-(void)findCurrentLocation
{

    CLLocationManager *locationManager = [[CLLocationManager alloc] init];
    if ([locationManager locationServicesEnabled])
    {
        locationManager.delegate = self; 
        locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
        locationManager.distanceFilter = kCLDistanceFilterNone; 
        [locationManager startUpdatingLocation];
    }


    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];

    NSString *str=[[NSString alloc] initWithFormat:@" latitude:%f longitude:%f",coordinate.latitude,coordinate.longitude];
    NSLog(@"%@",str);


}
7 голосов
/ 14 марта 2012

в AppDelegate.h объявить следующую переменную.и внедрите

CLLocationManagerDelegate delegate.

CLLocationManager *locationManager;
CLLocation *currentLocation;

в файл AppDelegate.hm и напишите следующий код.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {       

    self.locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    self.currentLocation = newLocation;
    self.currentLat =  newLocation.coordinate.latitude; 
    self.currentLong =  newLocation.coordinate.longitude; 
}
2 голосов
/ 14 марта 2012

Вам нужно использовать CLLocationManager, чтобы получить местоположение пользователя.CLLocation - это только класс объектов, используемых для представления местоположений, он не может самостоятельно определять местоположение пользователя.

Для получения дополнительной информации и примера, пожалуйста, следуйте документации Apple по Программирование осведомленности о местоположении .

2 голосов
/ 14 марта 2012
CLLocationCoordinate2D location = [[[mapview userLocation] location] coordinate];  
NSLog(@"Location found from Map: %f %f",location.latitude,location.longitude);

, а также ссылку на ссылку (без mapview0

https://developer.apple.com/library/ios/#samplecode/LocateMe/Introduction/Intro.html

1 голос
/ 14 марта 2012

используйте менеджер местоположения, чтобы получить широту и длину, следуйте этому руководству для примера кода http://www.edumobile.org/iphone/miscellaneous/how-to-get-current-latitude-and-longitude-in-iphone/

0 голосов
/ 01 августа 2013
-(void)findCurrentLocation
{
    if ([CLLocationManager locationServicesEnabled])
    {
        CLLocationManager *locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        locationManager.distanceFilter = kCLDistanceFilterNone;
        [locationManager startUpdatingLocation];
    }
}

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    [self setLocation:[[manager location] coordinate]];
}
...