我正在使用谷歌地图并使用JSON从Google地方解析我所在位置周围的咖啡馆。当我从当前位置95%咖啡馆开始导航到所选择的咖啡馆时,我得到了一条折线但是在某些情况下我得到的错误就像北纬度超过南纬和应用程序崩溃。
这是我的logcat:
07-07 18:11:46.037: E/AndroidRuntime(25854): FATAL EXCEPTION: main
07-07 18:11:46.037: E/AndroidRuntime(25854): java.lang.IllegalArgumentException: southern latitude exceeds northern latitude (30.7223365 > 30.722303)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.google.android.gms.internal.fq.a(Unknown Source)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.google.android.gms.maps.model.LatLngBounds.<init>(Unknown Source)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.google.android.gms.maps.model.LatLngBounds.<init>(Unknown Source)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.example.google_map_ex.MainActivity.findDirections(MainActivity.java:285)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.example.google_map_ex.MainActivity$JSONParse$1.onItemClick(MainActivity.java:366)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.widget.AdapterView.performItemClick(AdapterView.java:301)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.widget.AbsListView.performItemClick(AbsListView.java:1490)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3275)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.widget.AbsListView$1.run(AbsListView.java:4518)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.os.Handler.handleCallback(Handler.java:725)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.os.Handler.dispatchMessage(Handler.java:92)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.os.Looper.loop(Looper.java:137)
07-07 18:11:46.037: E/AndroidRuntime(25854): at android.app.ActivityThread.main(ActivityThread.java:5283)
07-07 18:11:46.037: E/AndroidRuntime(25854): at java.lang.reflect.Method.invokeNative(Native Method)
07-07 18:11:46.037: E/AndroidRuntime(25854): at java.lang.reflect.Method.invoke(Method.java:511)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
07-07 18:11:46.037: E/AndroidRuntime(25854): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
07-07 18:11:46.037: E/AndroidRuntime(25854): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:23)
使用LatLngBounds.Builder类使用.include()包含LatLng。它将防止此错误。
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(currentLocation).include(streetLocation);
//Animate to the bounds
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(builder.build(), 100);
mMap.moveCamera(cameraUpdate);
答案 1 :(得分:2)
使用错误的LatLng点创建LatLngBounds对象时,基本上会发生此异常。 Latlong西南应该是第一个和西北应该是第二个参数。 check this link
答案 2 :(得分:0)
在代码中找到这一行:
mMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(pointA, pointB), 50));
并将其更改为:
mMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(pointB, pointA), 50));
切换两点,它会解决它!
编辑:当然,您需要一些方法来检查是否需要切换,但这取决于您的实现和应用程序逻辑。虚拟解决方案是使用try-catch并在点崩溃时切换点。
答案 3 :(得分:0)
首先,我是中国人,我使用Gaode地图(aMap.com),而我运行这个
aMap.addPolyline(new
PolylineOptions().add(drawLineLastLatlng,latlng).width(10)
.color(Color.argb(255, 1, 255, 255)))
异常&#34;南纬超过北纬&#34;发生;然后我检查课程并在LineNumber 35找到句子,然后我改变我的代码,并解决问题:
if(drawLineLastLatlng!=null&&drawLineLastLatlng.latitude!=latlng.latitude){
if(latlng.latitude>drawLineLastLatlng.latitude){
aMap.addPolyline(new PolylineOptions().add(drawLineLastLatlng,latlng).width(10)
.color(Color.argb(255, 1, 255, 255)));
}else{
aMap.addPolyline(new PolylineOptions().add(latlng,drawLineLastLatlng).width(10)
.color(Color.argb(255, 1, 255, 255)));
}
}