Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 前向地理编码_Ios_Xcode_Mapkit - Fatal编程技术网

Ios 前向地理编码

Ios 前向地理编码,ios,xcode,mapkit,Ios,Xcode,Mapkit,我正在创建一个简单的地图应用程序。到目前为止,我实现了我的地图视图和搜索栏。我还和我在的一个前向地理编码器打过交道,它工作得很好。但从iOS5开始,前向地理编码是一项内置功能。我该怎么用这个?苹果的文档非常简短,没有帮助 我希望用户在文本字段或搜索栏中输入地址,然后在地图上用注释显示坐标。正向地理编码(iOS 5): #导入 CLGeocoder*gc=[[CLGeocoder alloc]init]; [gc geocodeAddressString:地址完成处理程序:^(NSArray*位置

我正在创建一个简单的地图应用程序。到目前为止,我实现了我的地图视图和搜索栏。我还和我在的一个前向地理编码器打过交道,它工作得很好。但从iOS5开始,前向地理编码是一项内置功能。我该怎么用这个?苹果的文档非常简短,没有帮助

我希望用户在文本字段或搜索栏中输入地址,然后在地图上用注释显示坐标。

正向地理编码(iOS 5):

#导入
CLGeocoder*gc=[[CLGeocoder alloc]init];
[gc geocodeAddressString:地址完成处理程序:^(NSArray*位置标记,NSError*错误)
{
如果([placemarks count]>0)
{
//拿第一个
CLPlacemark*mark=(CLPlacemark*)[placemarks objectAtIndex:0];
双纬度=标记.位置.坐标.纬度;
双lng=标记.位置.坐标.经度;
}
}];
反向地理编码(iOS 5):

#导入
CLGeocoder*gcrev=[[CLGeocoder alloc]init];
[gcrev reverseGeocodeLocation:c completionHandler:^(NSArray*位置标记,NSError*错误)
{
CLPlacemark*revMark=[placemarks objectAtIndex:0];
//将placemark转换为地址文本
NSArray*addressLines=[revMark.addressDictionary objectForKey:@“FormattedAddressLines”];
NSString*revAddress=[addressLines组件由字符串连接:@“\n”];
//印刷品
NSLog(@“rev:%@,[NSString stringWithFormat:@“反向地理编码地址:\n%@”,revAddress]);
}];
CLPlacemark有很多特性:

  • 名字
  • addressDictionary:用于placemark的地址簿键和值
  • 等计数码
  • 国家
  • 后酒精
  • 行政区
  • 副行政区
  • 地点
  • 亚局部
  • 道路:街道地址
  • 子通道:地址簿键和placemark的值
  • 区域
  • 内陆水域
  • 海洋
  • 感兴趣的领域

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