Dessiner des itinéraires de conduite à l'aide de waypoints sur Android (Google maps, Google direction api, json parsing, decoder google polyline)

DrawPath () est utilisé pour dessiner du polyloine sur la carte.

public void drawPath(String result){ try { final JSONObject jsonObject = new JSONObject(result); JSONArray routeArray = jsonObject.getJSONArray("routes"); JSONObject routes = routeArray.getJSONObject(0); JSONObject overviewPolylines = routes.getJSONObject("overview_polyline"); String encodedString = overviewPolylines.getString("points"); String statusString = jsonObject.getString("status"); Log.d("test: ", encodedString); List<LatLng> list = decodePoly(encodedString); LatLng last = null; for (int i = 0; i < list.size()-1; i++) { LatLng src = list.get(i); LatLng dest = list.get(i+1); last = dest; Log.d("Last latLng:", last.latitude + ", " + last.longitude ); Polyline line = mMap.addPolyline(new PolylineOptions() .add(new LatLng(src.latitude, src.longitude), new LatLng(dest.latitude, dest.longitude)) .width(4) .color(Color.GREEN)); } Log.d("Last latLng:", last.latitude + ", " + last.longitude ); }catch (JSONException e){ e.printStackTrace(); } catch(ArrayIndexOutOfBoundsException e) { System.err.println("Caught ArrayIndexOutOfBoundsException: "+ e.getMessage()); } } private List<LatLng> decodePoly(String encoded){ List<LatLng> poly = new ArrayList<LatLng>(); int index = 0; int length = encoded.length(); int latitude = 0; int longitude = 0; while(index < length){ int b; int shift = 0; int result = 0; do { b = encoded.charAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); int destLat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); latitude += destLat; shift = 0; result = 0; do { b = encoded.charAt(index++) - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b > 0x20); int destLong = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); longitude += destLong; poly.add(new LatLng((latitude / 1E5),(longitude / 1E5) )); } return poly; } 

Maintenant, mon problème est que l'itinéraire n'est pas affiché correctement dans la carte car il comporte des points forts dans le lien. Je l'utilise sur Android 4.2

  • Rôle du fichier classes.dex dans un fichier apk
  • Notification Android Push
  • Comment faire des annotations comme la mise en surbrillance, le balayage, le soulignement, le tirage, l'ajout de texte, etc. dans Android pour un visualiseur de pdf?
  • Classcastexception se produit de façon aléatoire
  • Android: la façon de désactiver les contrôles au cours de la barre de progression est active
  • Que détruit exactement onDestroy ()?
  • Mon lien est http://maps.googleapis.com/maps/api/directions/json?origin=18.XXX,73.XXXdestination=18.XXX,73.XXX&sensor=false&units=metric&mode=driving&waypoints=via:18.XXX , 73.XXX

    2 Solutions collect form web for “Dessiner des itinéraires de conduite à l'aide de waypoints sur Android (Google maps, Google direction api, json parsing, decoder google polyline)”

    J'ai testé votre partie decodePoly. Il n'y a pas de problème. Vous pouvez utiliser les étapes et les jambes pour être plus précis.

    @Zeratul merci d'avoir décodé le code sur overview_polyline.points . Cela fonctionne très bien. Soit dit en passant, après avoir obtenu la liste de LatLng, vous n'avez pas besoin de boucler la liste. Utilisez simplement la méthode addAll de PolylineOptions.

     List<LatLng> list = decodePoly(encodedString); PolylineOptions po = new PolylineOptions(); po.addAll(list); po.width(2).color(Color.BLUE); Polyline line = getMap().addPolyline(po); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.