android - 如何在android中使用方位平滑地旋转 map View

标签 android google-maps geolocation

我正在尝试在用户改变方向时旋转 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/

相关文章:

python - 按列数过滤 Pandas df 并写入数据

javascript - 仅使用客户端脚本获取本地天气

android - 更改操作栏中菜单项的 View

android - 圆形覆盖填充颜色并不总是在 Google Maps v2 上绘制

android - 如何从 map 中删除所有折线

Android PlacePicker 在启动后 2 秒关闭

c# - 是否可以使用 HTML5 获取可用接入点的 MAC 地址和信号强度?

android - FFmpeg : How to create dynamic volume changes in an audio file?

java - 如何按输入顺序保存和检索共享首选项中的数据?

android - 如何使用 Hashmap 使 Android ListView 可点击?