19 赞同
6 评论
38 收藏

内网的一篇文章很好的解答了这个问题 ,作者:张传明


一个功能正常的手机,总是能够受到各种无线信号,这些无线信号的“局部唯一性”,是该设备能定位的关键前提。什么叫局部唯一性?我们再把这些具体的信号来展开解释下你就知道了:


基站信号:

一个手机能够接打电话、收发短信,说明该手机能与附近基站发起交互,收发信号。特别地,对于智能手机,还可以通过系统的接口得到基站ID。正常情况下,每个基站ID是全球唯一的,这样如果扫到了某个基站ID,我们又知道该基站的位置,便能粗略估计设备的位置。做出这个推测的前提就是一个基站的信号发射范围是有限的,正常的手机,不可能在相距这个基站很远的时候,还收到这个基站的信号。


在无线通信相关的教科书里,讲到基站定位,总是会谈到三角定位,也就是下图描述的原理。下图是很容易理解的,一个手机能扫描到三个基站的信号,因此其必然在三个基站的共同覆盖范围内,从而推算的范围就大大缩小。但现实是很骨感的,在现在的智能手机上,只有极少数的手机可以获取到多个周围的基站ID,而且也无法反算出和这些基站的距离,所以这个算法除非电信运营商自己可以试试,对于别人是没有实战价值的。在实战中,只能是退而求其次,基于单个基站来定位。

WIFI信号:

现在的智能手机都支持wifi上网了,而我们连接的每个wifi路由器(包括手机做移动热点的那种),都有全球唯一的MAC地址。更重要的是,wifi路由器的部署成本低,因而非常普遍,在一个楼层里就会有很多个wifi热点。因而不难想到,一旦我们有了这个全球每个路由器的实际位置,那么我们就可以基于用户手机扫描到的周围wifi热点,确定用户当前的位置。


说到这里,有的朋友会问,如果一个人带着手机,开着移动热点到处行走,还有那种地铁、高铁、公交车上的移动wifi,岂不是就会引起定位的错误?答对了,确实是这样,而且根据统计,这种情形还在愈演愈烈。因此,如何想办法来迅速过滤这种移动热点,是个值得研究的问题。


GPS信号:

如果手机在室外或者窗边,那么就可以接收到天上的定位卫星发射出来的信号,基于这种信号,可以推算手机到每颗卫星的距离、卫星位置,进而推算出手机的位置来。需要注意的是,这个解算是在GPS芯片中完成的,在手机操作系统层面上,可以直接通过API接口得到解算的结果和误差半径。


对于GPS的原因我们不多解释,但在调用时要注意两点。第一就是GPS的初始定位是很耗时间的,对于老一些的芯片,可能要耗费几分钟才能冷启动定位成功;第二是GPS精度并非是完全可依赖的,在一些地方达到几百米都有可能。


其他

以上三种是最常用的定位方式,此外还有蓝牙/IP /地磁场等手段,对于他们的优缺点,我们汇总如下:





开发者如何实现定位能力

千千万万的app难道者都如上述说的,“自行维护基站、WIFI数据库”吗?答案当然是否定的,在实际的工程实践中,主流的做法是两种:


手段之一:调用系统级定位能力

无论哪个系统(IOS、安卓、WP)都提供了一套系统级定位能力,这样的定位能力,对应着是一套系统级API,这个API一般来说,总是会有如下几个精度的选项:


  • 高精度:能搜到GPS卫星,则使用GPS定位,否则,则使用WIFI定位,如果WIFI和GPS都无法定位成功,只能根据基站来给出定位结果了。

  • 平衡功耗:禁用GPS(因为它非常耗电),优先使用WIFI,如果WIFI不可用,则用基站来进行定位。

  • 低功耗(被动定位):根据不同系统的规定,实现方式也不同,但大体上都是共享其他app的定位结果,即其他app以高精度、平衡功耗的方式得到位置,那么这个位置也一并推送给当前使用“低功耗定位”的app,也就是该app不消耗额外的能耗,就完成了定位。


当然,这种系统级定位能力是有着软肋的,软肋在于以下两点:


  • 在基站、WIFI定位能力上,系统定位能力取决于系统自己在这方面投入数据收集推算的能力,这个是参差不齐的。举个简单的例子,百度和高德在中国采集了成百上千个公共场所的室内定位信息,使之能达到米级的室内定位,苹果做了吗?谷歌做了吗?微软做了吗?他们怎么和国内的服务商拼效果?居然还有人说苹果定位和谷歌地图在国内定位准,我真是醉了。


  • 在中国,google的服务不可用,考虑到基站、WIFI定位必须连接服务端发请求,因而Android的系统级定位能力的可用性也会有很大的影响,至少那些“水货”手机,在中国基本就没法调用系统定位服务了,而行货手机,相应的厂商会改造这个API接口的实现,使得其重定向为请求国内某些定位服务商,从而使得这个接口重新变得可用(对开发者来说,他并不需要知道这个API是如何实现的)。


但是,我们不得不承认,在IOS和WP系统上,因为OS没有开放出读取基站和WIFI的接口,因此实际上操作系统的定位能力已经形成了垄断,开发者也就无法实现自主的定位能力。这也会导致在苹果和WP手机上,所有的app在同一时刻的定位误差,都是一样的。


手段之二:调用第三方定位SDK

对于可以公开读取基站、WIFI信息的Android手机系统,国内的百度、高德等地图厂商自行实现了定位SDK,该定位SDK的作用就是通过系统接口读取到原始定位信息,然后借助于各家自行部署维护的数据库,查询到当前扫描到的基站、WIFI的位置,最终计算出更准确的定位结果,通过SDK的接口,返回给开发者。这么做的好处,在于能够让app的定位能力脱离对手机系统的依赖。


举个例子,一个app他如果只是调用系统定位接口,那么在行货手机,由于手机厂商已经把定位的网络服务器重定向为国内定位服务商,所以肯定可以定位,但是在水货手机上因为系统底层是直接连google服务器的,就会无法定位。但用户就是上帝,出现了这个事情在用户看来,就是不能接受的,为了保证app在所有手机上都可以定位,开发者就会不得不使用第三方的独立定位SDK。

编辑于 2016-04-05 · 著作权归作者所有

PHP网站源码金华关键词按天计费价格淮北如何制作网站报价海东企业网站设计价格德阳企业网站设计报价潮州SEO按效果付费多少钱郑州百度网站优化排名龙岩网站优化按天计费哈尔滨品牌网站设计多少钱黄冈网站搜索优化推荐南昌建设网站哪家好衡水建网站报价驻马店企业网站改版推荐阜新百姓网标王廊坊模板推广推荐衢州企业网站改版株洲百度关键词包年推广哪家好绵阳网站推广方案多少钱广元模板网站建设报价柳州seo优化价格伊犁网站制作报价绍兴关键词排名多少钱六安关键词排名哪家好宝鸡阿里店铺托管报价烟台网站改版公司十堰外贸网站制作价格和田百搜标王价格广元模板推广推荐武汉网站seo优化广安模板网站建设价格恩施SEO按天扣费公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化