来自当前位置的Google方向路线(LocationServices.FusedLocationApi)

时间:2016-04-30 13:56:52

标签: android google-maps direction

所以我关注[这] [1]关于如何从原点到目的地绘制方向的精彩指示,它几乎按照我的意愿工作。 我有一个奇怪的问题。

当我想设置我的经度和纬度时,我得到一个崩溃:

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

但是当我写下像(60.1,14.2)这样的数字时,我的长数和纬度只是一个随机的位置。

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

LogaCat

  

04-30 15:43:05.950 818-818 / mawemo.stadsguiden E / AndroidRuntime:FATAL   例外:主要流程:mawemo.stadsguiden,PID:818   java.lang.NullPointerException:尝试调用虚方法   ' double android.location.Location.getLatitude()'在null对象上   参考   mawemo.stadsguiden.MainActivity.addMarkersRoute(MainActivity.java:324)   在mawemo.stadsguiden.MainActivity.onMapReady(MainActivity.java:420)   在com.google.android.gms.maps.SupportMapFragment $ zza $ 1.zza(未知   来源)at   com.google.android.gms.maps.internal.zzo $ zza.onTransact(未知   来自)android.os.Binder.transact(Binder.java:395)at   com.google.android.gms.maps.internal.v $ A $ A.A(:com.google.android.gms.alldynamite:82)   在maps.ei.bu $ 6.run(未知来源)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)   在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();

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

1 个答案:

答案 0 :(得分:2)

getLastLocation()方法返回null。因为融合提供者之前没有收到位置

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

那么,当你尝试使用如下所示时,抛出异常。

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

您需要提出位置请求Check this link