2015-05-06 17 views
5

Attualmente sto sviluppando un'app per Android Google Maps che aiuta a ottenere la direzione tra 2 punti sulla mappa. Sono in grado di ottenere la risposta dal servizio di google maps (Direction API) e disegnare la polilinea (Google Maps Android SDK) in base alla lista di passaggi, ma la linea non è una snap alla strada (linea curva bastone per strada sulla mappa), è solo una linea retta.Disegna snapline su strada Android google maps app

Come posso disegnare lo snap polilinea su strada nell'app per Android? Sto utilizzando Android Studio.

Ecco il mio codice per disegnare polilinea.

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

Grazie per il vostro aiuto.

+0

Non Android, ma potrebbe aiutare: http://stackoverflow.com/questions/10513360/polyline-snap-to-road-using-google-maps-api-v3 – Andy

risposta

0

Questo è come si può fare:

  • Una volta che avete il vostro oggetto JSON come "risultato". Analizzalo, decodifica anche la polilinea sotto forma di una lista.

    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); 
    
  • Infine aggiungere l'opzione Polilinea dal loop sopra la lista e l'impostazione delle proprietà del vostro polilinea che corrisponde alla strada che si desidera mostrare come recuperato da Direzione API su Google Maps.

    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

chiarire come questo la risposta affronta il problema di spezzare i punti su una strada. –

Problemi correlati