Swift使用CoreLocation,你必须要看这一篇

CoreLocation,在我们这里讨论的是一个最常用的东西,就是用Location Manger获取用户当前的位置。

整个的来说非常简单。只要这样:

import CoreLocation

需要使用整个框架,那么引入整个框架就是必须的。然后需要在你的类里实现一个protocol。就是CLLocationManagerDelegate,并在代码中实现protocol里的相关方法。分别是这样喝这样:

class ViewController: UIViewController, CLLocationManagerDelegate 

    //MARK: CoreLocationManagerDelegate
    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){
        println("get location")
        var location:CLLocation = locations[locations.count-1] as CLLocation

        if (location.horizontalAccuracy > 0) {
            self.locationManager.stopUpdatingLocation()
            println(location.coordinate)

            self.textLabel.text = "latitude \(location.coordinate.latitude) longitude \(location.coordinate.longitude)"
        }
    }

    func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
        println(error)
        self.textLabel.text = "get location error"
    }

这些代码的功能也很简单。获取用户的经度和纬度,之后在界面的UILabel中显示出来。

在viewWillAppear中开始获取地理位置,在viewDidDisappear里停止。手机费电的几个地方就包括地理位置过度频繁的更新这一项。所以,一定要记得不用的时候就不要再请求系统的GPS数据。否则,用户在设置的费电大户里是看得到的。

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.locationManager.startUpdatingLocation()
    }

    override func viewDidDisappear(animated: Bool) {
        super.viewDidDisappear(animated)
        self.locationManager.stopUpdatingLocation()
    }

只有这些代码还是没有办法工作的。因为,在iOS8里修改了政策。Look here 

if self.locationManager.respondsToSelector("requestAlwaysAuthorization") {
            println("requestAlwaysAuthorization")
            self.locationManager.requestAlwaysAuthorization()
        }

这个是为了兼容iOS7和iOS8的代码,加入了一个判断。在iOS8中需要询问用户是否同意使用位置信息,否则的话该功能不可用。那么加这个就可以么?NO!!!还需要在,这里就是重点了。在plist文件里配置一个选项。

说到具体的配置有两个,分别是:requestWhenInUseAuthorization()和requestAlwaysAuthorization()这两个请求方法。一个是用户使用的时候才用到定位,一个是一直在后台获取更新的定位信息。最后的一个在一定的时候会触发一个系统的提醒,说这个APP一直在后台获取你的位置信息是否允许之类的。这两个请求方法对应的plist配置也不一样,分别是NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription。至于在plist添加的方法,就是在plist中添加一个键值对,然后把请求允许对应的Key值复制粘贴进去就可以了。value值是什么都可以,这个值会在请求允许的对话框中显示出来给用户看。总之是你自己定的。

运行你的APP,你会看到请求提示了:

 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/4147165.html

时间: 2024-11-05 06:04:11

Swift使用CoreLocation,你必须要看这一篇的相关文章

如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(下)

上一篇文章发出来之后,为了掐死我,大家真是很下工夫啊,有拿给姐姐看的,有拿给妹妹看的,还有拿给女朋友看的,就是为了听到一句"完全看不懂啊".幸亏我留了个心眼,不然就真的像标题配图那样了.我的文章题目是,如果看了这篇文章你"还"不懂就过来掐死我,潜台词就是在你学了,但是没学明白的情况下看了还是不懂,才过来掐死我. 另外,想跟很多人抱歉,因为评论太多了,时间有限,不能给每个人回复,还望大家谅解.但是很感谢一直在评论区帮忙解答读者问题的各位,就不一一@了. 这里郑重感谢大

看了这篇文章怎么 怎么生气呢。。。。

问题描述 看了这篇文章怎么怎么生气呢....有同感的支持下.想骂作者....http://www.nb99.net/art.asp?id=1266 解决方案 解决方案二:把.netframework说的巨恶心!解决方案三:看那个人把Java吹的富丽堂黄的,他自己那开发出比Vista更好的系统来吗?解决方案四:这就是不懂乱吹解决方案五:顶解决方案六:这有什么好生气的?.NET不是给网吧机用的...Vista更不是给网吧机用的...至少在目前来看...因为他们的配置无法享受到快感只好发发牢骚...等

看了一篇文章,说天猫的商品详情页面是先存在本地,想请教这个想法的可行性

