原生APP和H5定位存在偏差?地图定位原理剖析

前言

目前智能手机的使用已经很普遍了,手机定位是手机上的一个核心基础功能。生活中基于定位的应用场景也有很多,比如最常见的打车,司机需要知道你在哪里,同时打车软件也需要基于司机和乘客的位置规划一条路线,让司机更高效、精准的行驶到用户指定地点。这就是典型定位服务应用。当然,除了这种应用,还有很多定位的应用场景,用户位置本身的展示,也是地图产品中不可缺少的。

那么问题就来了

  • 作为 APP 的用户,你可能会好奇这个 APP 是如何知道你的位置,而作为 APP 应用开发者,是如何在程序中得到设备当前的准确位置?

  • 随着混合式 APP 开发覆盖率逐渐上升,在混合式 APP 应用中的定位模式与原生 APP 有何区别?

  • H5 开发中也会用到一些地图厂商 SDK 去获取定位,那 H5 中的定位和普通 APP 定位又有什么区别,相比之下会不会存在一些偏差呢?

定位其实是一个很复杂的问题,涉及到了很多知识点,但我们想要得出上述问题的答案,就一定要知晓定位的原理,这就是本文将要讨论的核心内容。

不同的定位方式

一个功能正常的客户端设备,是能够收到各种无线信号的,利用这些无线信号的局部唯一性,是定位该设备的关键前提。那么根据这些信号的不同,我们介绍下定位中最常使用的几种信号源。

基站信号定位

我国的基站包括移动、联通和电信等三大运营商基站。

基站定位是通过移动通信(SIM 卡)的基站信号差异,每次刷新基站时都会向就近最优基站鉴权。因此,通过用户出现的基站位置可以确认手机位置范围。另外,处于同一基站范围内但处于范围中的不同扇区,也会被标记。基站定位的准确度取决于定位地点附近所处的基站覆盖密度,如果基站多,定位则准确,如果是山区,基站少,则定位就不那么精确。

通俗来讲,一个手机能够接打电话、收发短信,说明该手机能与附近基站发起交互,收发信号。对于智能手机,我们可以通过本机系统的接口得到基站 ID。正常情况下,基站 ID 是全球唯一的,这样如果扫到了某个基站 ID,运营商又知道该基站的位置,便能粗略估算设备的位置。

当然如果手机扫到了多个基站 ID,比如一个手机扫描到三个基站信号,就确定了三个基站扇区,因此其必然在三个基站扇区的共同覆盖范围内,所以我们手机扫到的基站越多,那我们计算出的位置就会相对更准确些。但是不论是怎样,以这种方式我们计算得出的是一个范围,只是范围大小的差别罢了,很容易理解,这种方式的精度是不高的,通常这个范围在几百米,个别情况(基站少)甚至几公里都是可能的。当然这种方式也不是没有优点,基站定位的优点是对于环境(天气、高楼、位置)要求低,有基站信号的地方就可以定位,反之你要是在沙漠,没有基站,接受不到基站信号,直接就凉了。

Wi-Fi 信号定位

Wi-Fi 是我们日常生活中人人都会使用的东西,通过 Wi-Fi 信号来定位其实和基站定位是类似的,查了下资料,最早开发这个技术的是 Skyhook 公司,所以我们后面会拿它举例子来像大家解释如何通过 Wi-Fi 定位。
连接 Wi-Fi 需要无线路由器,我们可以通过实体线去接入路由器网络,也可以无线接入,而无线接入模式,我们叫它 AP,现阶段的城市中路由器遍布,也就是说 AP 信号是遍布的。其实能够在任意一个空间都能接收到 AP 信号也是每个城市的愿景。

路由器会持续发射 AP 信号,无论这个信号加不加密、有没有网络,只要路由器通上了电,就会发射,而这些 AP 信号中都包含路由器硬件的唯一标识,即我们常说的 MAC 地址。

信号这个东西,不是说只有我们的客户端(手机)连上路由才是接收到了,即使我们刻意没有连接到路由网络,或者是距离很远无法连接到,但其实还是可以侦听到这些 AP 信号的。

说回定位,我们的设备应用其实只要侦听下附近的 AP 信号(热点或者说 Wi-Fi 网络),再检测下每个信号源的强弱,然后把这些信息发给 Skyhook 服务器,Skyhook 服务器接收到数据之后,根据这些数据查询下每个信号源在数据库中的坐标进行运算,就可以知道客户端的具体位置了,然后把位置返回给客户端机器,也就是我们的设备应用,当然,这个过程中,同样是接收到的 AP 信号源越多,定位就越准确,因为每个信号源都有一个范围,通过范围和范围的交集加上各个信号源强度就可以更精确定位了。

原理就是这么简单,不过这种方式需要 2 个先决条件:

  1. 客户端可以上网,能够访问 Skyhook 服务器。

  2. Skyhook 数据库中要存储所有 AP 信号源对应坐标。

第一个我们好理解,所以我们直接说第二个,Skyhook 这种服务商,如何知道的 AP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值