Swift101。将坐标转换为城市名称并返回

在本文中,我将说明如何从地理位置对象以及其他方法获取城市,国家/地区,邮政编码等的名称。

我们要做的第一件事是将所需的权限设置到Info.plist文件中,以便能够要求用户访问此手机的GPS模块。 打开Info.plist并设置以下内容。

在关键字段中输入NSLocationWhenInUseUsageDescription ,然后按回车键。 它将自动变成“隐私-位置……”。 与NSLocationAlwaysUsageDescription相同。

确保在值字段中添加一条有效消息,以描述应用程序为何需要位置权限的原因。 好的文字很重要,因为Apple 只会在说“ lorem impsum”时拒绝该应用程序。 到过那里。 从字面上看done

您可以选择要使用“使用中的位置”还是“始终”。 从逻辑上讲,第一个仅在打开应用程序时才使用GPS模块。 即使关闭应用程序,后者也会使用该位置。 除非您有充分的理由,否则不要使用第二个版本。 最近,在Uber将设置更改为“始终”时,美国街头发生了广泛的骚动,除了明显的原因,它只是跟踪用户。 也许不是字面上的🤪

首先,我们将创建一个帮助程序类,其中包含我们的逻辑以从位置生成城市名称,并返回位置以及获取设备位置。

我们将其称为LocationManager.swift ,最重要的是,我们需要导入CoreLocation框架。

在我们的课程中,我们将创建核心位置管理器的实例对象,并设置委托,将所需的精度设置为最佳,并要求获得使用iPhone位置服务的许可。

重要:在我们的示例中,我们希望用户(您)允许这些权限。 我们将不处理否认案件,因为这将超出本文的篇幅。 在您的应用中,您绝对应该处理这些情况。

我们的下一个目标是在我们的示例ViewController上的标签中显示当前位置的地址值。 我们将添加一个获取当前iPhone位置并使用Apple的GLGeocoder类及其reverseGeocodeLocation函数的函数。

我们首先检查错误是否为nil,如果不是,则在此停止(使用return)并打印错误。 与检查地标对象是否存在相同。 该对象可能为nil。 因此,请在出现错误的情况下在您的应用中处理这种情况。 给用户良好的体验很重要。

重要:Apple希望我们 为每个流程调用 创建一个新的 GLGeocoder 对象。 例如,每当您要为位置调用新的地标对象时,请使用新的 GLGeocoder 对象。 这就是为什么对象是函数的一部分,而不是类的一部分的原因,因为我们通常会处理重复调用的对象。

如果一切正常,我们将在完成处理程序(异步)中返回地标对象。

最后,我们要获取一个文本位置并返回一个地理位置。 对于我们的示例,我们将使用法国巴黎的埃菲尔铁塔的位置,并在地图视图上显示该位置。 根据Google的说法,该地址是“战神广场(Champ de Mars),法国第五大道Anatole法国,邮政编码75007,法国”。

现在,我们将创建一个再次使用GLGeocoder的函数,但这一次是GLGeocoder函数,以再次获取一个地标对象。 这次使用地标的location对象。

我希望本教程能够解释GeoLocation的基础知识,以及如何在我们的App项目中利用它。 留下一些爱🙂

在Github上找到示例项目。