问题描述 我是初入行的实习生,比不了各位大牛,所以想请问一下,看了一篇文章,说天猫为了双十一,商品详情页这种访问量可以说是最大的类型页面,是先将页面框架保存在本地的,然后用户点开之后,请求数据时,将数据填充进去.我想了想,先用cookie保存现这种访问量超大的页面静态码html+js,然后ajax请求数据json,然后通过js动态绑定数据,感觉理论上好像可行,但是不知道具体实现是不是很难,还有这种做法对性能的提升和对服务器压力的影响有多大,望各位大牛指点一二 解决方案 解决方案二:文章的链接也共

PHP的XML分析函数(转) (介绍这个PHP里的XML分析函数的文章可不太有哦。。 看过这篇就应该清楚点了吧...

xml|函数 PHP的XML分析函数 首先我得承认我喜欢计算机标准.如果每个人都遵从这个行业的标准,互联网将会是一个更好的媒体.使用标准化的数据交换格式才能使开放的和独立于平台的计算模式切实可行.这就是我作为XML爱好者的原因. 幸运的是,我最喜爱的脚本语言不但支持XML而且对其支持正不断加强.PHP可以让我迅速将XML文档发布到互联网上,收集XML文档的统计信息,将XML文档转换成其它格式.例如,我时常用PHP的XML处理能力来管理我用XML所写的文章和书. 本文中,我将讨论任何用PHP内建的

贝叶斯机器学习到底是什么?看完这篇你就懂啦

雷锋网按:不少人都在机器学习的过程中听说过贝叶斯分类器,但它是如何与机器学习建立联系的?作者Zygmunt Zając 提供了一些基础概念,雷锋网也尝试对其中的一些概念进行简化说明,让小白们也能容易地理解贝叶斯在机器学习中所起的作用. 贝叶斯学派与频率主义学派 简单说来,贝叶斯学派认为,概率是一个人对于一件事的信念强度,概率是主观的. 但频率主义学派所持的是不同的观念:他们认为参数是客观存在的, 即使是未知的,但都是固定值,不会改变. 雷锋网参阅了一些资料,尝试以我们以前课堂上所学的概率论来解释

有关大数据,看这一篇就够了!

科技的进步在很多的时候总会超出我们的想象,试想如果未来我们一个人拥有的电脑设备超过现在全球现在计算能力的总和,一个人产生的数据量超过现在全球数据量的总和,甚至你的宠物小狗产生的信息量都超过现在全球数据量的总和,世界会发生什么呢?那就取决于你的想象力了. 大数据的初步理解 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据客户的需求,Google实时从全球海量的数字资产(或数字垃圾)

企业OA产品怎么选 看完这篇横评就懂了

几年来初创企业.中小型企业迅速涌现,也意味着企业级服务迎来春天.而这其中,对于OA的市场需求尤为明显. OA,即办公自动化,是使用频率最高的企业应用系统,不论是大型巨头还是小型初创企业,处理内部的各种流程.人员事务关系等等都依赖于OA软件的帮助.云计算时代,一键部署使用升级的特性让OA软件被更加广泛的应用. 阿里云市场做为国内最知名的软件服务交易交付平台,同样为用户提供了各类OA产品的一键购买部署服务.今天我们挑出了阿里云市场中的四款国内主流OA产品进行试用,从多个方面来考察各家产品的表现,希望

真的,关于深度学习与计算机视觉,看这一篇就够了 | 硬创公开课

今年夏天,雷锋网将在深圳举办"全球人工智能与机器人创新大会"(GAIR),在本次大会上,我们将发布"人工智能与机器人Top25创新企业榜",慧眼科技是我们重点关注的公司之一.今天,我们邀请到慧眼科技研发总监李汉曦,为我们带来深度学习与计算机视觉方面的内容分享.雷锋网雷锋网(公众号:雷锋网) 嘉宾介绍:李汉曦,慧眼科技研发总监,澳大利亚国立大学博士:曾任澳大利亚国家信息通信公司(NICTA)任高级研究员:人脸识别,物体检测,物体跟踪.深度学习方面的专家,在TPAMI,

震惊!Android 手机为什么没有 iPhone 安全,看完这篇你就知道了

  雷锋网按:如今智能手机和人的亲密程度几乎已经超过了伴侣,所以安全变得尤为重要.实际上,许多人都清楚 Android 手机的安全问题,但它们到底为什么赢得比 iPhone 差的名声呢?其实很多时候是一些基本的措施都没做好,就像本文中发现的问题.本文由雷锋网(公众号:雷锋网)编译自 Arstechnica,原文作者 Dan Goodin. 同很多打开页面正在阅读这篇文章的用户一样,笔者也是 Android 阵营的成员之一.每天当我们在零售商店徘徊,在城市街道穿梭,或者去哪里旅游,我们随身携带的