是否可以将相机动画化到多个目的地
Is it possible to animate the camera to several destinations
是否可以将 google 地图相机移动到多个位置?例如移动到地方A,然后到地方B,等等
关于如何做到这一点有什么想法吗?
问候
要完成此操作,您需要使用 GoogleMap.animateCamera() 函数并使用 GoogleMap.CancelableCallback() 和 onFinish() 函数来了解移动动画何时完成,以便您可以制作动画以下一个
从地方动画到地方示例代码:
// The below Coordinates numbers are just for the demo
LatLng placeALatLng = new LatLng(31.11, 23.8859);
LatLng placeBLatLng = new LatLng(23.8859, 11.4211);
LatLng placeCALatLng = new LatLng(11.4211, 23.8859);
private ArrayList<LatLng> places = new ArrayList<>();
int count = 0;
private void startAnimating(){
places.add(placeALatLng);
places.add(placeBLatLng);
places.add(placeCALatLng);
animateToNextPlace();
}
private void animateToNextPlace(){
if(count >= places.size()){
return;
}
animateCameraToLocation(places.get(count));
count++;
}
private void animateCameraToLocation(LatLng placeLatLng){
final int zoom = 12;
final int duration = 1000; // 1 second
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(placeLatLng, zoom), duration, new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
//Animate to next Location
animateToNextPlace();
}
@Override
public void onCancel() {
}
});
}
或者,如果您只想简单地移动相机而无需持续时间且无需完成移动到下一个位置,请使用以下方法:
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(placeA.getLatitude(), placeA.getLongitude()))
.zoom(15)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
是否可以将 google 地图相机移动到多个位置?例如移动到地方A,然后到地方B,等等
关于如何做到这一点有什么想法吗?
问候
要完成此操作,您需要使用 GoogleMap.animateCamera() 函数并使用 GoogleMap.CancelableCallback() 和 onFinish() 函数来了解移动动画何时完成,以便您可以制作动画以下一个
从地方动画到地方示例代码:
// The below Coordinates numbers are just for the demo
LatLng placeALatLng = new LatLng(31.11, 23.8859);
LatLng placeBLatLng = new LatLng(23.8859, 11.4211);
LatLng placeCALatLng = new LatLng(11.4211, 23.8859);
private ArrayList<LatLng> places = new ArrayList<>();
int count = 0;
private void startAnimating(){
places.add(placeALatLng);
places.add(placeBLatLng);
places.add(placeCALatLng);
animateToNextPlace();
}
private void animateToNextPlace(){
if(count >= places.size()){
return;
}
animateCameraToLocation(places.get(count));
count++;
}
private void animateCameraToLocation(LatLng placeLatLng){
final int zoom = 12;
final int duration = 1000; // 1 second
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(placeLatLng, zoom), duration, new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
//Animate to next Location
animateToNextPlace();
}
@Override
public void onCancel() {
}
});
}
或者,如果您只想简单地移动相机而无需持续时间且无需完成移动到下一个位置,请使用以下方法:
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(placeA.getLatitude(), placeA.getLongitude()))
.zoom(15)
.build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));