Android Maps - animateCamera()方法无法正常工作

Usu*_*ect 8 android google-maps-android-api-2 android-maps-v2

问题:

1)地图获取动画到达所需位置(代码中的第4行)但它已缩放到默认位置(代码中的第5行)

[将地图保留在指定缩放级别的默认位置]

2)我理解为什么问题发生但我不知道如何解决它.

3)如果我将第4行更改为moveCamera而不是将起作用的animateCamera,但我确实需要animateCamera()方法.

这是代码:

map=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
MarkerOptions options=new MarkerOptions().position(new LatLng(13.0810,80.2740));
map.addMarker(options);
map.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(13.0810,80.2740)),4000,null);
map.animateCamera(CameraUpdateFactory.zoomTo(15.5f),2000,null);
Run Code Online (Sandbox Code Playgroud)

Pav*_*dka 38

问题是您zoom在开始动画到新位置后立即调用.这就是为什么它只是用新的替换最后一次相机更新动作.

您可以通过创建更准确的相机更新操作(包括latlng更改和缩放级别更改)来解决此问题:

CameraPosition newCamPos = new CameraPosition(new LatLng(13.0810,80.2740), 
                                                  15.5f, 
                                                  map.getCameraPosition().tilt, //use old tilt 
                                                  map.getCameraPosition().bearing); //use old bearing
map.animateCamera(CameraUpdateFactory.newCameraPosition(newCamPos), 4000, null);
Run Code Online (Sandbox Code Playgroud)

另外,通过MaciejGórski指出的那样,你可以使用newLatLngZoom界面,包括LatLngzoom变化:

map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(13.0810,80.2740), 15.5f), 4000, null);
Run Code Online (Sandbox Code Playgroud)

  • 更容易在工厂使用newLatLngZoom版本. (3认同)