我正在创建一个简单的地图应用程序。到目前为止,我实现了我的地图视图以及我的搜索栏。我还使用了我在http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/找到的前向地理编码器,效果很好。但似乎从 iOS 5 开始,前向地理编码是一个内置功能。我究竟如何使用它?苹果文档很短,没有帮助。
我希望用户在文本字段或搜索栏中输入地址,然后在地图上显示带有注释的坐标。
我正在创建一个简单的地图应用程序。到目前为止,我实现了我的地图视图以及我的搜索栏。我还使用了我在http://blog.sallarp.com/ipad-iphone-forward-geocoding-api-google/找到的前向地理编码器,效果很好。但似乎从 iOS 5 开始,前向地理编码是一个内置功能。我究竟如何使用它?苹果文档很短,没有帮助。
我希望用户在文本字段或搜索栏中输入地址,然后在地图上显示带有注释的坐标。
正向地理编码(iOS 5):
#import <CoreLocation/CoreLocation.h>
CLGeocoder* gc = [[CLGeocoder alloc] init];
[gc geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error)
{
if ([placemarks count]>0)
{
// get the first one
CLPlacemark* mark = (CLPlacemark*)[placemarks objectAtIndex:0];
double lat = mark.location.coordinate.latitude;
double lng = mark.location.coordinate.longitude;
}
}];
反向地理编码(iOS 5):
#import <CoreLocation/CoreLocation.h>
CLGeocoder* gcrev = [[CLGeocoder alloc] init];
[gcrev reverseGeocodeLocation:c completionHandler:^(NSArray *placemarks, NSError *error)
{
CLPlacemark* revMark = [placemarks objectAtIndex:0];
// turn placemark to address text
NSArray* addressLines = [revMark.addressDictionary objectForKey:@"FormattedAddressLines"];
NSString* revAddress = [addressLines componentsJoinedByString: @"\n"];
// print
NSLog(@"rev: %@",[NSString stringWithFormat:@"Reverse geocoded address: \n%@", revAddress]);
}];
CLPlacemark 有很多属性:
iOS 5 现在允许转发地理编码:
看看这里: