7

我有一个谷歌地图(com.google.android.gms.maps.GoogleMap),其中设置了一些标记。

我能够,分别,

1)调整缩放级别并将地图居中在边界上:

mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10));

2) 将地图置于其中一个标记之上:

LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude 
    + offset, markerSelected.getPosition().longitude);

mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));

但是,就我的一生而言,我不能两者都做,使用 newLatLngBounds 调整缩放级别,然后将地图居中到其他地方。无论我最后做什么,都是我在地图上看到的。

我该怎么做呢?

4

2 回答 2

6

对于未来的访问者,这是您可以链接相机动画的方式:

map.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10), 2000, new CancelableCallback() {

    @Override
    public void onFinish() {
        LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude + offset, markerSelected.getPosition().longitude);
        map.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));
    }

    @Override
    public void onCancel() {
    }
});

另请参阅AnimateCameraChainingExampleActivity.java,了解如何无限链接的示例。

于 2013-06-18T20:28:20.560 回答
1

尝试同时使用moveCameraanimateCamera...

mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10));
LatLng poiSelectedLatLng = new LatLng(markerSelected.getPosition().latitude 
    + offset, markerSelected.getPosition().longitude);

mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));

moveCamera将直接移动到该位置,同时animateCamera将提供移动效果。它们本质上是线性的,因此一个接一个发生,但是像我上面所做的那样将它们分层将提供您正在寻找的潜在效果。

如果您尝试在 UI 上查看两个调用的实际移动,则需要根据需要在动画完成后注册回调。

于 2013-06-18T16:03:25.247 回答