我正在尝试在用户改变方向时旋转 map View ,即如果用户左右转动它应该相应地旋转。我正在根据当前位置旋转 map View 轴承它正确旋转但它在抖动。这是我用于旋转的代码
public void onGPSUpdate(Location location)
{
boolean check=isBetterLocation(location, tempLoc);
tempLoc=location;
if(check){
showLocation(location);
}
}
isBetterLocation method is copied from google docs for better location.
private void showLocation(Location loc){
mRotateView.rotate(-loc.getBearing());
}
我注册了一个时间间隔为 0 且最小距离为 10 的位置更新以进行频繁更新。我的问题是 map View 总是抖动,谁能告诉我如何像其他应用程序(如位智 map )一样平滑地旋转 map View .谢谢...
最佳答案
您是否尝试以平滑的方式旋转 map ,例如一次旋转一个度,或者只是让它在位置更新时从 A 度旋转到 B 度?
有点像
while (oldAngle != newAngle)
{
mapView.rotate(newAngle);
// this is where you would decied to add or subtract;
newAngle ++ or -- ;
}
不确定这是否会正常工作,因为循环会运行得非常快,所以可以将其作为异步任务执行并在其中添加暂停以模拟平滑旋转。
Double angle = Math.atan2((userstartPoint.getX() - userendPoint.getX()), userstartPoint.getY() - userendPoint.getY());
angle = Math.toDegrees(angle);
map.setRotationAngle(angle);
所以基本上我得到了起点(新位置)和终点(旧位置),然后在其上执行 Math.atan2,如您所见。然后将其转换为度数并将其设置为我的 map 旋转。 现在它没有进行平滑的旋转,但我不需要那个。您可以在此处设置自己的步进器以实现平滑旋转。除非谷歌地图已经有一个。
关于android - 如何在android中使用方位平滑地旋转 map View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382887/