获取手机朝向

题外话

如果需要的定位数据不需要精确,比如天气,这种获取城市级别定位的,只需要IP定位即可;

如果对定位的精确度要求比较高,对定位速度也有一定要求,则可以使用设备原生定位,获取GPS传感器数据,比如巡检功能,高德还增加了WIFI定位,通过获取设备所能连接的WIFI已经信号强度等信息,获取大致的位置信息,这个WIFI路由器的位置应该是在高德服务器中保存,根据路由器的MAC地址区分;

如果定位要求极高,对定位速度无要求,则可以使用手持专业设备进行定位,定位速度会慢一些,可能一个点位需要三十秒左右。

这些都是题外话,今天的主题是如何获取设备朝向。

实现

设备的朝向是由 加速度传感器陀螺仪 来测量,具体两个元器件的作用大家可以自行百度下。

由于我是原生开发,所以第一时间是寻找原生代码的解决方案,而且由于项目上在使用高德SDK中提出的新需求,所以第一时间去找了高德官网。

高德方案

官网可参考 高德-定位图标指示方向

Android满足需求,然而iOS端和高德地图有些耦合,所以想寻求另一种方案。

Cordova插件【采纳方案】

可参考Github地址:Github-cordova-plugin-device-orientation

可以正常使用,也是最终采用的方案。

Android端是通过实现 SensorEventListener 接口,并实现 onSensorChanged 方法。

iOS端是通过执行 CLLocationManager 中的 startUpdatingHeading 方法,并在 - (void)locationManager:(CLLocationManager*)manager didUpdateHeading:(CLHeading*)heading 中接收 设备朝向信息。

其实和高德的实现方式也是一致的。

JS API

在安装上面的插件的时候,发现插件警告,显示插件已被废弃,请换用 W3C Api,可参考 https://www.w3.org/TR/2016/CR-orientation-event-20160818/

插件警告

可参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Window/deviceorientation_event

但是发现不太可行,Android端虽然大部分情况返回正常,event.alpha可以返回与正北方的角度差,但是有时候返回的并不准。
而且在iOS端,在 WKWebview 中不能监听到 deviceorientation 事件。

JS api的方式,我不是前端,也没有多做探索,感兴趣的同事可以看下有没有解决方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值