2017-04-06 66 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其中有一些其他的链接,您使用的传感器和获得更多的文档以帮助。

如果这没有帮助,请评论和/或澄清问题。