在安卓项目使用百度地图过程中,发现地图定位在莫名其妙的时候,不定期自动跳转到几内亚湾。
在查找问题时,有人说是动态权限的问题,所以去检测动态权限;
有人说缺少包是,去检测百度包,并做升级;
有人说是定位出现错误,我把项目中所有使用到定位信息的位置都打印成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时会跳转到大西洋,所以这个问题解决。