Ios 使用当前位置数据时,CLGeocoder返回城市和州的空结果

Ios 使用当前位置数据时,CLGeocoder返回城市和州的空结果,ios,objective-c,addressbook,cllocation,clgeocoder,Ios,Objective C,Addressbook,Cllocation,Clgeocoder,嗨,我正在尝试使用CLGeocoder获取城市和州的名称。但是,placemark.addressDictionary正在返回我: { FormattedAddressLines= 南大西洋 ; 名称=南大西洋; 海洋=南大西洋; } 而placemark是: 南大西洋,南大西洋@+/-100.00m,区域Cl循环区域标识符:“半径4958095.65”,中心:,半径:4958095.65m 此外,[placemark locality]和[placemark administrativeAre

嗨,我正在尝试使用CLGeocoder获取城市和州的名称。但是,placemark.addressDictionary正在返回我:

{ FormattedAddressLines= 南大西洋 ; 名称=南大西洋; 海洋=南大西洋; }

而placemark是: 南大西洋,南大西洋@+/-100.00m,区域Cl循环区域标识符:“半径4958095.65”,中心:,半径:4958095.65m

此外,[placemark locality]和[placemark administrativeArea]的NSLog都显示为零

还尝试添加ABAdressBookUI、ABAdressBook框架,并将数据获取为:

NSString*addressDict=ABCreateStringWithAddressDictionaryplacemark.addressDictionary,否;返回一个描述为空的对象

或尝试: NSString*state=NSString*[placemark.addressDictionary objectForKey:KabPersonalAddressStateKey];这会引发不兼容指针类型的警告

如果有任何可能的解决办法,或者如果我遗漏了什么,请让我知道

点击当前位置按钮时,我的代码如下:

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};
    }
}];

我在这里遗漏了什么?

复制您体验的一种方法是使用纬度和经度为0,0的CLLocation

我使用纬度:37.3318经度:-122.0312无限循环运行了您的代码。。这一切都如期而至

您的位置经理可能没有返回您期望的内容