Может кто-нибудь помочь мне с использованием CLLocationManager? - PullRequest
1 голос
/ 03 апреля 2012

У меня два вопроса. (Во-первых) Я пытаюсь сделать так, чтобы всякий раз, когда iPhone перемещался в определенном месте, всплывающее окно с предупреждением показывало долготу, где они были, и широту, где они сейчас. Это в целях тестирования для части большого проекта, над которым я работаю. Проблема в том, что окно оповещения вообще не появляется. Я думал, что когда менеджер местоположений получает новое местоположение, он запускает делегата, который должен показать местоположение в окне предупреждения, однако ничего не происходит вообще.

Вот как я настраиваю Location Manager:

    - (void)viewDidLoad
{
    locationManager =[[CLLocationManager alloc] init];
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    [locationManager startUpdatingLocation];
}

Вот делегат:

    -(void) locationmanager: (CLLocationManager *) manager
        didUpdateToLocation: (CLLocation *) newLocation
        fromLocation: (CLLocation *) oldLocation
{  
    float oldlat; 
    float oldlng;
    float lat;
    float lng;
    NSDate *oldtime;
    NSDate *newtime;

    lat = newLocation.coordinate.latitude;
    lng = newLocation.coordinate.longitude;
    newtime = newLocation.timestamp;
    oldlat = oldLocation.coordinate.latitude;
    oldlng = oldLocation.coordinate.longitude;    
    oldtime = oldLocation.timestamp;

    NSNumber *oldlong = [NSNumber numberWithFloat:oldlng];
    NSNumber *newlat = [NSNumber numberWithFloat:lat];  
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:oldlong
                          message:newlat 
                          delegate:self
                          cancelButtonTitle:@"Cancel"
                          otherButtonTitles:@"Submit",nil];
    [alert show];

(Во-вторых), когда я убедился, что могу отслеживать новый и старый latlng, кто-нибудь знает лучший способ хранения данных? Я исследовал sqlite, основные данные и просто использовал массивы, но у меня все еще есть сомнения относительно того, каков наилучший способ хранения значений lat, lng, timestamp и username, которые будут генерироваться, вероятно, пару сотен раз в день примерно для 200 пользователей, а затем отправить его на сервер.

Я знаю, что это был длинный вопрос, но любая проницательность была бы очень признательна!

1 Ответ

0 голосов
/ 03 апреля 2012

Хорошо.Я действительно удивлен, почему ваше приложение не зависало в этой строке:

 UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:oldlong
                      message:newlat 
                      delegate:self
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:@"Submit",nil];

Если попытаться правильно понять параметры UIAlertView, вы увидите, что параметры initWithTitle и message имеют тип NSString ито, что вы передаете, это NSNumber, поэтому возьмите два NSString для широты и долготы и передайте их в качестве параметра, подобного этому.

 NSString *long1=[[NSString alloc]initWithFormat:@"%f",oldlong];
 NSString *lat1=[[NSString alloc]initWithFormat:@"%f",newlat];

 UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:long1
                      message:lat1 
                      delegate:self
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:@"Submit",nil];

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

enter image description here

...