iOS一次定位解决方案(基于高德iOS SDK)

部分LBS应用,在打开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 *)userLocation
updatingLocation:(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人类“第六感”首次被证实,研究发现人脑具有磁场感应能力

新证据表明&#xff0c;人类磁感可以让大脑感应到地球磁场来源&#xff1a;神经科技摘要&#xff1a;科学界已经知道鸟类可以利用地磁场进行导航&#xff0c;除此之外&#xff0c;科学家在自然界许多物种中都发现了磁感应能力&#xff0c;生物的磁感受能力也一直在业内被称作生…

用S-函数编写Simulink中的正弦模块

1、用S-函数实现一个正弦波信号源。要求其幅度、频率和初始相位参数可由外部设置&#xff0c;并将这个信号源进行封装。 S-函数程序代码如下&#xff1a; function [sys,x0,str,ts] ch2example17Sfun(t,x,u,flag,Amp,Freq,Phase) % 正弦波信号源 switch flag, case 0 …

fdsgds

public class Demo {public static void main(){//dfdsfdsfdsint i10; } }转载于:https://www.cnblogs.com/beyondbycyx/p/4391175.html

2019计算与系统神经科学大会Cosyne 前沿研究汇总

来源&#xff1a;混沌巡洋舰摘要&#xff1a;计算神经科学是一门超级跨学科的新兴学科&#xff0c;几乎综合信息科学&#xff0c;物理学&#xff0c; 数学&#xff0c;生物学&#xff0c;认知心理学等众多领域的最新成果。关注的是神经系统的可塑性与记忆&#xff0c;抑制神经元…

MATLAB中的S-Function的用法(C语言)

1. S-Function简介 S-Function是system-function的缩写。说得简单&#xff0c;S-Function就是用MATLAB所提供的模型不能完全满足用户&#xff0c;而提供给用户自己编写程序来满足自己要求模型的接口。 2. MEX函数与M文件的区别 第一&#xff0c; MEX 函数能实现的回调函数比…

npm国内镜像介绍

这个也是网上搜的&#xff0c;亲自试过&#xff0c;非常好用&#xff01; 镜像使用方法&#xff08;三种办法任意一种都能解决问题&#xff0c;建议使用第三种&#xff0c;将配置写死&#xff0c;下次用的时候配置还在&#xff09;: 1.通过config命令 npm config set registry …

一文读懂民航客机飞控系统

来源&#xff1a;传感器技术摘要&#xff1a;埃塞俄比亚航空公司波音737 MAX 8型客机当地时间10日坠毁&#xff0c;这是时隔不到5个月&#xff0c;波音同一型号飞机发生的第二起空难。鉴于两起事故具有明显的相似性&#xff0c;越来越多的将目标指向了该型号的设计缺陷——飞控…

VC创建DLL动态链接库及其调用

1.1 创建dll项目 1.2 为dll项目编写源文件 头文件dllDemo.hextern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数。extern "C" _declspec(dllexport) int Max(int a, int b);//取较大值函数extern "C" _declspec(dllexport) int Mi…

10个免费开源的JS音乐播放器插件

点这里 音乐播放器在网页设计中有时候会用到&#xff0c;比如一些时尚类、音乐或影视类等项目&#xff0c;但这些 网页播放器 插件比较少见&#xff0c;所以这里为大家整理一个集合&#xff0c;也许会有用到的时候。 下面整理的播放器有些是支持自适应的&#xff0c;如果需要用…

用上AI、用好AI!AiRiA研究院“普惠AI,芯向边缘”战略发布会圆满举行

近年来&#xff0c;在万物智联的趋势下&#xff0c;物联网产业从概念炒作进入加速落地的实质性阶段&#xff0c;端侧数据处理能力与云端数据处理能力已变的同等重要&#xff0c;而AI芯片从“云端”走向“边缘”已呈现出不可逆的趋势。值此AI落地初探之年&#xff0c;为把“高高…

设置DIV半透明CSS代码:

设置DIV半透明CSS代码&#xff1a; div{filter:alpha(Opacity80);-moz-opacity:0.5;opacity: 0.5;} 说明&#xff1a; 1、filter&#xff1a;对win IE设置半透明滤镜效果&#xff0c;filter:alpha(Opacity80)代表该对象80%半透明&#xff0c;火狐浏览器不认 2、-moz-opacity&am…

百年科技的历史回顾与哲学反思

来源&#xff1a;科学的历程摘要&#xff1a;科学的社会化和社会的科学化是科学的世纪里两个基本的标志。回顾百年科技历程&#xff0c;不只是讲述一个历史故事&#xff0c;更是反省我们当下的处境。19世纪是第一个科学的世纪&#xff0c;二十世纪是第二个&#xff0c;当然也是…

Java知多少(28)super关键字

super 关键字与 this 类似&#xff0c;this 用来表示当前类的实例&#xff0c;super 用来表示父类。super 可以用在子类中&#xff0c;通过点号(.)来获取父类的成员变量和方法。super 也可以用在子类的子类中&#xff0c;Java 能自动向上层类追溯。父类行为被调用&#xff0c;就…

怎样写出简洁的css代码??★★★★

base.css 设置各种默认值&#xff1a; html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, …

《中国大数据产业白皮书及百强榜单》:一览中国大数据产业发展全局

来源&#xff1a;网络大数据摘要&#xff1a;近日&#xff0c;赛迪顾问重磅发布了《中国大数据产业白皮书及百强榜单》。《中国大数据产业白皮书及百强榜单》从大数据整体市场方向分享了相关洞见&#xff0c;对大数据产业未来发展趋势进行了分析和预测。并梳理中国大数据投资价…

MVC3学习 八 Action和result过滤器及日志处理

在项目中很多地方需要用到面向切面的思想&#xff0c;比如说身份验证、日志功能这些。 过滤器可以理解为在执行某个功能时&#xff0c;额外执行的一段代码&#xff0c;在MVC中有Action和result过滤器&#xff0c; 分别都是在执行前和执行后进行过滤的&#xff0c;具体代码如下&…

万字报告做空特斯拉:马斯克在操盘一场“庞氏骗局”|硅谷封面

来源&#xff1a; 腾讯科技摘要&#xff1a;美国价值投资人俱乐部VIC日前发表文章&#xff0c;从产品需求减弱、安全性能差、资金缺口巨大、伊隆马斯克或被免职等多个角度着手进行分析&#xff0c;称目前是全力做空特斯拉&#xff08;纳斯达克证券代码&#xff1a;TSLA&#xf…

内存对齐的规则以及作用

首先由一个程序引入话题&#xff1a; 1 //环境&#xff1a;vc6 windows sp2 2 //程序13 #include <iostream>4 5 using namespace std;6 7 struct st1 8 {9 char a ;10 int b ;11 short c ;12 };13 14 struct st215 {16 short c ;17 char a ;18 …

中国AI创新者论坛成功举办!这里有一份AI教育和医疗的落地秘籍

来源&#xff1a;THU数据派3月21日&#xff0c;由网易新闻、网易有道、清华数据院共同举办的以“创新&#xff0c;无界”为主题的“中国AI创新者论坛”在清华大学罗姆楼三层报告厅成功举办。律回岁晚冰霜少&#xff0c;春到人间草木知&#xff0c;初春的北京&#xff0c;顶级人…

C语言有参函数调用时参数间数据传递问题

C语言中在发生有参函数调用时&#xff0c;实参变量与形参变量之间的数据都是单向的“值传递”方式。包括指针变量和数组名作参数的情况。 C语言要求函数的实参要有确定的值&#xff0c;在函数调用时给形参分配相应的内存单元&#xff0c;同时将实参的“值”赋&#xff08;复制&…