2016-04-30 9 views
-1

Also ich folge [diese] [1] tolle Anweisungen, wie Richtungen vom Ursprung zum Bestimmungsort gezeichnet werden, es funktioniert fast wie ich will. Ich habe ein seltsames Problem.Google Richtung Router vom aktuellen Standort (LocationServices.FusedLocationApi)

Wenn ich meine Länge einstellen wollen und Breitengrad wie folgt erhalte ich einen Absturz:

Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
LatLng origin = new LatLng(location.getLatitude(),location.getLongitude()); 

Aber wenn ich Zahlen schreiben wie (60.1,14.2), wo ich die lange und lat wich haben, ist nur eine zufällige Ort, an dem es funktioniert.

Warum ist das und wie kann es behoben werden?

LogaCat

04-30 15: 43: 05.950 818-818/mawemo.stadsguiden E/Android Runtime: fatal EXCEPTION: Hauptprozeß: mawemo.stadsguiden, PID: 818 java.lang .NullPointerException: Versuch virtuelle Methode aufzurufen 'double android.location.Location.getLatitude()' auf einem null-Objekt Referenz bei mawemo.stadsguiden.MainActivity.addMarkersRoute (MainActivity.java:324) bei mawemo.stadsguiden.MainActivity .onMapReady (MainActivity.java:420) bei com.google.android.gms.maps.SupportMapFragment $ zza $ 1.zza (Unbekannt Quelle) um com.google.android.gms.maps.internal.zzo $ zza.onTransact (Unbekannt Quelle) bei android.os .Binder.transact (Binder.java:395) unter com.google.android.gms.maps.internal.v $ a $ aa (: com.google.android.gms.alldynamite: 82) bei maps.ei. bu $ 6.run (Unbekannte Quelle) um android.os.Handler.handleCallback (Handler.java:739) um android.os.Handler.dispatchMessage (Handler.java:95) um android.os.Looper.loop (Looper.java:145) um android.app.ActivityThread.main (ActivityThread.java:6117) um java.lang.reflect.Method.invoke (native Methode) um java.lang.reflect.Method.invoke (Methode .java: 372) um com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1399) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1194)

UPDATE

Warum das Minus? Sie können einfach nicht die Hand aus minus ohne Grund

UPDATE 2

ich getestet habe zwei globale varaibles wie diese

Double lat = 0.0; 
Double lon = 0.0; 

zu erklären und dann versuchen, die Werte in mit Lage wie folgt über :

Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 

lat = location.getLatitude(); 
lon = location.getLongitude(); 

Also bitte lieber storeoverflow sagen Sie mir, was ich vermisse.

+0

Da das Crash-Protokoll sagte getLastLocation() Methode gibt null zurück. Dies bedeutet, dass der fusionierte Anbieter keinen zuvor empfangenen Standort hat. Die Lösung, Anforderung von Standortaktualisierungen. Sie können diesen Link überprüfen https://guides.codepath.com/android/Retrieving-Location-with-LocationServices-API – Blackkara

+0

@Blackkara können Sie einen Kommentar als Antwort posten? – mogren3000

Antwort

2

Die Methode getLastLocation() gibt null zurück.Weil fusionierter Anbieter keine zuvor empfangene Position hat

Also, dann, wenn Sie versuchen, wie unten zu verwenden, Ausnahme zu werfen.

LatLng origin = new LatLng(location.getLatitude(),location.getLongitude()); 

Sie müssen Standortanfrage machen, Check this link

Verwandte Themen