主要有四种方法:按精度高低,依次是GPS定位, WIFI定位,基站定位,IP定位。其实,如果有离线数据在本地,那不联网也能定位,参见百度地图离线导航定位的原理?,
不过,联网时,定位精度可能会更好些。HTML5提供了地理定位的接口,而具体实现虽然因每个浏览器而异,但也是下面这几种方式。
No1. GPS定位
这个需要GPS模块硬件,一般电脑上没有这个模块,所以无法使用。GPS定位是不消耗网络流量的,因为是与卫星通信,可以不用连接互联网,我们之所以要连接互联网,
只是因为没有使用离线地图。车载GPS就用的是离线地图来导航的。如果你手机上使用离线地图,那也可以不耗费流量就能导航。参见百度地图离线导航定位的原理?
GPS有分冷启动,温启动,热启动。温启动是有卫星的历书、用户概略位置及本地时间,这种情况可以用来预报哪些卫星是可见的以及卫星到用户的大概距离,
来减少搜索信号需要的时间。在信号捕获到到能定位还需要一段时间,这部分时间是通过解调信号中含的导航电文来获取星历,获取星历后才能计算卫星的精确位置,
收齐四颗星以上就可以解算出用户坐标了。历书有效期很久,可以到一年。但星历有效期只有两小时。如果上次定位后两小时内开机就是热启动了。冷启动就是不满
足温启动和热启动的条件。至于联网后定位更快,是因为联网一可以通过基站定位确定用户的概略位置(几百米内),二可以直接从网上获取星历。这样信号搜索时间
加快,也不用等电文中星历收齐,几秒内就可以定位。还有获取星历后可以压缩搜索范围并提高灵敏度,特别在车内(贴有金属遮阳膜时信号衰减严重)等信号弱的地
方,如果灵敏度不高可能很难捕到信号。
作者:罗洛
链接:https://www.zhihu.com/question/23528331/answer/91451592
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
No2. WIFI定位
手机肯定是支持的,电脑的话,要求有无线网卡才行。我的电脑有无线网卡,但目前用的是有线上网,在百度新版地图上,能比较准确的定位到我所在的小区,误差300多米。
因为电脑定位的手段主要就是WIFI和IP,而IP不可能定位到这么精确,所以只能是WIFI定位的。只要能搜索到WIFI信号,并且这些WIFI信号至少有一个服务器上有记录,那
就可以被定位。
1.每一个无线AP都有一个全球唯一的MAC地址,并且一般来说无线AP在一段时间内是不会移动的
2.设备在开启Wi-Fi的情况下,即可扫描并收集周围的AP信号,无论是否加密,是否已连接,甚至信号强度不足以显示在无线信号列表中,都可以获取到AP广播出来的MAC地址
3.设备将这些能够标示AP的数据发送到位置服务器,服务器检索出每一个AP的地理位置,并结合每个信号的强弱程度,计算出设备的地理位置并返回到用户设备
4.位置服务商要不断更新、补充自己的数据库,以保证数据的准确性,毕竟无线AP不像基站塔那样基本100%不会移动
这样的位置服务商现在来说只有Skyhook和Google两家,国内的百度,高德很可能也用这种方式。他们是怎么收集WIFI的GPS的呢?
1.主动采集
Google的街景拍摄车还有一个重要的功能就是采集沿途的无线信号,并打上通过GPS定位出的坐标回传至服务器,这样就有了这些WIFI的GPS位置
2.用户提交
Android手机用户在开启“使用无线网络定位”时会提示是否允许Google的定位服务手机匿名地点数据(add by zhj: 按我的理解,应该是当用户打开GPS和WIFI
会向Google提交这些WIFI及其当前GPS)
WIFI定位的条件:
第一,要打开WIFI,并能搜索到附近至少一个WIFI,是否连接不影响定位
第二,在定位服务提供商,比如百度,高德,谷歌那里记录有该WIFI的GPS。
作者:小韩韩
链接:https://www.zhihu.com/question/20593603/answer/16523229
来源:知乎
No3. 基站定位
只用于手机,因为电脑不连接基站。
基站定位也是不耗费流量的。基站定位的精确度主要取决于当前所处环境的基站密度。由三个和三个以上基站来确定移动终端的大体位置,密度越高精确度自然越高。
当然也会收到网络环境影响造成较大程度的偏差。
参考http://bbs.feng.com/read-htm-tid-7709847.html
手机在插入sim卡开机以后,需要搜索周围的基站信息(就是找信号),通常在有信号的地方,手机能搜索到的基站不止一个,就像你的笔记本在小区
里能搜到不止一个开着的路由器一样。然后手机会自动从这些基站中选择信号最好的(假如是基站A)连接注册。其余的基站就不用了吗?不不,手机仍然搜
索着它们,一旦你离开基站A一段距离,基站A的信号不如基站B了,手机会自动切换成基站B。这也就是为什么同样是待机一天,你在火车上比在家里耗电要多
的原因,手机需要不停的搜索、连接基站。
当手机的网络覆盖到一定程度的时候,基站定位也就应运而生了。其原理如下:众所周知,距离基站越远,信号越差,所以用信号的强度可以大致估计
机同时搜索到至少三个基站的信号时(现在的网络覆盖这是很轻松的一件事情),手机除了连接信号最好的一个外,同时根据基站信号的强弱,大致估计出距
离基站的远近。由于基站位置是确定的,所以确定位置是很容易的,只需要以基站为圆心,距离为半径多次画圆即可,不过至少需要三个基站的信号才可以。
定位条件是必须在有基站信号的位置,手机处于sim卡注册状态(飞行模式下开wifi和拔出sim卡都不行),而且必须收到3个基站的信号,无论是否在室内。但是,定位速
度超快,一旦有信号就可以定位,目前主要用途是没有GPS没有wifi的情况下快速大体了解下你的位置(比如可以使天气预报走到哪儿更新到哪儿)。另外,如果你的手机
里没有基站位置数据包,还需要联网才行。
No4. IP定位
HTML5定义了地理定位接口,对于firefox/chrome,使用的是Google的定位服务,它会向Google服务器上传你附近可以搜索到的WIFI信息,还有你的IP,Google定位时
就会用到这些信息。参见https://www.mozilla.org/zh-CN/firefox/geolocation/,IP定位的精度是比较差的,最多也就是精确到城市一级,对于联通,IP是手机号归属地,
比如我的手机号是北京的,那我去南京,那IP还是北京的。对于移动(电信貌似也是),IP是所在地的,即我去南京,那IP就是南京的