您的位置:首页 > 移动开发 > Swift

iOS获取当前位置(基于Swift)

2015-07-03 16:22 169 查看
本人也是才开始学习ios,最近刚好在一边写应用一边学语言(swift),遇到需要获取当前位置,所以就在网上找了些代码!这里写出来,一是方便自己学习,二呢也为学习的新人提供点参考;

工程的建立就不说了 ,我们直接从代码开始:

首先我们得在info.plist文件中添加定位需要的属性:

1:LocationWhenInUseUsageDescription

2:NSLocationAlwaysUsageDescription

属性添加了,我们就可以在代码中操作了。

一般来说需要定位都是在app启动的时候,所以我在viewcontroller.swift中进行定位的代码编写,当然你的不一定。

好了,我们开始说代码:

首先我们继承

CLLocationManagerDelegate

我们需要的一些方法都在这里面

接着实例化:

let locationmananger = CLLocationManager();

这样我们就可以用locationmananger取我们需要的方法;

现在我们在

func viewDidLoad()

中开启定位功能,定位方式选择最好的

locationmananger.desiredAccuracy = kCLLocationAccuracyBest;

直接在当前文件中直接重载方法

locationmananger.delegate = self

在这需要判断ios的操作系统,苹果在ios8之后的定位增加了方法,我们需要添加它,才能在ios8之后的系统使用定位功能

func ios8() -> Bool{

return UIDevice.currentDevice().systemVersion == "8.4";

}

这里我只做了一个简单的判断,因为的的模拟器是8.4的,所以我只需要判断等于8.4就行了,在做应用的时候判断大于8.0就可以

判断系统后输入以下代码

if(ios8()){

//始终允许访问位置信息

locationmananger.requestAlwaysAuthorization();

//使用应用程序期间允许访问位置数据

locationmananger.requestWhenInUseAuthorization();

}

这样就可以在ios8以后使用定位了

任何开启定位

locationmananger.startUpdatingLocation();

viewDidLoad()的代码

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.



locationmananger.delegate = self;

//定位方式

locationmananger.desiredAccuracy = kCLLocationAccuracyBest;

if(ios8()){

//始终允许访问位置信息

locationmananger.requestAlwaysAuthorization();

//使用应用程序期间允许访问位置数据

locationmananger.requestWhenInUseAuthorization();

}

//开启定位

locationmananger.startUpdatingLocation();



}

开启定位之后,我们需要获取当前的经纬度已经错误信息,所以我们要用到两个方法:

定位刷新

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!)

定位错误信息

func locationManager(manager: CLLocationManager!, didFinishDeferredUpdatesWithError error: NSError!)

获取经纬度:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

//取得locations数组的最后一个

var location:CLLocation = locations[locations.count-1] as! CLLocation

//判断是否为空

if(location.horizontalAccuracy>0){

println(location.coordinate.latitude);

println(location.coordinate.longitude);

var lat = location.coordinate.latitude;

//停止定位

locationmananger.stopUpdatingLocation();

}

}

因为这里获取的位置信息肯定不止一个,所以我们只需要去数组的最后组信息即可

locations[locations.count-1]然后就是获取经纬度了

错误信息我这里是直接打印,你们需要根据错误做相关的操作,也在这里

func locationManager(manager: CLLocationManager!, didFinishDeferredUpdatesWithError error: NSError!) {

println(error);

}

现在我们可以调试了

由于我也是才开始学习ios,很多地方不懂,哪里写的有问题的,还请提出来,让我学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: