如何获得你的准确位置及iphon手机应用定位不准原因分析

相信做APP的大都要用到高德地图和百度地图,并且用到获取用户位置的功能。那么你会发现,你对地图接口设置了过滤精度,结果你获取的位置很不准确,经常你在路上跑,结果在你的应用上看到你的车在河里游,让人泪流满面。来我告诉为何这样坑你你怎么获取用户的准确位置。

首先IPHONE的GPS定位在全球都能获得位置信息,不像安卓那么苦逼进了房间就定位不到位置了。若是你在一个山头的背面在搞得地图上定位不到你的位置,并非你的地图没有收到GPS位置信息,而是你的地图没有收录你的坐标信息,。这个场景我在杭州虎跑后山的马儿上岗附近的山头测试过,再一个山头背面我写的测试应用收到GPS位置信息,但是高德地图和百度地图都没有定位信息。在上天竺山头上,我的手机从4G切换到3G网络,我写的应用收到GPS位置信息,高德地图和百度地图都没有定位信息,百度地图能加载地图完毕,高德地图加载不出来。经过测试IPHONE的应用,只要开启时有网络,以后把网络关闭,那么你的手机应用仍旧能收到位置信息,所以IPHONE获取的是GPS位置信息。不像安装又是基站定位,GPS定位,网络定位N多种情况。但是IOS的GPS位置信息精度仍然受到建筑物,山脉等障碍物的影响。如经过测试在我们公司的主楼6楼上,一般开启高德地图,获取的精度大约是65,再公司外面大门口的精度可以达到10米–20米。

以高德地图为例:

高德有两种位置过滤位置信息的设置:设置过滤距离,设置期望精度。

_mapView.distanceFilter = 20.0;

// _mapView.desiredAccuracy = kCLLocationAccuracyHundredMeters;

当你设置了过滤精度后,实际上当你的应用启动时,有3个精度都超过20米(达到65米精度)的点进入if(updatingLocation)的下面的语句。并不是你期望的位置坐标,以后还有精度达到20米–45米的点进入里面,所以是期望吗?不靠谱。

-(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation
updatingLocation:(BOOL)updatingLocation
{
    if(updatingLocation)
    {
         //保存位置信息和位置相关操作,如画车子的运行轨迹

     }
}

言归正传,如何获得精度达到20米的点呢,当然要靠进度来判断了。注意若某片区域GPS信号不好,收不到精度达不到20米的位置信息,那么你可能过滤掉所有的位置信息,那么你的车在这个区域将没有轨迹。谁让你过滤的太狠呢!你对我太狠我人间暂时人间蒸发一段时间。

正确的获取位置代码是:

-(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation
updatingLocation:(BOOL)updatingLocation
{

    if(updatingLocation)
    {
                                     if(userLocation.location.horizontalAccuracy <= 20.0)
            {
                //保存位置信息和位置相关操作,如画车子的运行轨迹
            }

     }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-28 14:37:16

如何获得你的准确位置及iphon手机应用定位不准原因分析的相关文章

【Android】第18章 位置服务和手机定位&mdash;本章示例主界面

分类:C#.Android.VS2015: 创建日期:2016-03-04 一.简介 目前,基于位置的服务发展迅速,已涉及到商务.医疗.定位.追踪.敏感区域警告.工作和生活等各个方面.定位服务融合了GPS定位.移动通信.导航等多种技术,从而获取用户终端设备的位置信息,为移动用户提供了与空间位置相关的综合应用服务. 这一章我们主要以安卓内置的定位服务和百度定位服务为例,演示定位服务(Location Service)的基本用法. 二.本章示例主界面 1.运行截图 2.MainActivity.cs

手机怎样定位老婆和别人的所在具体位置

手机怎样定位老婆和别人的所在具体位置Q-Q:971-041-894定位[手機系列找回刪除等信息]这件事说来也是巧了,也算是他们上级领导的矛盾吧,因为公司与另一个公司之前有一点合同上的纠葛,所以老板在发函以前之前让我跟对方公司现承认一下,看是不是真的要闹到这个地步,因为我是担任这个项目的,相对在状况上回对比的了解,那个时分我刚好在外面,所以只能用自己的手机打以前了,这也没什么,不便是知会一声吗,当然的,两头的利益不是那么快就可以到达的,所以发函这个工作仍是进行了请问我的苹果5s手机被偷关还能机么定

《位置计算:无线网络定位》学习小结

第一章:无线定位概述 单跳定位:WiFi,GPS,NBIOT等单跳网络结构的定位 多跳定位:传感网.物联网等无线自组织网络的网络定位(多跳定位) 无论何种定位技术,都离不开以下3个主要环节: (1)物理测量. 对物理世界的测量手段包括WiFi,GNSS,BlueTooth,Qcell,NBIoT,UWB,红外,光波,声波,超声波.测量结果的表示包括:距离.时间.方向.区域.连接关系和信号指纹.只要信号具有位置区分性,都可以用来定位. (2)位置计算. 测量结果不同,定位的计算方法也不同.测距方法

位置指纹(LF)定位技术简介-室内定位

    信号的多径传播对环境具有依赖性,呈现出非常强的特殊性.对于每个位置而言,该位置上信道的多径结构是惟一的,终端发射的无线电渡经过反射和折射,产生与周围环境密切相关的特定模式的多径信号,这样的多径特征可以认为是该位置的“指纹”.基站天线阵列检测信号的幅度和相位等特性,提取多径干扰特征参数,将该参数与预先存储在数据库中的指纹数据进行匹配,找出最相似的结果来进行定位.     位置指纹定位的实施一般可以分为两个阶段:第一阶段为训练/离线阶段,主要工作是采集所需定位区域各参考节点(RP,Refer

Android tips(十)--&gt;允许模拟位置在Android M下的坑

转载请标明出处:一片枫叶的专栏 本文我们将讲解允许模拟位置在Android M下的坑.做地图类应用的同学应该都知道为了避免软件模拟位置影响正常流程的进行我们一般都会判断用户手机是否打开了模拟位置设置,若打开了则终止用户流程,提醒用户关闭模拟位置设置.在android系统的开发者选项中有一个模拟位置的选项,其作用是允许用户通过代码模拟设备的当前位置,比如地图类应用需要测试在外地的使用情况,通过开启此项选项可以通过代码模拟位置,具体可参考我的:Android中的开发者选项 允许模拟位置的设置选项在手

html5 Geolocation(地理位置定位)学习

1.html5 Geolocation html5 Geolocation API 使用很简单,请求一个位置信息,如果用户同意,浏览器会返回一个位置信息,该位置是通过用户的底层设备(手机,电脑) 提供给浏览器.位置信息一般包括经度和纬度信息! 经度和纬度坐标信息一般由两种方式表示 a.十进制表示:39.17222 b.DMS角度格式表示:39°10'20" 2.位置从哪里来 html5 Geolocation API不指定设备使用哪种底层技术来定位应用程序的用户,相反,它只是用于检索位置信息的A

社会友谊和人群移动:基于位置的社交网络中的用户移动(一)

原文标题:Friendship and Mobility: User Movement In Location-Based Social Networks 作者单位:斯坦福大学    发表日期:2011年 会议:第十七届 ACM SIGKDD 国际会议--知识发现和数据挖掘 引用:Cho E, Myers S A, Leskovec J. Friendship and mobility: user movement in location-based social networks[C]// P

内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)

转载来源:http://www.cnblogs.com/protected/p/6419217.html 侵删! 程序运行时,有六个地方都可以保存数据: 1. 寄存器:这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配.我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹. 2. 堆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中(new 出来的对象).驻留于常规RAM

利用高德地图完成用户地图选址,包括搜索位置和标签固定居中

这两天一直捣鼓着地图的选址功能,需要达到的要求是:1,能用户定位  2,大头针固定在地图中心,拖动地图停止后获取到该大头针的位置信息    3,能通过搜索框搜索到我们输入的地址 主要思路:大头针分为两个   一个是用户的位置大头针  另一个是所选取的位置的大头针(包括拖动后的大头针和搜索功能查找到位置的大头针,公用一个大头针  )并且两个大头针都成为控制器器属性. 我使用到的高德地图sdk是: 'AMap3DMap' , '5.2.1' #高德3D地图 'AMapSearch' , '5.2.1