IOS模拟器显示错误的坐标

时间:2014-01-14 20:00:20

标签: objective-c ios-simulator coordinates

我使用坐标来获取天气并且工作正常。城市名称显示在UILabel上。一切顺利,直到我在我的iPhone上运行应用程序,出现的城市名称是完全错误的。

我认为也许模拟器仍然决定了位置,但是当我断开手机并运行应用程序时,它仍然显示错误的城市。

有谁知道这个问题?当我在手机上运行应用程序或者你认为它与代码有关时,模拟器是否会困扰应用程序?

编辑:

我使用Reactive Cocoa和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;
}];
}

2 个答案:

答案 0 :(得分:0)

解决了!愚蠢的错误。仅更新了viewDidLoad中的标签,因此城市名称没有改变,但坐标是正确的。

答案 1 :(得分:0)

在代码中,一旦准确度大于0,就会停止更新位置,但如果精度为10,000km会怎样?您应该检查位置是否有效,然后确定精度是否低于某个值。该属性的命名不是很好。在这种情况下,精度的较低值是更准确的位置。