2017-04-06 4 views
6

저는 API에 위도가 오래 걸리는 건물을 짓고있는 앱에 활동을 추가하려고합니다.이 위도가 길면 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 예제] (https://developers.google.com/maps/documentation/android-api/streetview#animate_the_camera_movements)에 제공된 것과 동일하게 사용하는 것이 좋습니다. –

답변

2

나는 귀하의 질문에 주어진 확실하지 않다, 그래서 내가 틀렸다면 언급하지만 당신은이 명령을 통해 회전 할 수있어 보인다

panorama.animateTo(camera, duration); 

그리고 이전에 빌드 한 "카메라"변수를 사용하여 특정 위치로 이동하고 있습니다.

그래서 내가 무엇을하려고하는지 잘 이해한다면 모바일 폰 센서 (가속도계 & 위치)를 확인하여 모션을 얻은 다음 파노라마에 올바른 동작을 적용해야합니다. 올바른 청취자 (또는 센서 사용법을 등록하는 방법)를 얻고 전화기에 등록 된 가속도에 따라 올바른 카메라 객체를 작성하려면 왼쪽 수신기 - 오른쪽 회전 (오른쪽 가속 -> 오른쪽 회전 -> 왼쪽 가속 -> 오른쪽 가속 -> 오른쪽 가속).

코드 예가 ​​필요한 경우 this question으로 보시면 센서를 사용하고 더 많은 문서를 얻는 데 도움이되는 몇 가지 링크가 있습니다.

그래도 도움이되지 않는 경우 질문에 댓글을 달거나 질문을 명확히하십시오.