Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何调整缩放级别以适应边界,然后在标记偏移中调整中心地图?_Android_Google Maps_Google Maps Android Api 2 - Fatal编程技术网

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

Android 如何调整缩放级别以适应边界,然后在标记偏移中调整中心地图?,android,google-maps,google-maps-android-api-2,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.getPosit

我有一个谷歌地图(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调整缩放级别,然后在其他地方将地图居中。我最后做的事就是我在地图上看到的事情


如何操作?

尝试同时使用
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上查看两个调用的实际移动,则需要在动画完成后注册回调

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

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() {
    }
});

另请参见如何无限链接的示例。

不需要事件总线、线程或其他任何东西来链接两个animateCamera调用。动画结束时会有一个回调。互联网上有用的信息太少了,这是其中的一部分。