Android 谷歌地图-不能使用animateCamera同时缩放和移动,但可以使用moveCamera

Android 谷歌地图-不能使用animateCamera同时缩放和移动,但可以使用moveCamera,android,google-maps,maps,Android,Google Maps,Maps,我正在使用Android的谷歌地图。我需要将相机移动到某个位置,同时放大 我构建我的CameraUpdate如下: CameraPosition cameraPosition = new CameraPosition.Builder() .target(latLng) .zoom(zoom) .build(); CameraUpdate update = CameraUpdateFactory.newCameraPosition(c

我正在使用Android的谷歌地图。我需要将相机移动到某个位置,同时放大

我构建我的
CameraUpdate
如下:

    CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(latLng)
        .zoom(zoom)
        .build();
    CameraUpdate update = CameraUpdateFactory.newCameraPosition(cameraPosition);
然后设置动画:

map.animateCamera(update);
这将产生将相机移动到目标位置的所需结果。但是,它根本不会放大摄影机。如果我使用
moveCamera
替换相同的
update
对象:

map.moveCamera(update);
我可以看到移动和缩放都生效(没有所需的动画)


是什么导致
animateCamera
moveCamera
之间行为不一致?如何将
animateCamera
配置为同时移动和缩放?

一个糟糕的解决方法是在
animateCamera
之前单独调用
moveCamera
执行缩放:

CameraPosition zoomCameraPosition = new CameraPosition.Builder()
        .zoom(zoom)
        .build();
CameraUpdate zoomUpdate = CameraUpdateFactory.newCameraPosition(zoomCameraPosition);
mMap.moveCamera(zoomUpdate);

CameraPosition moveCameraPosition = new CameraPosition.Builder()
        .target(latLng)
        .build();
CameraUpdate moveUpdate = CameraUpdateFactory.newCameraPosition(moveCameraPosition);
mMap.animateCamera(moveUpdate);
但这并不是一个完全令人满意的答案——移动会产生动画,但缩放会是即时的。它看起来很脆。我在寻找一个更正确的答案。

你应该使用


找到了问题!它位于群集单击侦听器中:

mClusterManager.setOnClusterClickListener(
     new OnClusterClickListener<MyClusterItem>() {
            @Override
            public boolean onClusterClick(Cluster<MyClusterItem> cluster) {
                CameraPosition cameraPosition = new CameraPosition.Builder()
                     .target(latLng)
                     .zoom()
                     .build();
                CameraUpdate update = CameraUpdateFactory.newCameraPosition(cameraPosition);
                mMap.animateCamera(update);

                return false;
            }
        });
mClusterManager.setOnClusterClickListener(
新建OnClusterClickListener(){
@凌驾
公共布尔onClusterClick(集群){
CameraPosition CameraPosition=新建CameraPosition.Builder()
.目标(latLng)
.zoom()
.build();
CameraUpdate update=CameraUpdateFactory.newCameraPosition(cameraPosition);
mMap.animateCamera(更新);
返回false;
}
});

问题从
OnClusterClickListener
返回false。虽然这是未记录的,但它的工作原理可能与Android的其他部分类似,并指示是否使用了单击事件。通过将其设置为false,单击事件可能会传播到
GoogleMap
对象,该对象本身必须具有取消缩放的某些功能。

值得注意的是,“地图错误追踪器”中不存在与此相关的错误。感谢您的回答。不幸的是,问题是相同的。请发布您的代码,因为它对我来说没有问题。您从何处调用animateCamera代码与您发布的代码相同<正在从单击侦听器调用code>animateCamera。此侦听器按预期启动。首先,重建项目,然后尝试以下代码mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(NewLatlng(40.709475,-73.818740),14));同样的事情也发生在我身上。”返回true'修复了它。听起来像个虫子。。。
mClusterManager.setOnClusterClickListener(
     new OnClusterClickListener<MyClusterItem>() {
            @Override
            public boolean onClusterClick(Cluster<MyClusterItem> cluster) {
                CameraPosition cameraPosition = new CameraPosition.Builder()
                     .target(latLng)
                     .zoom()
                     .build();
                CameraUpdate update = CameraUpdateFactory.newCameraPosition(cameraPosition);
                mMap.animateCamera(update);

                return false;
            }
        });