网站源码下载免费源码,八旬老太做直播 什么网站,海外平台推广,衡水的网站建设部分LBS应用#xff0c;在打开app时获取当前的准确位置就能满足要求#xff0c;一直开着定位#xff0c;不仅会浪费流量也费电#xff0c;所以这里给大家推荐一个一次定位的解决方法。 步骤如下#xff1a; 1.开启定位#xff0c;请求获取位置信息。#xff08;注意在打开app时获取当前的准确位置就能满足要求一直开着定位不仅会浪费流量也费电所以这里给大家推荐一个一次定位的解决方法。 步骤如下 1.开启定位请求获取位置信息。注意iOS定位需要去请求定位权限在info.plist中添加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段 2.在定位回调中对返回的位置信息做一些处理保证位置信息的准确性。 a)位置信息可能有缓存所以要判断一下时间。 b)iOS的定位是越定越准的即进回调的次数越多定位的精确度越高所以要判断位置的水平精度是否有效。 c)不同的业务场景对定位的精准度要求不一样比如在室外叫出租车希望司机能准备的看到我的位置这时候需要与当前位置偏差越小越好在办公室内买东西只要标识出用户在某个楼里面就可以了。所以不同的业务场景我们需要进行不同的设置。 3.通过上面的三重判断终于获取了我所需要的位置信息这时停止定位悬崖勒马再也不用担心用户说“你的app怎么这么费电了”。 代码奉上这段代码也适用于定位按钮的功能点击一次定位按钮进行一次定位 #import ViewController.h#import MAMapKit/MAMapKit.h interface ViewController ()MAMapViewDelegate{ MAMapView *_mapView;}end - (void)viewDidLoad { [super viewDidLoad]; //配置用户Key [MAMapServices sharedServices].apiKey 用户Key; _mapView [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))]; _mapView.delegate self; //开启定位 _mapView.showsUserLocation YES; //开启定位} -(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocationupdatingLocation:(BOOL)updatingLocation{ if(updatingLocation) { //取出当前位置的坐标 CLLocation *newLocation userLocation.location; //判断时间 NSTimeInterval locationAge -[newLocation.timestamp timeIntervalSinceNow]; if (locationAge 5.0) { return; } //判断水平精度是否有效 if (newLocation.horizontalAccuracy 0) { return; } //根据业务需求进行水平精度判断获取所需位置信息100可改为业务所需值 if(newLocation.horizontalAccuracy 100){ //获取定位位置的经纬度 CLLocationCoordinate2D myCoordinate [newLocation coordinate]; // 纬度 CGFloat latitude myCoordinate.latitude; // 经度 CGFloat longitude myCoordinate.longitude; // 做所需的功能 …… //停止定位 _mapView.showsUserLocation NO; } } } 注意_mapView.showsUserLocation NO停止定位后定位小蓝点也同时从mapview上消失如果想看到你的定位点用获取的坐标加个annotation即可加annotation的方法请看这里http://lbs.amap.com/api/ios-sdk/guide/overlay/#annotation。 转载于:https://www.cnblogs.com/jessiemap/p/4381715.html