2016-11-22 8 views
1

Googleマップをマーカーとして表示し、そのあとマーカーを右にピクセル単位でスクロールします 現在、私は上記の2つのアクションを組み合わせていますこれは:あなたが見ることができるようにズームマップをズームインして右に移動

LatLng point = new LatLng(lat,lon); 

MarkerOptions endMarker = new MarkerOptions().position(point); 

googleMap.addMarker(endMarker); 

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(point, 15f)); 

int screenWidth = getScreenWidth(); 

int margin = (int) getResources().getDimension(R.dimen.double_standard_margin_padding); 

new Handler().postDelayed(() -> googleMap.animateCamera(CameraUpdateFactory.scrollBy(-(screenWidth - margin) * 3/8, 0), new GoogleMap.CancelableCallback() { 
        @Override 
        public void onFinish() { 

        } 

        @Override 
        public void onCancel() { 

        } 
       }), 1000); 

、私はそれを行うには2つのメソッド追加しました:

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(point, 15f)); 

googleMap.animateCamera(CameraUpdateFactory.scrollBy(-(screenWidth - margin) * 3/8, 0) 

を私たちは知らないので、マップを移動するための行動を遅らせることがある場合マップズームされます

そして、マップが(onCancel())移動することができなかったので、予想されるUIを受け取ることができません。

誰かが1つの方法でアーカイブする方法を知っていますか?

答えて

1

私は同じ問題に何度も直面しており、CameraUpdatesのチェーンを実行し、必要に応じて遅延を与え、カメラを移動またはアニメーションできるようにしました(my project on GitHub参照)。私はそれがあなたの場合に役立つと思う:

CameraUpdateAnimator animator = new CameraUpdateAnimator(mMap, this); // Parameters: a GoogleMap instance and an OnCameraIdleListener to return the control to (can be null) 
animator.add(CameraUpdateFactory.newLatLngZoom(point, 15f), false, 0); // Move the camera without delay 
animator.add(CameraUpdateFactory.scrollBy(-(screenWidth - margin) * 3/8, 0), true, 1000); // Animate the camera with a 1000 milliseconds delay 
animator.execute(); 
関連する問題