2016-12-21 1 views
2

In meiner Android-App verwende ich den folgenden Code, um den aktuellen Standort des Benutzers zu erhalten.android - stop receiving location updates

private void getDeviceLocation() { 
    Boolean mLocationPermissionGranted = //ask for permission and stuff 
    if (mLocationPermissionGranted) { //if permission granted 
     mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
    } 
} 

Ich möchte nur 1 Location Update, damit ich in meinem removeLocationUpdatesonLocationChanged Methode.

@Override 
public void onLocationChanged(Location location) { 
    mCurrentLocation = location; 
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
} 

Dadurch, dass nicht mehr die onLocationChanged Methode aufrufen, aber ich sehe auf der Karte, der meine Position noch immer einige Sekunden ändert sich ständig. Der Genauigkeitsradius nimmt weiter zu oder ab. Ich will das nicht. Ich möchte, dass der "blaue Punkt" stabil bleibt und sich nicht bewegt.

+0

Sie haben verwendet 'mGoogleMap.setMyLocationEnabled (true);'. Mit dieser Funktion kann Google Map auf den Standort des Nutzers zugreifen, ohne dass mehr Code von Ihnen benötigt wird. Es kann nützlich sein, wie es nicht möglich ist. – Gorcyn

+0

@Gorcyn ya, ich habe 'setMyLocationEnabled (true)' verwendet, aber wenn ich es auf false setze, wird nur der "blaue Punkt" entfernt. Das Problem ist immer noch da –

Antwort

1

Zunächst hat der blaue Punkt eine eigene Standortquelle. Nach der Einstellung setMyLocationEnabled(true) beginnt es, Ihren Standort zu lokalisieren. Der blaue Punkt hat also nichts mit Ihrer Standortanfrage zu tun.

Documentation sagt für MyLocationLayer (blauer Punkt)

Während aktiviert und die Lage ist verfügbar, die Schicht my-Standort kontinuierlich einen Hinweis auf einen aktuellen Standort des Benutzers zieht

Means, Immer wenn der MyLocationLayer einen neuen Standort erhält, bewegt sich der blaue Punkt.

Aber es gibt eine Möglichkeit, dieses Verhalten zu ändern: setLocationSource (LocationSource source)

Documentation sagt für setLocationSource

die Lage Quelle der Schicht my-Position ersetzt.

bedeutet, können Sie Ihren Standortanfrage und Verhalten (nur an einem Ort, wie Sie wollen) an den blauen Punkt (MyLocationLayer)

prüfen diese sample, genau funktioniert integrieren, was Sie brauchen

+0

Das war sehr hilfreich, vielen Dank! –

Verwandte Themen