CLGeocoder возвращает нулевые результаты для города и штата при использовании данных текущего местоположения

Привет, я пытаюсь получить название города и штата с помощью CLGeocoder. Однако placemark.addressDictionary возвращает мне:

{FormattedAddressLines = ("Южный Атлантический океан"); Name = "Южный Атлантический океан"; Ocean = "Южный Атлантический океан"; }

и метка: южная часть Атлантического океана, южная часть Атлантического океана @ ‹-42.60533670, -21.93128480> +/- 100,00 м, регион CLCircularRegion (идентификатор: '‹ - 41.51023865, -31.60774370> радиус 4958095.65', центр: ‹- 41.51023865, -31.60774370 >, радиус: 4958095.65м)

Кроме того, в NSLog [местонахождение метки] и [административная область метки] оба значения равны нулю.

Также попытался добавить ABAdressBookUI, структуру ABAdressBook и получить данные как:

NSString * addressDict = ABCreateStringWithAddressDictionary (placemark.addressDictionary, NO); который возвращает объект с пустым описанием.

или пробовал: NSString * state = (NSString *) [placemark.addressDictionary objectForKey: kABPersonAddressStateKey]; который выдает предупреждение о несовместимых типах указателей.

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

Мой код при нажатии кнопки текущего местоположения выглядит следующим образом:

CLLocation * loc;

loc = [[CLLocation alloc] initWithLatitude:[KLocationManager sharedManager]._locationManager.location.coordinate.latitude    longitude:[KLocationManager sharedManager]._locationManager.location.coordinate.longitude];

CLGeocoder* geocoder = [[CLGeocoder alloc] init];

[geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {
    CLPlacemark* placemark = [placemarks objectAtIndex:0];
    if (placemark) {
        NSDictionary* dic = placemark.addressDictionary;
        NSString* locName = [NSString stringWithFormat:@"%@, %@", [dic objectForKey:@"City"],[dic objectForKey:@"State"]];
        CLLocation* loc = placemark.location;

        self.returnLocationDict = @{@"name":locName, @"location":loc};
    }
}];

Что мне здесь не хватает?


person tech savvy    schedule 17.01.2014    source источник


Ответы (1)


Один из способов воспроизвести то, что вы испытываете, - использовать CLLocation с широтой и долготой 0,0.

Я запустил ваш код, используя широту: 37,3318, долготу: -122,0312 (бесконечный цикл ..), и он работал, как ожидалось.

Ваш менеджер местоположения, вероятно, не возвращает то, что вы ожидаете.

person DaveIngle    schedule 17.01.2014