我有一个谷歌地图(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调整缩放级别,然后将地图置于其他地方。无论我做什么,都是我在地图上看到的。
我该怎么做?
答案 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)
尝试同时使用moveCamera
和animateCamera
...
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上查看两个调用的实际移动,则需要在完成动画后根据需要注册回调。