首先,这个问题产生是因为我在使用 Uniapp 开发 app 的过程中发现定位功能是不准确的,这个不准确主要是针对在户外移动的时候。
我需要绘制用户行动轨迹,使用了 uniapp 的定位功能,但是会有明显偏移。大致方案如下:
- 分别用定时器触发 getLocation 和 locationChange 事件来获取定位
- 坐标系确认无误(其实 wgs84 和 gcj02,是固定偏移的,就算坐标错的轨迹应该是吻合的)
- 分别使用了原生定位/高德/腾讯定位,确认 appkey 是对的,因为如果使用错误的会无法定位
结果是当我在户外走动的时候,轨迹并不能和我的实际轨迹接近,甚至会出现比较大的漂移。我在 IOS 中,如果后台同时打开了其他地图,这个定位就会被修正回来。
例如我的附件,我实际是一直顺着路走的,但是轨迹并不是。这个情况在 ios 和 android 中都存在。
我就在想是不是 uniapp 的定位机制有问题,于是我使用 android 原生+腾讯地图实现了一个定位功能,轨迹是非常精确的。 我就想开发一个 android 插件引入腾讯地图的定位功能,由插件通过腾讯地图的 sdk 获取定位。
当我在 uniapp 插件工程里实现腾讯地图定位的时候,抛出了这个错误“ Invoker getLocation exception:java.lang.reflect.InvocationTargetException” 导致我不能继续实现定位方法。如果不使用 TencentLocationManger 相关方法,比如我自己单独实现个测试方法是没有问题的,可以在app 中使用。
请问一下,我该如何排查或者解决这个异常。
或者,如果有实现过轨迹功能,并且是比较准确的,请指教一下我是哪里实现有问题么。
如果需要我提供什么其他信息,请指出。
非常感谢。