【发布时间】:2023-04-06 21:33:02
【问题描述】:
我正在遵循这些关于如何绘制从起点到终点的路线的精彩说明,它几乎可以按照我的意愿工作。 我有一个奇怪的问题。
当我想如下设置经度和纬度时,我遇到了崩溃:
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: 致命 例外:主进程:mawemo.stadsguiden,PID:818 java.lang.NullPointerException:尝试调用虚拟方法 空对象上的“双 android.location.Location.getLatitude()” 参考在 mawemo.stadsguiden.MainActivity.addMarkersRoute(MainActivity.java:324) 在 mawemo.stadsguiden.MainActivity.onMapReady(MainActivity.java:420) 在 com.google.android.gms.maps.SupportMapFragment$zza$1.zza(未知 来源)在 com.google.android.gms.maps.internal.zzo$zza.onTransact(未知 来源)在 android.os.Binder.transact(Binder.java:395) 在 com.google.android.gms.maps.internal.v$a$a.a(:com.google.android.gms.alldynamite:82) 在 maps.ei.bu$6.run(Unknown Source) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:6117) 在 java.lang.reflect.Method.invoke(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 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();
所以请亲爱的 Stack Overflow 告诉我我缺少什么。
【问题讨论】:
-
正如崩溃日志所说,getLastLocation() 方法返回 null。这意味着,融合的提供者以前没有收到过位置。解决方案,请求位置更新。您可以查看此链接guides.codepath.com/android/…
-
@Blackkara 你能发表评论作为答案吗?
标签: android google-maps direction