【问题标题】:How to smoothly animate a marker in google maps API with Android?如何使用 Android 平滑地为 google maps API 中的标记设置动画?
【发布时间】:2018-03-21 10:38:47
【问题描述】:

我已经设法在地图上的当前位置显示一个标记,并且每次我移动相机都会跟随我。我每 1000 毫秒获取一次设备当前位置,如下所示:

LocationRequest locationRequest = new LocationRequest();
locationRequest.setInterval(1000);
locationRequest.setFastestInterval(1000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

当我在车内使用我的应用程序时,我当前的位置更新不像 Google 地图应用程序那样具有动画效果,而是从一个点跳到另一个点。

如何在当前位置发生变化时获得流畅的动画?我对使用LatLng startPositionLatLng destination 的方法不感兴趣,我只想在移动时获得良好的用户体验。

这是帮助我移动相机的方法:

private void moveCamera(LatLng latLng, float zoom) {
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));
}

【问题讨论】:

  • 请发布您当前的moveCamera代码
  • @CaoMinhVu 感谢您的回复。刚刚更新了我的问题。
  • 听起来你想map.setmylocationenabled(true)。这将启用位置层。您可以使用“我的位置”图层和“我的位置”按钮向您的用户显示他们在地图上的当前位置。
  • @thelastchief 我已经在使用mMap.setMyLocationEnabled(true);,但它并没有提供我想要的流畅动作。

标签: android google-maps


【解决方案1】:

尝试使用下面的代码来为相机设置动画:

CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, zoom);
        if(mMap != null) {
            mMap.animateCamera(cameraUpdate);
        }

【讨论】:

  • 我会试试的,谢谢。有什么方法可以在不开车的情况下进行测试?
  • 是的,使用此应用程序,您可以伪造任何位置:play.google.com/store/apps/details?id=com.msl.worldtroll
  • 我没有让它与那个模拟器一起工作,但我尝试了另一个,它工作得很好。这是正确的答案。谢谢!
【解决方案2】:

试试这个方法

mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
                @Override
                public void onCameraIdle() {
                    CameraPosition position = mMap.getCameraPosition();
                     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mCurrentLatitude, mCurrentLongitude), 12.0f));
                }
            });

【讨论】:

  • 感谢您的回答,但我为什么要使用setOnCameraIdleListener
  • 移动相机会不断调用获取地图标记,所以它会挂起或渲染缓慢,所以当它处于理想阶段时,您可以提出更好的渲染请求
  • 好的,谢谢。我会试试看。有什么方法可以在不开车的情况下进行测试?
猜你喜欢
  • 2011-04-20
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多