注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

定位与地图(七)  

2013-05-09 00:28:39|  分类: ios开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

通过一组经纬度数据得到一个地点名称

你有一组经纬度数据,你想把这组数据解析出来得到一个实在的地理位置名称。

 通过一组经纬度数据得到一个实在的地理位置数据,我们通常称之为逆向地理编码。

创建一个 CLGeocoder 的实例对象,然后提供一个块对象,这个对象必须要没有返回 值,而且要接收两个参数。

一个 NSArray 类型的地点标记参数,这个参数将会用来保存你讲需要查询的地理位置。

一个 NSerror 类型的参数,这个参数将会返回一些地理位置编码信息是否正确的校验信 息。

当介绍了 GLGeocoder 用法之后,我们需要使用 erverseGeocodeLocation:completionHandler 这个方法来进行反向地理位置编码。 

代码如下:

#import <UIKit/UIKit.h>

#import <CoreLocation/CoreLocation.h>



@interface ViewController : UIViewController 


@property (nonatomic,strong) CLGeocoder *myGeocoder;


@end


------------------


#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void) didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}


- (void)viewDidLoad

{

    [super viewDidLoad];;

    CLLocation *location = [[CLLocation alloc] initWithLatitude:+38.4112810

                                                      longitude:-122.8409780f];

    self.myGeocoder = [[CLGeocoder alloc] init]; [self.myGeocoder

                reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

                    if (error == nil && [placemarks count] > 0)

                    {

                        CLPlacemark *placemark = [placemarks objectAtIndex:0];

                        

                        NSLog(@"Country = %@",placemark.country);

                        NSLog(@"Postal Code = %@",placemark.postalCode);

                        NSLog(@"Locality = %@",placemark.locality);

                    }

                    else if (error == nil && [placemarks count] == 0)

                    {

                        NSLog(@"No results were returned");

                    }

                    else if (error != nil)

                    {

                        NSLog(@"An error occurred = %@",error);

                    }

                }];

}


- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

{

    return YES;

}


@end


你可以自己看看一个叫做 placemarks 这个数组,这个数组,如果反向地理位置编码正 常,那么这个数组将会包含一组 CLPlacemark 的数据,这个组数据通过我们给 reverseGeocodeLocation:completionHandler 这个方法传递的经纬度数据来进行地理位置匹 配,因此如果我们要确保没有错误信息的发生,并且我们应该确定 placemarks 数组中至少包 含一个 placemark.

  以上的代码将在窗口上输出反向地址解析。

每个程序每天都有限的反向地址解析请求次数,具体的数量依赖于 iOS 中位置服务的 提供商。也有大量的第三方 APIs 提供了在线服务,供开发者使用。这里我不能给出这些服 务,不过通过浏览器,你可以找到很多免费的,这样就不在依赖于 iOS SDK 提供的地理编 解码服务了。执行一个地理编码请求,你都要创建一个 CLGeocoder 静态实例。这个类需要 有可用的网络连接——用来处理请求。反向地理编码的值将通过 reverseGeocodeLocation:completionHandler:block 方法来报告。


  评论这张
 
阅读(35)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017