2017-04-06 35 views
6

Ich versuche, eine Aktivität als Feature zu einer App hinzuzufügen, ich bin wo, die API wird eine lat lange, und mit diesem lat lange werde ich Google Street View laden. Welches mit der Bewegung des Gerätes, den 360-Grad-Winkel der Position dreht. Ich kämpfe am Bewegungsteil des Gerätes. Mit den Fingern auf dem Bildschirm können Sie drehen. Ich frage mich, ob jemand mich in die richtige Richtung lenken kann, wenn die Bewegung des Geräts die Position der Straßenansicht beeinflusst.Google Street View + Gerät kippen

Der Code, den ich bisher habe, ist:

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

Warum haben Sie Tilt und Peilung fest codiert? Ich schlage vor, dass Sie es genauso verwenden wie in [doc example] (https://developers.google.com/maps/documentation/android-api/streetview#animate_the_camera_movements). –

Antwort

2

Ich bin Ihre Frage nicht sicher gegeben, so kommentieren, wenn ich falsch bin, aber es scheint, dass Sie durch diese Anweisung

zu drehen, sind in der Lage
panorama.animateTo(camera, duration); 

und Sie bewegen sich mit der zuvor erstellten "camera" -Variable zu einem bestimmten Ort.

Also, wenn ich richtig verstehe, was Sie zu tun versuchen, müssen Sie für Handy-Sensoren (Beschleunigungsmesser & Position), um die Bewegung zu erhalten, dann wenden Sie die richtige Bewegung auf das Panorama. Werfen Sie einen Blick auf android sensor documentation, um die richtigen Listener zu erhalten (oder wie man eine Sensornutzung registriert), dann bauen Sie das richtige Kameraobjekt entsprechend der vom Telefon registrierten Beschleunigung auf (linke Beschleunigung -> links drehen, rechte Beschleunigung -> rechts drehen)).

Wenn Sie ein Codebeispiel muss ich würde vorschlagen, dass Sie this question suchen, die einige andere Links hat man Sensoren zu helfen und mehr doc bekommen.

Wenn das nicht hilft, kommentieren und/oder klären Sie die Frage.

Verwandte Themen