我正在研究一个使用MKReverseGeocoder转换lat,long到地址的例子。但当我收到数据并尝试获得结果时,我收到如下字符串:
NSString *street = [geocoder.addressDictionary objectForKey:@"Street"];
我收到了这样的地址:“Ng \ U00f5 381 Nguy \ U1ec5n Khang”。
如何将其转换为unicode格式化字符串?
提前致谢。
答案 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]);