Map3: 通过一个有意义的地址得到一组经纬度数据 通过一组经纬度数据得到一个地点名称

问题一: 通过一个有意义的地址得到一组经纬度数据

方案:通过 GLGeocoder 这个类的 geocodeAddressString:completionHandler 这个方法来实现。

讨论:

反向地理编码是通过一组经纬度数据得到一个实在的地理位置名称。同样我们可以使用地理编码通过一个地理名称得到一组经纬度数据。地理编码和反向地理编码的功能都被封装 在 Core Location 框架中的 CLGeocoder 类中。

我们通过给 CLGeocoder 类的 geocodeAddressString:completionHandler 这个方法传递一个 String 类型的地理位置名称来进行地理编码。这个方法的 completionHandler 参数接收一个 block 对象,这个 block 对象不返回任何内容,但是接收两个参数:

1、一个地标数组(NSArray 类型),这将被设置为与地址相匹配的位置。

2、一个 error(NSError 类型),如果地理编码失败了,将会设置一个错误码。

例子:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *oreillyAddress = @"1005 Gravenstein Highway North, Sebastopol, CA 95472, USA";
    _myGeocoder = [[CLGeocoder alloc]init];
    [_myGeocoder geocodeAddressString:oreillyAddress completionHandler:^(NSArray *placemarks, NSError *error) {
        if ([placemarks count] > 0 && error == nil) {
            NSLog(@"Found %lu placemark(s).", (unsigned long)[placemarks count]);
            CLPlacemark *firstPlacemark = [placemarks objectAtIndex:0];
            NSLog(@"Longitude = %f", firstPlacemark.location.coordinate.longitude);
            NSLog(@"Latitude = %f", firstPlacemark.location.coordinate.latitude);
        }
        else if ([placemarks count] == 0 && error == nil){
            NSLog(@"Found no placemarks");
        }
        else if (error != nil){
            NSLog(@"An error occurred : %@",error);
        }
    }];
}

控制台打印:

Found 1 placemark(s).

Longitude = 93.174470

Latitude = 38.983891

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

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

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

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

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

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

- (void)reverseGeocode{
    //反向地理编码 经纬度->地点名称
    CLLocation *location = [[CLLocation alloc]initWithLatitude:38.983891 longitude:93.174470];
    [_myGeocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

        if (error == nil &&
            [placemarks count] > 0){
            CLPlacemark *placemark = [placemarks objectAtIndex:0];
            /* We received the results */
            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);
        }
    }];
}

打印结果为:

Country = China

Postal Code = (null)

Locality = Haixi

 

时间: 2024-10-09 16:20:09

Map3: 通过一个有意义的地址得到一组经纬度数据 通过一组经纬度数据得到一个地点名称的相关文章

给函数和变量取一个有意义的名字

为什么要给函数和变量取一个有意义的名字? 1. 代码写出来是给以后的自己和别人看的,易于理解的变量名可以更好的阅读,并且可以看出编码者的个人修养和编程功底: 2. 好的变量名字有利于提高自己英语水平(词汇量.表达能力),英语水平提高了,对代码中的注释也是很有帮助的: 3.  可以培养自己咬文嚼字的能力,选用什么样的一个词来表达其在代码中最为贴近的含义: 如何给函数和变量取一个有意义的名字? 1. 阅读优秀的代码,体会别人是怎么取变量名的,并不断积累,好记性不如烂笔头: 2. 阅读相关书籍,<代码

如何通过一个编程获得IP地址归属地的最简单办法

有时在网站应用程序中要显示对方的IP地址与它的归属地,一般来说,有下列几种办法.1, 采用IP地址数据库.本地查询     这个办法的优点是:查询速度最快,不依赖于外部网站.    缺点是:要编写一定的数据库查询代码,而且你的数据库如果不是很新,则某些IP的查询结果会不正确.        (有需要的可以在此留言,大虾米可以提供一个能找到的最新的IP地址库)2,采用WebService查询.       这里有一个最好的WebService      http://www.webxml.com.

