如何移动android谷歌地图相机,实现匀速和变焦

如何移动android谷歌地图相机,实现匀速和变焦,android,animation,camera,zooming,google-maps-android-api-2,Android,Animation,Camera,Zooming,Google Maps Android Api 2,我找不到移动android谷歌地图相机的方法,它的速度和变焦都是恒定的 例如,如果当前缩放为15,则调用 CameraPosition pos= CameraPosition .builder(map.mMap.getCameraPosition()) .target(target) .zoom(15)

我找不到移动android谷歌地图相机的方法,它的速度和变焦都是恒定的

例如,如果当前缩放为15,则调用

CameraPosition pos= CameraPosition
                                .builder(map.mMap.getCameraPosition())
                                .target(target)
                                .zoom(15)
                                .build();

mMap.animateCamera(CameraUpdateFactory.newCameraPosition(pos), duration * 1000, null);
它修改缩放15->12->15 (中间值取决于距离)

我的目标是显示一个物体以恒定的速度在地图上移动,并始终保持它在地图的中心


试图在对象的值Animator中调用moveCamera,但随后贴图跳转。我需要平滑地移动它

使用fused API进行位置更新,并将相机移动到更新的位置

mFusedLocationClient.getLastLocation()
            .addOnSuccessListener(MainActivity.this, new OnSuccessListener<android.location.Location>() {
                @Override
                public void onSuccess(android.location.Location location) {
                    if(location!=null){
                        try{
                            LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());

                            Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());

                            String addresses = geocoder.getFromLocation(location.getLatitude(),
                                    location.getLongitude(), 1).get(0).getAddressLine(0);

                            marker_origin = new MarkerOptions().
                                    position(latLng).title(addresses)
                                    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA));
                            mMap.addMarker(marker_origin);
                            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16.0f));


                            getPlacesData(latLng, "restaurant");
                        }catch (Exception e){
                            e.printStackTrace();
                        }
                    }
                }
            });
mFusedLocationClient.getLastLocation()
.addOnSuccessListener(MainActivity.this,新OnSuccessListener