您好我正在尝试使用CLGeocoder获取城市和州的名称。但是,placemark.addressDictionary将返回我:
{ FormattedAddressLines =( “南大西洋” ); 名称=“南大西洋”; 海洋=“南大西洋”; }
和地标是: 南大西洋,南大西洋@< -42.60533670,-21.93128480> +/- 100.00m,区域CLCircularRegion(标识符:'< -41.51023865,-31.60774370> radius 4958095.65',中心:< -41.51023865,-31.60774370>,半径:4958095.65m)
此外,[placemark locality]和[placemark administrativeArea]的NSLog都显示为nil。
还尝试添加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};
}
}];
我在这里缺少什么?
答案 0 :(得分:0)
复制您正在经历的内容的一种方法是使用纬度和经度为0,0的CLLocation
我使用纬度运行你的代码:37.3318经度:-122.0312(无限循环..)它按预期工作。
您的位置经理可能没有回复您的期望。