华为oj-判断输入的字符串是不是一个有效的IP地址

题目标题: 判断输入的字符串是不是一个有效的IP地址 详细描述: 请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址 约束 输入IP为XXX.XXX.XXX.XXX格式 字符串两端含有空格认为是合法IP 字符串中间含有空格认为是不合法IP 类似于 01.1.1.1, 1.02.3.4  IP子段以0开头为不合法IP 子段为单个0 认为是合法IP,0.0.

无法启动INTERNET连接共享。一个已经用IP地址配置的LAN连接需要自动IP地址

提问者采纳 很简单 只要把你要共享的连接 192.168.0.1 0改成1 然后就可以共享了 共享后再改回来 就能上了 但是会出现IP冲突的~ 无法启动INTERNET连接共享.一个已经用IP地址配置的LAN连接需要自动IP地址

实现一个简单的邮箱地址爬虫(python)

我经常收到关于email爬虫的问题.有迹象表明那些想从网页上抓取联系方式的人对这个问题很感兴趣.在这篇文章里,我想演示一下如何使用python实现一个简单的邮箱爬虫.这个爬虫很简单,但从这个例子中你可以学到许多东西(尤其是当你想做一个新虫的时候). 我特意简化了代码,尽可能的把主要思路表达清楚.这样你就可以在需要的时候加上自己的功能.虽然很简单,但完整的实现从网上抓取email地址的功能.注意,本文的代码是使用python3写的. 好.让我们逐步深入吧.我一点一点的实现,并加上注释.最后再把完整

[单选题]一个php文件的地址为c:/apache/htdocs/phptutor/index.php,虚拟主机的地址是c:/apache/htdocs,那么$_SERVER[&#39;PHP_SELF&#39;]应该评价到哪个页面

index.php /htdocs/phptutor/index.php /phptutor/index.php c:/apache/htdocs/phptutor/index.php $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关.$_SERVER['argv'] #传递给该脚本的参数.$_SERVER['argc'] #包含传递给程序的命令行参数的个数(如果运行在命令行模式).$_SERVER['GATEWAY_INTERFACE']

单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?

单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网? 配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明),一头插的电脑上:1.登陆路由器(对于TP-link的路由器:打开你的电脑,点击IE游览器,在地址栏输入 :192.168.1.1 按回车后,弹出登陆页面输入用户名“admin”,密码“admin”,其他路由器请查阅路由器使用手册):2.点击左侧网络设置,在wan口设置中选静态IP 输入分配给你的IP:在

华为OJ测试题——判断输入的字符串是不是一个有效的IP地址(附世上最全测试数据)

题目标题: 判断输入的字符串是不是一个有效的IP地址 详细描述: 请实现如下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符串 输出:true 有效的IP地址,false,无效的IP地址 约束 输入IP为XXX.XXX.XXX.XXX格式 字符串两端含有空格认为是合法IP 字符串中间含有空格认为是不合法IP 类似于 01.1.1.1, 1.02.3.4  IP子段以0开头为不合法IP 子段为单个0 认为是合法IP,0.0.

数据容灾在数据库容灾领域中的比重及其意义

数据容灾只是确保数据安全的一个方案,当这个方案无法保障数据安全时,需要专业的数据恢复工具对其原有数据或者备份数据进行数据恢复.无论采用哪种容灾方案,数据备份还是最基础的,没有备份的数据,任何容灾都没有现实意义.但光有备份是不够的,容灾也必不可少.容灾对于IT而言,就是提供一个防止各种灾难的计算机信息系统.     数据容灾根据不同时机需求可以有不同的等级.中小企业通常只需采用本地容灾即可.所谓本地容灾就是在企业网络本地所进行的容灾措施,其中包括在本地备份.存储.保管备份媒体.在一些大众型企业,所