2017-04-06 21 views
6

私はビルドしているアプリケーションに機能として機能を追加しようとしています。APIはlatを長く返しますが、このlatで長くGoogleのストリートビューをロードします。装置の動きによって、位置の360度の角度を回転させる。私はデバイスの動きの部分に苦労しています。画面上で指を使って回転させることができます。ストリートビューの位置に影響を与えるデバイスの動きを得るには、誰かが正しい方向に私を指すことができますか?Googleストリートビュー+デバイスの傾き

私がこれまで持っているコードは次のとおりです。

import android.support.v4.app.FragmentActivity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 

import com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback; 
import com.google.android.gms.maps.StreetViewPanorama; 
import com.google.android.gms.maps.StreetViewPanoramaFragment; 
import com.google.android.gms.maps.StreetViewPanoramaOptions; 
import com.google.android.gms.maps.StreetViewPanoramaView; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.StreetViewPanoramaCamera; 
import com.google.android.gms.maps.model.StreetViewPanoramaLocation; 

public class MainActivity extends FragmentActivity 
     implements OnStreetViewPanoramaReadyCallback { 

    private static final String TAG = MainActivity.class.getSimpleName(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     StreetViewPanoramaFragment streetViewPanoramaFragment = 
       (StreetViewPanoramaFragment) getFragmentManager() 
         .findFragmentById(R.id.streetviewpanorama); 
     streetViewPanoramaFragment.getStreetViewPanoramaAsync(this); 

    } 

    @Override 
    public void onStreetViewPanoramaReady(final StreetViewPanorama panorama) { 
     final long duration = 1000; 
     float tilt = 30; 
     float bearing = 90; 
     final StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder() 
       .zoom(panorama.getPanoramaCamera().zoom) 
       .bearing(bearing) 
       .tilt(tilt) 
       .build(); 

     panorama.setPosition(new LatLng(52.208818, 0.090587)); 
     panorama.setStreetNamesEnabled(false); 
     panorama.setZoomGesturesEnabled(false); 

     panorama.setOnStreetViewPanoramaChangeListener(new StreetViewPanorama.OnStreetViewPanoramaChangeListener() { 
      @Override 
      public void onStreetViewPanoramaChange(StreetViewPanoramaLocation streetViewPanoramaLocation) { 
       if (streetViewPanoramaLocation != null) { 
        panorama.animateTo(camera, duration); 
       } 
       Log.d(TAG, "TESTINGGGGGGGGGG"); 
      } 
     }); 
    } 
} 
+0

チルトとベアリングをハードコード化したのはなぜですか? [doc example](https://developers.google.com/maps/documentation/android-api/streetview#animate_the_camera_movements)に記載されているものと同じように使用することをおすすめします。 –

答えて

2

私はあなたの質問与えられたか分からないので、私が間違っている場合は、コメントが、あなたがこの命令によって回転させることができるしているようだ

panorama.animateTo(camera, duration); 

あなたは以前に構築した "camera"変数を使用して特定の場所に移動しています。

あなたがしようとしていることを正しく理解している場合は、モーションを取得するためにモバイルフォンセンサー(加速度計&ポジション)を確認してからパノラマに正しい動きを適用する必要があります。適切なリスナー(またはセンサの使用方法を登録する方法)を取得し、電話機によって登録された加速度に応じて正しいカメラオブジェクトを構築するには、android sensor documentationを見てください(左加速→左回転、右加速→右回転)。

コード例が必要な場合は、this questionをご覧になることをお勧めします。これには、センサーを使用してより多くのドキュメントを入手するのに役立ついくつかのリンクがあります。

これが助けにならない場合は、質問にコメントしてください。

関連する問題