如何调整缩放级别以适应边界,然后在标记偏移中调整中心贴图?

Mik*_*iki 7 android google-maps google-maps-android-api-2

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

我能够,分开,

1)调整缩放级别并将地图置于边界中心:

mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(getZoomBounds(), 10));
Run Code Online (Sandbox Code Playgroud)

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

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

mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));
Run Code Online (Sandbox Code Playgroud)

但是,对于我的生活,我不能同时做两件事,使用newLatLngBounds调整缩放级别,然后将地图置于其他地方.无论我做什么,都是我在地图上看到的.

我该怎么做呢?

Mac*_*ski 5

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

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

另请参阅AnimateCameraChainingExampleActivity.java以获取如何无限链接的示例。


Aar*_*ver 2

尝试同时使用moveCameraanimateCamera...

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

mMap.animateCamera(CameraUpdateFactory.newLatLng(poiSelectedLatLng));
Run Code Online (Sandbox Code Playgroud)

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

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