转换MKPlaceMark addressDictionary字符串编码

时间:2011-04-09 10:13:50

标签: iphone mkreversegeocoder

我正在研究一个使用MKReverseGeocoder转换lat,long到地址的例子。但当我收到数据并尝试获得结果时,我收到如下字符串:

NSString *street = [geocoder.addressDictionary objectForKey:@"Street"];

我收到了这样的地址:“Ng \ U00f5 381 Nguy \ U1ec5n Khang”

如何将其转换为unicode格式化字符串?

提前致谢。

2 个答案:

答案 0 :(得分:16)

如果您从MKRevereseGeocoder委托回调中获取MKPlaceMark对象,则可以使用以下内容将地标转换为可读地址:

NSLog(@"Address of placemark: %@", ABCreateStringWithAddressDictionary(placemark.addressDictionary, NO));

您需要将AddressBookUI框架添加到项目中并

#import <AddressBookUI/AddressBookUI.h>

我不确定响应是否为unicode,但看起来它能够合理地表示地标中的所有数据。

未经测试,但

NSLog(@"Address of placemark: %@", [CNPostalAddressFormatter stringFromPostalAddress:placeMark.postalAddress style:CNPostalAddressFormatterStyleMailingAddress]);

所需的框架是“联系人”,所以请将其包括在内:

@import Contacts;

应该是iOS11.0 +

中新的做事方式

答案 1 :(得分:3)

如果您从MKPlaceMark委托回调中获取MKRevereseGeocoder对象,则可以使用以下内容将地标转换为可读地址:

NSLog(@"The geocoder has returned: %@", [placemark addressDictionary]);
//all elements returned

//you can get some object like coutry ,code ;code country ...

NSLog(@"country ::::%@",[placemark country]);

NSLog(@"countrycode ::::%@",[placemark countryCode]);

NSLog(@"postalcode ::::%@",[placemark postalcode]);

NSLog(@"street::::%@",[placemark thoroughfare]);

 NSLog(@"streetinfo::::%@",[placemark administrativeArea]);

NSLog(@"streeteersub ::::%@",[placemark subAdministrativeArea]);