Google 从当前位置出发的方向路线 (LocationServices.FusedLocationApi)

Google direction route from current location (LocationServices.FusedLocationApi)

我正在按照这些关于如何绘制从起点到终点的方向的很棒的说明进行操作,它几乎可以按我的意愿工作。 我有一个奇怪的问题。

当我想像下面这样设置我的经度和纬度时,我遇到了崩溃:

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

但是当我写像 (60.1,14.2) 这样的数字时,我有 long 和 lat,这只是一个随机位置。

为什么会这样,如何解决?

LogaCat

04-30 15:43:05.950 818-818/mawemo.stadsguiden E/AndroidRuntime: FATAL EXCEPTION: main Process: mawemo.stadsguiden, PID: 818 java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference at mawemo.stadsguiden.MainActivity.addMarkersRoute(MainActivity.java:324) at mawemo.stadsguiden.MainActivity.onMapReady(MainActivity.java:420) at com.google.android.gms.maps.SupportMapFragment$zza.zza(Unknown Source) at com.google.android.gms.maps.internal.zzo$zza.onTransact(Unknown Source) at android.os.Binder.transact(Binder.java:395) at com.google.android.gms.maps.internal.v$a$a.a(:com.google.android.gms.alldynamite:82) at maps.ei.bu.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6117) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

更新

为什么是负号?你不能无缘无故地发减号

更新 2

我测试过像这样声明两个全局变量

Double lat = 0.0;
Double lon = 0.0;

然后尝试使用 Location 传递值,如下所示:

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

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

所以请亲爱的 Stack Overflow 告诉我我错过了什么。

getLastLocation() 方法返回 null。因为 fused provider 之前没有接收到 location

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

那么,当您尝试像下面这样使用时,抛出异常。

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

您需要进行位置请求,Check this link