2015-05-06 34 views
5

W tej chwili opracowuję aplikację map Google na Androida, aby uzyskać orientację między 2 punktami na mapie. Jestem w stanie uzyskać odpowiedź z usługi map Google (Direction API) i narysować polilinię (Google Maps Android SDK) na podstawie listy kroków, ale linia nie jest przystawiana do drogi (zakrzywiona linia przykleja się do drogi na mapie), to tylko prosta linia.Narysuj mapę polilinii na drodze Aplikacja Google Maps Google Maps

Jak mogę narysować polilinię do drogi w aplikacji na Androida? Używam Androida Studio.

Oto mój kod do rysowania polilinii.

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

Dzięki za pomoc.

+0

Nie Android, ale może pomóc: http://stackoverflow.com/questions/10513360/polyline-snap-to-road-using-google-maps-api-v3 – Andy

Odpowiedz

0

ten sposób można to zrobić:

  • Gdy masz swój obiekt JSON jako „wynik”. Parsuj to, dekoduj również polilinię w formie listy.

    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); 
    
  • koniec dodać Option Łamana przez zapętlenie nad listy i ustawienie właściwości linii łamanej odpowiadającej drodze chcesz pokazać jak odzyskać od strony interfejsu API Map Google.

    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

Proszę wyjaśnić, jak to odpowiedź dotyczy problemu przyciągania punktów do drogi. –