java.lang.IllegalArgumentException: 南纬超过北纬 (23.029011581089936 > 23.0060917)

Posted

技术标签:

【中文标题】java.lang.IllegalArgumentException: 南纬超过北纬 (23.029011581089936 > 23.0060917)【英文标题】:java.lang.IllegalArgumentException: southern latitude exceeds northern latitude (23.029011581089936 > 23.0060917) 【发布时间】:2020-04-10 15:18:21 【问题描述】:

我正在使用 Google 地图,我发现了一个以前从未遇到过的奇怪错误:以下是详细信息。

我正在尝试使用,在边界中放置两个标记,

latLngBounds = new LatLngBounds(mDestination, mOrigin); LatLngBounds.Builder builder = new LatLngBounds.Builder(); builder.include(mDestination).include(mOrigin);

我收到以下错误。

java.lang.IllegalArgumentException: southern latitude exceeds northern latitude (23.029011581089936 > 23.0060917)
    at com.google.android.gms.common.internal.Preconditions.checkArgument(Unknown Source:38)
    at com.google.android.gms.maps.model.LatLngBounds.<init>(Unknown Source:7)
    at com.cmrlabs.tracker.MainActivity.drawRoute(MainActivity.java:324)
    at com.cmrlabs.tracker.MainActivity.access$500(MainActivity.java:73)
    at com.cmrlabs.tracker.MainActivity$2.onMapClick(MainActivity.java:410)
    at com.google.android.gms.maps.zzy.onMapClick(Unknown Source:2)
    at com.google.android.gms.maps.internal.zzak.dispatchTransaction(Unknown Source:5)
    at com.google.android.gms.internal.maps.zzb.onTransact(Unknown Source:12)
    at android.os.Binder.transact(Binder.java:667)
    at cj.b(:com.google.android.gms.dynamite_mapsdynamite@19831068@19.8.31 (100700-0):14)

我不知道如何解决这个问题,有什么建议吗?

提前谢谢你..!

【问题讨论】:

如果getActivity().isFinishing()返回true,华为地图也会抛出同样的异常。堆栈跟踪是这样的:2020-05-18 12:17:06.942 15722-15722/me.com.myApp E/AndroidRuntime: FATAL EXCEPTION: main Process: me.com.myApp, PID: 15722 java.lang.IllegalArgumentException: southern latitude &gt;= northern latitude at com.huawei.hms.common.Preconditions.checkArgument(Unknown Source:11) at com.huawei.hms.maps.model.LatLngBounds.&lt;init&gt;(LatLngBounds.java:57) at com.huawei.hms.maps.model.LatLngBounds$Builder.build(LatLngBounds.java:253) 【参考方案1】:

LatLngBounds constructor 有两个参数:西南角和东北角。那不是你所拥有的——你有两点,所以你不应该使用那个构造函数。相反,使用Builder并在最后调用build()来构造LatLngBounds对象:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(mDestination).include(mOrigin);
latLngBounds = builder.build();

【讨论】:

【参考方案2】:

我帮助回答了ianhanniballake。 如果有人需要 Kotlin,请看:

val bilder = LatLngBounds.builder()
bilder.include(TripMetrFragment.latLngFinish).include(TripMetrFragment.latLngStart)
val latLngBounds = bilder.build()
map.moveCamera(CameraUpdateFactory.newLatLngBounds(latLngBounds, 0))

【讨论】:

以上是关于java.lang.IllegalArgumentException: 南纬超过北纬 (23.029011581089936 > 23.0060917)的主要内容,如果未能解决你的问题,请参考以下文章

IllegalArgumentException:此 NavController 未知导航目的地 xxx