2015-05-06 12 views
5

Ich entwickle derzeit eine Android Google Maps App Hilfe, um die Richtung zwischen 2 Punkten auf der Karte zu bekommen. Ich kann die Antwort vom Google Maps-Dienst (Direction-API) erhalten und die Polylinie (Google Maps Android SDK) auf der Basis der Schrittliste zeichnen, aber die Linie ist nicht an der Straße befestigt (gekrümmte Linie auf der Karte) Es ist nur eine Gerade.Draw Polyline Snap to Road Android Google Maps App

Wie kann ich Polyline-Snap-to-Road in der Android App zeichnen? Ich verwende Android Studio.

Hier ist mein Code, um Polylinie zu zeichnen.

void updateMapDirection() { 
    Polyline newPolyline; 
    PolylineOptions options = new PolylineOptions().width(3).color(Color.BLUE).geodesic(true); 
    LatLng latLng = new LatLng(mLegs.get(0).getmStartLocation().getmLatitude(), 
      mLegs.get(0).getmStartLocation().getmLongitude()); 
    options.add(latLng); 
    for (WNStep i : mLegs.get(0).getmSteps()) { 
     latLng = new LatLng(i.getmEndLocation().getmLatitude(), i.getmEndLocation().getmLongitude()); 
     options.add(latLng); 
    } 
    newPolyline = map.addPolyline(options); 
} 

Danke für Ihre Hilfe.

+0

Nicht Android, aber helfen könnten: http://stackoverflow.com/questions/10513360/polyline-snap-to-road-using-google-maps-api-v3 – Andy

Antwort

0

Dies ist, wie Sie es tun können:

  • Sobald Sie Ihre JSON-Objekt als „Ergebnis“ haben. Parsen Sie es, Dekodieren Sie auch die Polylinie in Form einer Liste.

    final JSONObject json = new JSONObject(result); 
         JSONArray routeArray = json.getJSONArray("routes"); 
         JSONObject routes = routeArray.getJSONObject(0); 
         JSONObject overviewPolylines = routes 
           .getJSONObject("overview_polyline"); 
         String encodedString = overviewPolylines.getString("points"); 
         List<LatLng> list = decodePoly(encodedString); 
    
  • Schließlich Linienzug Option durch Schleifen über die Liste und die Einstellung der Eigenschaften Ihrer Polylinie hinzufügen auf die Straße aus Richtung API auf Google Maps als abzurufenden zeigen Sie entspricht.

    PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true); 
    for (int z = 0; z < list.size(); z++) { 
    LatLng point = list.get(z); 
    options.add(point); 
    } 
    line = myMap.addPolyline(options); 
    
+0

Bitte klären, wie diese Antwort behandelt das Problem, die Punkte auf eine Straße zu bringen. –