2016-05-17 6 views
-1

Ich habe App erstellt, die mit der Google-Karte arbeiten und es funktioniert gut mit den Google-Karten-Diensten. aber ein Problem erscheint, was es ist. , wenn ich den aktuellen Standort anfordern manchmal arbeiten sie in Ordnung und gibt den genauen aktuellen Standort aber andere Zeiten ist es die letzte aktuelle Position zurückkehren , wo ich bin nicht in. , die mich Lösung Dies ist der Code zur Verfügung stellen kannwarum immer die aktuelle Position mit Google Map und Android manchmal den letzten Standort nicht den aktuellen Standort

private GoogleApiClient mLocationclient; 
GoogleMap mMap;    

// connect client to the map by take his location 
      mLocationclient = new GoogleApiClient.Builder(this) 
        .addApi(LocationServices.API) 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .build(); 
      mLocationclient.connect(); 
      // end connect 

// erhalten den aktuellen Standort

public LatLng getCurrentLocation(Context context, GoogleMap mMaps,GoogleApiClient mlocationclient){ 
    LatLng ll=null; 
    Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mlocationclient); 
    if(currentLocation==null) 
     Toast.makeText(context,"could not connect",Toast.LENGTH_SHORT).show(); 
    else { 
      ll=new LatLng(
       currentLocation.getLatitude(), 
       currentLocation.getLongitude() 
     ); 
    } 
    return ll; 
} 
+1

, denn das war das letzte Mal, es konnte einen erfolgreichen Standort erhalten. Wenn Sie etwas wirklich genau brauchen, dann sollten Sie einen einmaligen Ort mit den Update-Anforderungen – tyczj

+0

bekommen, also was ist das Problem, um zu verhindern, dass es beim nächsten Mal den aktuellen Standort bekommt. und habe ich meine, die zu hören, um den aktuellen Standort zu ändern –

+0

ja müssen Sie für eine einmalige Standortänderung zu hören – tyczj

Antwort

3

Sie getLastLocation(); fordern, die das letzte Mal Ihr GPS-Gerät in der Lage war, wird wieder eine Position zu holen.

Wenn Sie das Gerät zwingen wollen einen Ort versuchen zu holen:

lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, this, null); 
    Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    lat = loc.getLatitude(); 
    lng = loc.getLongitude(); 

Darüber hinaus können Sie an dieser Referenz für weiteren informaton einen Blick darauf werfen. requestSingleUpdate

+0

ist es das gleiche wie requestLocationUpdates und was ist das LM? –

+0

Nein, Sie würden requestLocationUpdates verwenden, wenn Sie regelmäßige Updates vor Ort anfordern möchten. Wobei als requestSingleUpdate zu einem bestimmten Zeitpunkt ein einzelnes Update angefordert würde. lm ist Location Manager –

+0

ok aufhorchen. meine app ist move kamera an den aktuellen ort zu hören auf den klick auf die taste was ist der beste weg es zu tun –

0

Google Maps verwendet den letzten bekannten Standort, wenn er nicht den aktuellen Standort hat. Das GPS braucht Zeit, um die genaue Position des Benutzers zu finden, und daher verwendet die App den vorherigen Breiten- und Längengrad, bis das GPS einen Fix bekommt.

prüft Link aus: https://developer.android.com/training/location/index.html

Verwandte Themen