所以我关注[这] [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告诉我我错过了什么。
答案 0 :(得分:2)
getLastLocation()方法返回null。因为融合提供者之前没有收到位置
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
那么,当你尝试使用如下所示时,抛出异常。
LatLng origin = new LatLng(location.getLatitude(),location.getLongitude());
您需要提出位置请求Check this link