Определение местоположения пользователя перед загрузкой карты

голоса
1

Я пытаюсь найти местоположение пользователя с помощью:

CLLocationCoordinate2D _location;
CLLocation *userLoc = nil;
if(appDelegate.clLocationManager.locationServicesEnabled){
    userLoc = mapView.userLocation.location;
    _location = userLoc.coordinate;
}

Проблема заключается в том, что я еще не инициализирована карте таким образом, выше не работает. Есть ли способ, чтобы получить местоположение пользователя без использования MapKit? Или я должен использовать другой метод?

Задан 12/03/2010 в 21:34
источник пользователем
На других языках...                            


2 ответов

голоса
1

Для того, чтобы получить местоположение пользователя вам нужно на самом деле «начать» менеджер местоположения, прежде чем пытаться прочитать информацию о местоположении. Я полагаю, что вы смотрите на LocateMe образца от Apple.

LocateMe Пример кода

В двух словах, информация о местоположении ПРИСТУПАЯ пользователя может быть сделано в два этапа:

- (void)viewDidLoad {
    [[self locationManager] startUpdatingLocation];
}

- (CLLocationManager *)locationManager { 

    if (locationManager != nil) {       
        return locationManager; 
    }

    NSLog(@"%s, Creating new Location Manager instance.", __FUNCTION__);
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = DISTANCE_FILTER_VALUE;
    locationManager.delegate = self; 

    return locationManager; 
}

... а потом,

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    NSLog(@"%s, location manager returned a new location.", __FUNCTION__);

    // Check if location is valid (or good enough for us), 
    // and then process the location
    if ([self locationIsValid:newLocation]) {
            [self processLocation:newLocation];

            // Very important! When your done with it, stop the location manager
            [[self locationManager] sopUpdatingLocation];

            // (Maybe even) clear it
            locationManager.delegate = nil;
            [locationManager release];
            locationManager = nil;
    }
}

Надеюсь это поможет!

Ответил 19/04/2010 в 11:46
источник пользователем

голоса
0

Я почти удалил этот вопрос, но увидеть кто-то дал ему голос вверх. Это, кажется, ответ:

CLLocationCoordinate2D _location;
CLLocation *userLoc = nil;
if(appDelegate.clLocationManager.locationServicesEnabled){
    userLoc = appDelegate.clLocationManager.location;
    _location = userLoc.coordinate;
}

AppDelegate это просто ссылка на делегат приложения, где живет мое местоположение экземпляр менеджера.

Ответил 12/03/2010 в 21:41
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more