2014-01-14 3 views
-1

Я использую координаты, чтобы получить погоду, и она отлично работает. Название города отображается на UILabel. Все работает хорошо, пока я не запустил приложение на своем Iphone, и появившееся название города совершенно неверно.IOS Simulator показывает неправильные координаты

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

Кто-нибудь знает об этой проблеме? Это симулятор, который преследует приложение, когда я запускаю его по телефону или вы думаете, что он связан с кодом?

EDIT:

Я использую Реактивная какао и CLLocationManager

- (id)init { 
if (self = [super init]) { 
    _locationManager = [[CLLocationManager alloc] init]; 
    _locationManager.delegate = self; 

    _client = [[WXClient alloc] init]; 

    [[[[RACObserve(self, currentLocation) 
     ignore:nil] 
     // Flatten and subscribe to all 3 signals when currentLocation updates 
     flattenMap:^(CLLocation *newLocation) { 
      return [RACSignal merge:@[ 
            [self updateCurrentConditions], 
            [self updateDailyForecast], 
            [self updateHourlyForecast] 
            ]]; 
     }] deliverOn:RACScheduler.mainThreadScheduler] 
    subscribeError:^(NSError *error) { 
     [TSMessage showNotificationWithTitle:@"Fel" subtitle:@"Det gick inte att hämta vädret." 
type:TSMessageNotificationTypeError]; 
    }]; 
} 
return self; 
} 

- (void)findCurrentLocation { 
self.isFirstUpdate = YES; 
[self.locationManager startUpdatingLocation]; 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
if (self.isFirstUpdate) { 
    self.isFirstUpdate = NO; 
    return; 
} 

CLLocation *location = [locations lastObject]; 

if (location.horizontalAccuracy > 0) { 
    self.currentLocation = location; 
    [self.locationManager stopUpdatingLocation]; 
} 
} 

- (RACSignal *)updateCurrentConditions { 
return [[self.client fetchCurrentConditionsForLocation:self.currentLocation.coordinate] 
doNext:^(WXCondition *condition) { 
    self.currentCondition = condition; 
}]; 
} 
+0

Вам нужно предоставить гораздо больше информации, прежде чем люди смогут вам помочь. Где ты? Что случилось с названием города? Где iPhone думает, что это так? Какой код вы используете для определения местоположения iPhone? Какой код вы используете для преобразования местоположения в название города? Прямо сейчас ваш вопрос сводится к тому, что «я что-то сделал, и он не работает», на который единственный ответ «Это потому, что вы сделали это неправильно». – Craig

+0

в порядке, отредактированный и добавленный код. – Pierre

+0

Вы также должны объяснить, что вы подразумеваете под «совершенно неправильным». Если вы находитесь в Сан-Франциско и получаете Окленд (неточный GPS), это может быть другой проблемой для вас в Синди и получения Bejing (координаты перевернуты?). – Craig

ответ

0

решаемые его! Глупая ошибка. Только обновленные метки в viewDidLoad, поэтому название города не изменилось, но координаты были правильными.

+0

Затем отметьте это как ответ –

0

В вашем коде вы прекращаете обновление местоположения, как только точность больше 0, но что, если точность составляет 10 000 км? Вместо этого вы должны проверить, действительно ли это место, а затем точность МЕНЬШЕ, чем какое-то значение. Именование этого атрибута не очень хорошо. В этом случае более точное значение точности является более точным.

Смежные вопросы