Поиск местоположения пользователя перед загрузкой карты - PullRequest
1 голос
/ 12 марта 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 19 апреля 2010

Чтобы получить местоположение пользователя, вам нужно «запустить» менеджер местоположений, прежде чем пытаться прочитать информацию о местоположении. Я предлагаю вам взглянуть на образец 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;
    }
}

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

0 голосов
/ 12 марта 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...