2016-05-21 7 views
0

ich neu in der codierung google map, meine frage ist, wie ich den benutzer steuern schur, zoom in und zoom out. weil mein Code immer zurück zum gegenwärtigen Standort des Benutzers, wenn ich heranzoome/out, nad, wenn ich ziehe/scroll herauf, unten, links, recht. immer wieder auf die aktuelle Position.steuern benutzer geste auf meiner karte

sein mein Code für aktuelle loc Benutzer

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() { 
     @Override 
     public void onMyLocationChange(Location location) { 
      LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); 
      mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 
      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16)); 
     } 
    }; 
+0

Entfernen Sie einfach 'mMap.animateCamera (CameraUpdateFactory.newLatLngZoom (loc, 16));' – antonio

+0

, wenn ich diesen Code entfernen, kann meine App aktuellen possition des Benutzers geht direkt. Ich möchte, wenn die App geöffnet, die Kamera zum aktuellen Benutzer Standort gehen, aber immer noch die Map-Kamera bewegen kann, wie Drag scrool Zoomen/Out ohne Rückkehr zum Benutzer aktuelle loc, –

+0

So wollen Sie die Karte auf Ihrem aktuellen zentrieren Ort nur beim ersten Mal? – antonio

Antwort

0

Sie ein boolean verwenden können die Kamera nur das erste Mal zu bewegen:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMyLocationChangeListener { 
    private GoogleMap mMap; 
    private Marker mMarker; 
    private boolean firstTime = true; 

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

     ((SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map)).getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     mMap.setMyLocationEnabled(true); 
     mMap.setOnMyLocationChangeListener(this); 
    } 

    @Override 
    public void onMyLocationChange(Location location) { 
     LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); 
     mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 

     if (firstTime) { 
      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16)); 
      firstTime = false; 
     } 
    } 
} 

HINWEIS: Berücksichtigen Sie, dass dieses Beispiel GoogleMap.OnMyLocationChangeListener nur verwendet weil das die Methode ist, die Sie in Ihrer Frage verwenden, aber sie ist veraltet und Sie müssen den FusedLocationProviderApi gemäß the documentation:

verwenden

public final Leere setOnMyLocationChangeListener (GoogleMap.OnMyLocationChangeListener Hörer)

Diese Methode wurde als veraltet. Verwenden Sie stattdessen com.google.android.gms.location.FusedLocationProviderApi. FusedLocationProviderApi bietet eine verbesserte Ortung und Stromversorgung Verwendung und wird von dem blauen Punkt "My Location" verwendet. Informationen hierzu finden Sie im Beispielanwendungen-Ordner MyLocationDemoActivity, zum Beispiel Beispielcode, oder im Standortentwicklerhandbuch.

+0

ok krank versuche es später, danke es vor @antonio du bist sehr hilfreich –

+0

hai @antonio, ich versuche deinen Code, aber es immer noch zurück zu meinem aktuellen locaton –

+0

Könnten Sie die wichtigsten Teile Ihres Codes veröffentlichen? – antonio

Verwandte Themen