2 回答

TA贡献1876条经验 获得超5个赞
通常,一旦您启动应用程序屏幕,onSenorChanged 就会触发。
通过这种方式,在传感器值更改后,您尝试旋转地图对象上的标记,该标记将为空,因为它是异步调用。
在调用“rotateMarker”方法之前进行空检查。
例子:
If (mMap != null) {
// do rotate Map marker
}
注意:即使非常微小的变化,传感器值也会发生变化。只是为了提高性能,用 + 或 - 5 校准您的传感器值。
希望这些信息有帮助!

TA贡献1934条经验 获得超2个赞
我解决它。解决方案是避免在 OnMapReady 之前调用 mMap.addMarker。我首先使用它来避免 mMap 上的 null 以及标记位置上为 null 的 addMarker 错误。
if (save) {
temp_marker.remove();
temp_marker = mMap.addMarker(markerOptions.rotation(azimuth));
}
在我的 updateSensor 中,并在我的 getDeviceLocation 中添加了第一个位置标记后添加了这个:
save = true;
将保存定义为全局并初始化为假。
if (mMap != null)
没用。这就是为什么我很困惑。我没有注意到它在相同的语法中是双 nullPointerException。
添加回答
举报