2014-10-18 2 views
0

Я пытался подделать свое местоположение в симуляторе iOS, но методы, которые я читал, не работают. Я использовал отладчик для установки своего поддельного местоположения и сделал собственное местоположение в Debug-> Location-> Custom Location, но я все еще регистрирую 0.000 0.000 для lat и long. Я использую этот код, чтобы найти текущее местоположение.Тестирование поддельного текущего местоположения на iOS Simulater не работает

- (IBAction)currentLocationButtonPressed:(UIButton *)sender 
{ 
    //Search for pubs and bars in current location. 
    //Push to tableViewController 
    NSLog(@"current location Pressed."); 

    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; // Best accuracy 
    [locationManager startUpdatingLocation]; 
    NSLog(@"%@",[self deviceLocation]); 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    NSLog(@"didUpdateToLocation: %@", newLocation); 
    CLLocation *currentLocation = newLocation; 

    if (currentLocation != nil) { 
     NSLog(@"Latitude: %f Longitude: %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude); 
    } 
} 

- (NSString *)deviceLocation { 
    return [NSString stringWithFormat:@"latitude: %f longitude: %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude]; 
} 

Делегат настроен, и я прошу разрешения.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    searchLocationTextField.delegate = self; 
    locationManager.delegate = self; 
    locationManager = [[CLLocationManager alloc]init]; 
    [locationManager requestWhenInUseAuthorization]; // For foreground access 
    [locationManager requestAlwaysAuthorization]; // For background access 

} 
+0

Во время работы симулятора вы также можете имитировать текущее местоположение из xcode: 'Debug' -> 'Simulate Location'. Вы пробовали с этим? –

+0

Да, я пробовал это. Не работает. @AsifAsif – Andy

+0

Какой iOS это? –

ответ

0

Установить locationManager delegate после его выделения.

locationManager = [[CLLocationManager alloc]init]; 
locationManager.delegate = self; 

locationManager:didUpdateToLocation:fromLocation: метод делегата является устаревшим, используйте вместо locationManager:didUpdateLocations:.

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 
{ 
    CLLocation *currentLocation = [locations lastObject]; 

    NSLog(@"Latitude: %f Longitude: %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude); 
} 
+0

Да, это кажется более понятным, но NSLog (@ "didUpdateToLocation:% @", [locations lastObject]); даже не войдут в консоль. – Andy

+0

О, это было излишним. обновлен код. –

+0

Даже после обновления currentLocation не регистрируется на консоли. Кажется, что метод даже не вызван. – Andy

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