как узнать текущее местоположение по широте и долготе в цели c - PullRequest
6 голосов
/ 25 января 2012

Я использую следующий код для получения текущего местоположения, я добавил каркас corelocation

- (void)viewDidLoad {
    [super viewDidLoad];

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
    [locationManager startUpdatingLocation];

}

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
    int degrees = newLocation.coordinate.latitude;
    double decimal = fabs(newLocation.coordinate.latitude - degrees);
    int minutes = decimal * 60;
    double seconds = decimal * 3600 - minutes * 60;
    NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
                     degrees, minutes, seconds];
    NSLog(@" Current Latitude : %@",lat);
    //latLabel.text = lat;
    degrees = newLocation.coordinate.longitude;
    decimal = fabs(newLocation.coordinate.longitude - degrees);
    minutes = decimal * 60;
    seconds = decimal * 3600 - minutes * 60;
    NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
                       degrees, minutes, seconds];
    NSLog(@" Current Longitude : %@",longt);
    //longLabel.text = longt;
}

Но я получаю значения по умолчанию, например, Широта: 42 ° 17 '36.8898 "и Долгота:-71 ° 27 '43,1003 ", где моя текущая широта: N 12 ° 56' 11,5624" и долгота: E 77 ° 32 '41,0834 ".Как узнать точную широту и долготу.где я делаю ошибку или мне нужно добавить какой-либо другой метод или функцию или структуру.

Заранее спасибо.

Ответы [ 5 ]

12 голосов
/ 04 ноября 2012

Вы можете добавить этот метод, где вам нужно получить текущую широту и долготу:

-(CLLocationCoordinate2D) getLocation{
    CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    [locationManager startUpdatingLocation];
    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];

    return coordinate;
}

И для его вызова используйте:

CLLocationCoordinate2D coordinate = [self getLocation];
NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude];
NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude];

NSLog(@"*dLatitude : %@", latitude);
NSLog(@"*dLongitude : %@",longitude);
2 голосов
/ 25 января 2012

Вы должны протестировать службу определения местоположения на устройстве, а не на симуляторе, хотя вы можете включить симуляцию местоположения на симуляторе, см. Прикрепленное изображение, значок в кружке. Но это не будет ваше точное местоположение! Но, по крайней мере, вы можете убедиться, что ваш код работает image

2 голосов
/ 25 января 2012

Протестируйте приложение на реальном устройстве.Симулятор всегда будет показывать вам значения по умолчанию для широты и долготы.Также убедитесь, что на вашем устройстве включены службы определения местоположения.

1 голос
/ 25 января 2012

Вам нужно протестировать его на устройстве, чтобы получить широту и долготу вашего текущего местоположения. Я предполагаю, что вы получаете широту и долготу Купертино, которая является значением по умолчанию.

0 голосов
/ 08 апреля 2015

Сначала вы должны включить службу определения местоположения в вашем симуляторе.Отладка -> Местоположение.В большинстве случаев вы будете получать лат и длинные значения Купертино.И вы можете установить пользовательские местоположения для этой опции, выбрав второй вариант (пользовательское местоположение).Эта опция автоматически сработает, когда мы выберем расположение во время выполнения в области отладки.

...