【问题标题】:Google direction route from current location (LocationServices.FusedLocationApi)从当前位置谷歌方向路线(LocationServices.FusedLocationApi)
【发布时间】: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


【解决方案1】:

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

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

所以,当你尝试像下面这样使用时,抛出异常。

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

你需要提出位置请求,Check this link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2023-03-31
    • 1970-01-01
    • 2014-10-03
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多