如何在android中顺利旋转地图视图

dha*_*ran 11 android google-maps geolocation

我试图在用户改变他的方向时旋转地图视图,即如果用户左转和右转,它应该相应地旋转.我正在旋转地图视图,基于当前位置,它正在正确旋转但是它是抖动的.这里的代码是我用来轮流

   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());             
   }
Run Code Online (Sandbox Code Playgroud)

我注册了一个位置更新,时间间隔为0,最小距离为10,用于频繁更新.这里我的问题是地图视图总是抖动,任何人都可以告诉我如何像其他应用程序一样平滑地旋转地图视图,如waze maps do.Thanks. ..

Kon*_*ski 4

您是否正在尝试以平滑的方式旋转地图,例如一次旋转一度,或者只是在位置更新时将其从 A 度旋转到 B 度?

就像是

while (oldAngle != newAngle)
{
mapView.rotate(newAngle);
// this is where you would decied to add or subtract; 
newAngle ++ or -- ; 
}
Run Code Online (Sandbox Code Playgroud)

不确定这是否会像循环运行得非常快一样工作,所以也许可以将其作为异步任务执行,并在其中添加暂停以模拟平滑旋转。

Double angle = Math.atan2((userstartPoint.getX() - userendPoint.getX()), userstartPoint.getY() - userendPoint.getY());
            angle = Math.toDegrees(angle);
            map.setRotationAngle(angle);
Run Code Online (Sandbox Code Playgroud)

所以基本上我得到了起点(新位置),然后是终点(旧位置),并对其执行 Math.atan2,如您所见。然后将其转换为度数并将其设置为我的地图旋转。现在它不能平滑旋转,但我不需要它。您可以在此处设置自己的步进器以实现平滑旋转。除非谷歌地图已经有了。