WiFi Network Positioning
在设备开启WiFi之后,会对周边 WiFi Access Point (AP)进行扫描,并将这些可见WiFi名称推给用户供选择。这是几乎是我们的PC和手机的日常。 除了连接WiFi登录Internet 之外,实际上,我们还可以通过 WiFi AP进行定位。
定位和地图一直是紧密联系的,无论是面向消费者的第一人称应用,还是关于管理者的追踪需求。各大LBS厂商,早就提供了各种定位功能,尤其HERE,Positioning 历史可以追溯到 Nokia年代,包括基于 GPS,WiFi network,Cell Signal,Bluetooth 等各种信号源的定位能力。
Concept
除了Mobile Hotspot、WiFi Egg,大多数情况下 AP不会经常的移动, 这就为WiFi定位的基础参照位置信息;
理论上,每一个 AP 都有全球唯一标识符— mac地址;当然也不排除有重复mac的问题,至于如何去重和更新后端数据库就是 another story,这里不展开了;
设备WiFi扫描到AP即可同时获取AP的信息,信号的强度,mac地址(BSSID)等,无论是否连接上;
根据WiFi信号强度衰减和距离的函数,可以判断设备离AP的距离;如果多个AP存在,那么这多个圆相交的区域就可以判定设备的位置;
从上面的原理可以看出,AP的位置越准确,设备扫描到的AP越多,那么设备的位置越准确。
Quick Testing
做个小测试,帮助快速理解。
假设已经拥有了 HERE Developer 账号和密钥,如果没有,这里 免费注册。
以我手头的 Windows 和 HERE Positioning API 的 WLAN Positioning为例。
1 获取周边WiFi信息,可以使用 netsh
命令查到当前扫描到的AP。
netsh wlan show networks mode=BSSID
1 | C:\WINDOWS\system32>netsh wlan show networks mode=BSSID |
2 使用收集到的 BSSID 发送类似 这个示例 中的请求即可,so easy!
当然, 这只是 online WiFi positioning, 还有更黑科技的 offline positioning,有空再更。
Demo Screenshot
Chian HLS JS API + Global Positioning API
Global HLS Imagery View
Have Fun!