2017-04-06 102 views
6

我想添加活動爲特徵,以一個應用程序我建立在哪裏,該API將返回一個緯度長,以及與此緯度長,我會加載谷歌街景。隨着裝置的運動,將旋轉位置的360度角。我在設備的運動部分掙扎。您可以在屏幕上使用手指旋轉。我想知道是否有人能夠讓我在正確的方向上讓設備移動影響街景的位置?谷歌街景+設備傾斜

我到目前爲止的代碼是:

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); 

並且您正在使用之前構建的「相機」變量移動到特定位置。所以,如果我正確地理解你正在嘗試做什麼,你必須檢查手機傳感器(加速度計&位置)來獲得動作,然後將正確的動作應用到全景。看看android sensor documentation,以獲得正確的聽衆(或如何註冊傳感器使用),然後根據手機登記的加速構建正確的相機對象(左加速度 - >旋轉左,右加速度 - >轉動的右側)。

如果您需要的代碼示例,我建議你看看this question其中有一些其他的鏈接,您使用的傳感器和獲得更多的文檔以幫助。

如果這沒有幫助,請評論和/或澄清問題。