2014-07-07 14 views
5

Sto usando google maps e uso JSON per analizzare cafe intorno alla mia posizione da google places.Quando inizio la navigazione verso il caffè scelto dalla mia posizione corrente 95% cafe I ottenere una polilinea, ma su alcuni ottengo errore come latitudine nord supera latitudine sud e arresti anomali dell'app.Android google maps, google places, nord latitude supera southern latitiude

Ecco il mio 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) 

risposta

0

Trova questa riga nel codice:

mMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(pointA, pointB), 50)); 

e modificarlo in questo modo:

mMapView.animateCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(pointB, pointA), 50)); 

commutare i due punti, sarà risolvilo!

Modifica: ovviamente, è necessario un metodo per verificare se lo switch è necessario o meno, ma dipende dalla logica di implementazione e app. La soluzione fittizia è quella di usare try-catch e cambiare i punti in caso di crash.

15

Utilizzare la classe LatLngBounds.Builder per includere LatLng utilizzando .include(). Impedirà questo errore.

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); 
0

In primo luogo, I'am cinese, e io uso il Gaode Mappa (aMap.com), e mentre corro questo

aMap.addPolyline(new 
PolylineOptions().add(drawLineLastLatlng,latlng).width(10)    
.color(Color.argb(255, 1, 255, 255))) 

l'eccezione "di latitudine sud importo ecceda latitudine nord" si verifica; Poi controllo la classe e trovare la frase alla LineNumber 35, poi a cambiare i miei codici di questo tipo, e le domande aperte:

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))); 
       } 
      } 
+0

forse c'è qualche errore di grammatica, per favore qualcuno mi dice di no –

0

Questa eccezione fondamentalmente accade mentre LatLngBounds creando oggetto con punti LatLng sbagliate. sud-ovest Latlong dovrebbe essere il primo e il nord-ovest dovrebbe essere il 2 ° parametro. check this link