电商网站设计公司立找亿企邦,山东德州网站建设哪家最好,怎么向google提交网站,中国制造网外贸平台多少钱前言#xff1a;关于地理位置及定位系统#xff0c;在iOS开发中也比较常见#xff0c;比如美团外面的餐饮店铺的搜索#xff0c;它首先需要用户当前手机的位置#xff0c;然后在这个位置附近搜索相关的餐饮店铺的位置#xff0c;并提供相关的餐饮信息#xff0c;再比如最…前言关于地理位置及定位系统在iOS开发中也比较常见比如美团外面的餐饮店铺的搜索它首先需要用户当前手机的位置然后在这个位置附近搜索相关的餐饮店铺的位置并提供相关的餐饮信息再比如最常见的就是地图导航地图导航更需要定位服务然后根据用户的目的地选出一条路线。其实作为手机用户这么长时间或多或少会发现在有些app应用首次在你的手机安装成功后首次启动可能就会提示是否同意XXx(比如百度浏览器)获取当前位置等这样一类的信息。可见地理位置及定位系统是企业app开发必不可少的技能。 本章将提供Swift版本和Objective-C两个版本的入门代码分别实现显示当前手机或者是模拟器的地理经纬度坐标。 写在正式学习前的小贴士 这是因为xcode升级造成的定位权限设置问题。升级xcode6、xcode7以后打开以前xcode5工程程序不能定位。工程升级到xcode6或xcode7编译时需要iOS8 要自己写授权不然没权限定位。解决方法首先在 info.plist里加入对应的缺少的字段 值设置为YES前台定位写上边字段前后台定位写下边字段 NSLocationWhenInUseUsageDescription //允许在前台获取GPS的描述 NSLocationAlwaysUsageDescription //允许在前、后台获取GPS的描述 设置的图示 好了如果设置好了那就正式进入编码学习吧首先熟悉苹果提供的关于定位服务相关的类方法以及属性 1、定位服务和地图应用的介绍 定位服务 获取用户当前的位置信息针对用户的位置信息做相关的数据处理。 地图应用 根据实际需求展示地图和周边环境信息基于用户当前位置展示用户所关注的地图位置信息、以及为用户导航。 定位服务要掌握的 主要操作的类CLLocationManager所属库CoreLocation结构体CLLocationCoordinate2D经纬度、CLCLocationCoorRegion区域地图应用需要掌握的 框架MapKit操作类MKMapView2、定位服务 属性 desiredAccuracy设置定位精确度这是一个常量属性一般用bestdistanceFilter 重新定位的最小变化距离 方法 设置什么时候开启定位的状态 requestAlwaysAuthorization() 始终开启定位requestWhenInUseAuthorization() 当app进入前台的时候开启定位(iOS8的新方法)类方法locationServicesEnabled() 是否有定位服务功能(CLLocationManager)startUpdatingLocation() 开启定位 代理 代理的协议代理的方法可以直接进入这个库的API查看只要就是定位错误调用的代理方法定位成功调用的代理方法等等 涉及到的对象 locations: CLLocation 该CLLocation对象的属性 coordinate longitude/latitude 英语词汇积累 accuracy 英 ækjʊrəsɪ n. [数] 精确度准确性filter 英 fɪltə 滤波器 过滤器筛选滤光器 过滤渗透用过滤法除去下面提供的是Swift源码 1 //2 // ViewController.swift3 // LocationManager4 //5 // Created by HEYANG on 16/1/26.6 // Copyright © 2016年 HEYANG. All rights reserved.7 //8 9 import UIKit
10
11 // 需要导入CoreLocation框架
12 import CoreLocation
13
14 class ViewController: UIViewController,CLLocationManagerDelegate {
15
16 // 声明一个全局变量
17 var locationManager:CLLocationManager!
18
19 override func viewDidLoad() {
20 super.viewDidLoad()
21 locationManager CLLocationManager()
22
23 // 设置定位的精确度
24 locationManager.desiredAccuracy kCLLocationAccuracyBest
25
26 // 设置定位变化的最小距离 距离过滤器
27 locationManager.distanceFilter 50
28
29 // 设置请求定位的状态
30 if #available(iOS 8.0, *) {
31 locationManager.requestWhenInUseAuthorization()
32 } else {
33 // Fallback on earlier versions
34 print(hello)
35 }//这个是在ios8之后才有的
36
37 // 设置代理为当前对象
38 locationManager.delegate self;
39
40 if CLLocationManager.locationServicesEnabled(){
41 // 开启定位服务
42 locationManager.startUpdatingLocation()
43 }else{
44 print(没有定位服务)
45 }
46
47 }
48 // 定位失败调用的代理方法
49 func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
50 print(error)
51 }
52 // 定位更新地理信息调用的代理方法
53 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
54 if locations.count 0
55 {
56 let locationInfo locations.last!
57 let alert:UIAlertView UIAlertView(title: 获取的地理坐标,
58 message: 经度是\(locationInfo.coordinate.longitude)维度是\(locationInfo.coordinate.latitude),
59 delegate: nil, cancelButtonTitle: 是的)
60 alert.show()
61 }
62 }
63 } 下面是Objective-C的源码 1 //2 // ViewController.m3 // LocationManager4 //5 // Created by HEYANG on 16/1/26.6 // Copyright © 2016年 HEYANG. All rights reserved.7 //8 9 #import ViewController.h
10
11 #import CoreLocation/CoreLocation.h
12
13
14 interface ViewController () CLLocationManagerDelegate
15
16 /** 全局定位对象 */
17 property (nonatomic,strong)CLLocationManager *locationManager;
18
19 end
20
21 implementation ViewController
22
23 - (void)viewDidLoad {
24 [super viewDidLoad];
25
26 CLLocationManager* locationManager [[CLLocationManager alloc] init];
27
28 // 设置定位精确度
29 locationManager.desiredAccuracy kCLLocationAccuracyBest;
30 // 设置定位变化最小距离
31 locationManager.distanceFilter 50;
32
33 // 设置定位服务的使用状态
34 [locationManager requestWhenInUseAuthorization];
35 locationManager.delegate self;
36
37 if ([CLLocationManager locationServicesEnabled]) {
38 [locationManager startUpdatingLocation];
39 }else{
40 NSLog(本机不支持定位服务功能);
41 }
42
43 self.locationManager locationManager;
44 }
45 // 定位失败调用的代理方法
46 -(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
47 NSLog(错误信息%,error);
48 }
49 // 定位数据更新调用的代理方法
50 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArrayCLLocation * *)locations{
51 if (locations.count 0) {
52 CLLocation* location locations.lastObject;
53 CLLocationCoordinate2D coordinate2D location.coordinate;
54 NSString* message [NSString stringWithFormat:经度%lf维度是%lf,coordinate2D.longitude,coordinate2D.latitude];
55 UIAlertView* alertView [[UIAlertView alloc] initWithTitle:显示当前位置的经纬度 message:message delegate:nil cancelButtonTitle:取消 otherButtonTitles:确定, nil];
56 [alertView show];
57
58 }
59 }
60
61 end 转载请注明出处http://www.cnblogs.com/goodboy-heyang/p/5161989.html