在安卓项目使用百度地图过程中,发现地图定位在莫名其妙的时候,不定期自动跳转到几内亚湾。
在查找问题时,有人说是动态权限的问题,所以去检测动态权限;
有人说缺少包是,去检测百度包,并做升级;
有人说是定位出现错误,我把项目中所有使用到定位信息的位置都打印成log检测。
做了上面一些发现还是不能解决问题。
然后又把百度源码下载下来比对。也不能发现问题。
然后在仔细检查代码中发现,在百度地图的onSensorChanged中,有GPS值是设置的0.00,、
如下代码:
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
double x = sensorEvent.values[SensorManager.DATA_X];
if (Math.abs(x - lastX) > 1.0) {
mCurrentDirection = (int) x;
MyLocationData locData = new MyLocationData.Builder()
.accuracy(mCurrentAccracy)
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(mCurrentDirection).latitude(0.00)
.longitude(0.00).build();
mBaiduMap.setMyLocationData(locData);
}
lastX = x;
}
然后将latitude()、longitude()中设置一个动态取的GPS值试试,发现就是这个问题。
修改后比对之前的代码,发现真的是手机在旋转获取sensor时会跳转到大西洋,所以这个问题解决。
本文详细记录了在安卓项目中使用百度地图时遇到的定位漂移问题,特别是地图在某些情况下自动跳转到几内亚湾的现象。通过深入分析代码,最终发现在onSensorChanged方法中对经纬度值的不当设置导致了这一问题。修正后,有效地解决了手机旋转时地图定位跳转至大西洋的异常。

被折叠的 条评论
为什么被折叠?



