在设备开启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 帐号和密码,如果没有,这里免费注册https://developer.here.com/sign-up?create=Freemium-Basic&keepState=true&step=account
以我手头的 Windows 和 HERE Positioning API 的 WLAN Positioning为例。
1 获取周边WiFi信息,可以使用 netsh 命令查到当前扫描到的AP。
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!
• 作者: Xiaoyan Mu
• 部落格连结: https://www.kikitamap.com/2019/03/05/Icecream_Part1_Basemap_Setup/
• 着作权: The author owns the copyright, please indicate the source reproduced.