第三天:Swift利用CoreLocation获取当前地址

参考链接:https://www.jianshu.com/p/ade69f95bffc

              

 1 import UIKit
 2 import CoreLocation
 3
 4 class ViewController: UIViewController, CLLocationManagerDelegate {
 5
 6     @IBOutlet weak var showLocationBtn: UIButton!
 7     @IBOutlet weak var locationLabel: UILabel!
 8
 9     var locationManager: CLLocationManager!
10
11     override func viewDidLoad() {
12         super.viewDidLoad()
13         // Do any additional setup after loading the view, typically from a nib.
14
15         UIApplication.shared.statusBarStyle = .lightContent
16
17     }
18
19     @IBAction func showLocationAction(_ sender: UIButton) {
20
21         locationManager = CLLocationManager()
22         locationManager.delegate = self
23
24         locationManager.desiredAccuracy = kCLLocationAccuracyBest
25         locationManager.requestAlwaysAuthorization()
26         locationManager.startUpdatingLocation()
27     }
28
29     override func didReceiveMemoryWarning() {
30         super.didReceiveMemoryWarning()
31         // Dispose of any resources that can be recreated.
32     }
33
34 }
35
36 extension ViewController {
37     func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
38         self.locationLabel.text = "Error while updating location: " + error.localizedDescription
39     }
40
41     func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
42         CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: {
43             (placemarks, error) -> Void in
44
45                 if error != nil {
46                 self.locationLabel.text = "Reverse geocoder failed with error:" + error!.localizedDescription
47                 return
48             }
49
50             if placemarks!.count > 0 {
51                 let pm = placemarks![0]
52                 self.displayLocationInfo(pm)
53             } else {
54                 self.locationLabel.text = "Error existed in the data received from geocoder"
55             }
56         })
57     }
58
59     func displayLocationInfo(_ placemark: CLPlacemark?) {
60         guard let containsPlacemark = placemark else {return}
61
62         locationManager.stopUpdatingLocation()
63
64         let locality = (containsPlacemark.locality != nil) ? containsPlacemark.locality : ""
65         let postalCode = (containsPlacemark.postalCode != nil) ? containsPlacemark.postalCode : ""
66         let adminstrativeArea = (containsPlacemark.administrativeArea != nil) ? containsPlacemark.administrativeArea : ""
67         let country = (containsPlacemark.country != nil) ? containsPlacemark.country : ""
68
69         self.locationLabel.text = postalCode! + " " + locality!
70         self.locationLabel.text?.append("\n")
71         self.locationLabel.text?.append(adminstrativeArea! + ", " + country!)
72     }
73 }

原文地址:https://www.cnblogs.com/chmhml/p/8300925.html

时间: 2024-10-15 16:06:43

第三天:Swift利用CoreLocation获取当前地址的相关文章

Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)

CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等). 1,CLHeading对象通过一组属性提供航向相关数据: magneticHeading :磁极方向(磁北对应于随时间变化的地球磁场极点) trueHeading :真实方向(真北始终指向地理北极点) headingAccuracy :方向的精度 timestamp :Core Loaction确定位置时的时间戳 description : 方向数据 2,方向值的含义 不管是磁极方

XMPP-利用CoreLocation获取地理位置以及CLLocationManager 为什么就不调用代理

最近做基于XMPP的即时通讯,把相关内容总结整理下来看看! 一.利用CoreLocation获取地理位置 利用CoreLocation,必须在frameworks里面加入"CoreLocation.framework",然后类中import <CoreLocation/CoreLocation.h> 1.定义成员变量 #import "LocationHelper.h" @interface LocationHelper ()<CLLocation

(转)利用libcurl获取新浪股票接口, ubuntu和openwrt实验成功(三)

1.  利用 CURLOPT_WRITEFUNCTION 设置回调函数, 利用 CURLOPT_WRITEDATA 获取数据指针 官网文档如下 CALLBACK OPTIONS CURLOPT_WRITEFUNCTION Pass a pointer to a function that matches the following prototype: size_t function( char *ptr, size_t size, size_t nmemb, void *userdata); 

利用json获取天气信息

天气预报信息获取是利用json获取的,网上有非常多资源,源码.因为上面涉及到非常多天气信息,包含湿度,出行建议等,以及加入了全部城市代码的资源包.为了练手了解json的原理.我仅获取诚笃城市的最高温,最低温,城市名字. 我的布局是通过一个button获取城市名字,最高温,最低温.main.xnl代码例如以下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo

OC利用正则表达式获取网络资源(网络爬虫)

在开发项目的过程,很多情况下我们需要利用互联网上的一些数据,在这种情况下,我们可能要写一个爬虫来爬我们所需要的数据.一般情况下都是利用正则表达式来匹配Html,获取我们所需要的数据.一般情况下分以下三步:1.获取网页的html2.利用正则表达式,获取我们所需要的数据3.分析,使用获取到的数据,(例如,保存到数据库) 接下来我们分析代码:1.获取网页的html 对于一些网页,不需要提交Post提交数据时,我们可以简单的利用NSURL类来获取我们所需要的html,交将其转换中kCFStringEnc

c#反射机制学习和利用反射获取类型信息

反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的名称.限定符和参数等.有了反射,即可对每一个类型了如指掌.如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道 1..NET可执行应用程序结构 程序代码在编译后生成可执行的应用,我们首先要了解这种可执行应用程序的结构. 应用程序结构分为应用程序域—程序集—模块—类型—成员几

利用Shell命令获取IP地址

一 :获取单个网卡的IPv4地址,方法如下: 方法一:$/sbin/ifconfig ethX | awk '/inet addr/ {print $2}' | cut -f2 -d ":" 方法二:$/sbin/ifconfig ethX | awk '/inet addr/ {print $2}' | awk -F: '{print $2}' 方法三:$/sbin/ifconfig ethX | sed -ne 's/\(.*\)addr:\([[:digit:].]*\)\(.*

理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置

本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 (2)Swift 原理和架构 (3)Swift 监控 (4)Swift 性能 要实现的系统的效果图: 特点: 使用三个对等物理节点,每个节点上部署所有Swift 服务 使用开源的 UCARP 控制一个 VIP,它会被绑定到三个物理网卡中的一个. 使用开源的 HAProxy 做负载均衡 开启 Swift

第三章 EnumUtil根据值获取枚举对象

项目中使用枚举类的好处这里不再赘述,在使用枚举值时,通常需要根据值来获取枚举对象,下面介绍两种实现方案: 1.在枚举类中定义方法实现 首先给出如下性别枚举类: public enum SexEnum { MAN("M", "男"), WOMAN("F", "女"); private String code; private String desc; SexEnum(String code, String desc) { thi