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

时间:2013-06-18 15:59:49

标签: android google-maps google-maps-android-api-2

我有一个谷歌地图(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调整缩放级别,然后将地图置于其他地方。无论我做什么,都是我在地图上看到的。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

对于未来的访客,您可以使用相机动画链接:

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了解如何无限链接的示例。

答案 1 :(得分: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上查看两个调用的实际移动,则需要在完成动画后根据需要注册回调。