1

Ich versuche Distanz und Dauer hinzufügen, die wir von Google Maps Richtung API erhalten. Ich mache nicht viel über JSON, also bitte helfen Sie mir, Abstand und Richtung im folgenden Code hinzuzufügen.How to Add Entfernung und Dauer in DirectionsJSONParser Datei

Um Entfernung und Richtung haben wir JsonObject verwenden wie Code folgende

JSONObject jsonLeg = jLegs.getJSONObject(0); 
JSONObject jsonDistance = jsonLeg.getJSONObject("distance"); 
JSONObject jsonDuration = jsonLeg.getJSONObject("duration"); 
String distance = jsonDistance.getString("text"); 
String duration = jsonDuration.getString("text"); 

Aber ich weiß nicht, wo und wie sich dies Code hinzuzufügen.

Es folgt mein DirectionsJSONParser.java

package com.example.locationwaypointmapv2; 

class DirectionsJSONParser { 
List<List<HashMap<String,String>>> parse(JSONObject jObject){ 

    List<List<HashMap<String, String>>> routes = new ArrayList<List<HashMap<String,String>>>(); 
    JSONArray jRoutes; 
    JSONArray jLegs; 
    JSONArray jSteps; 

    try { 

     jRoutes = jObject.getJSONArray("routes"); 

     for(int i=0;i<jRoutes.length();i++){ 
      jLegs = ((JSONObject)jRoutes.get(i)).getJSONArray("legs"); 

      List<HashMap<String, String>> path = new ArrayList<HashMap<String, String>>(); 

      for(int j=0;j<jLegs.length();j++){ 
       jSteps = ((JSONObject)jLegs.get(j)).getJSONArray("steps"); 

       for(int k=0;k<jSteps.length();k++){ 
        String polyline; 
        polyline = (String)((JSONObject)((JSONObject)jSteps.get(k)).get("polyline")).get("points"); 
        List<LatLng> list = decodePoly(polyline); 

        for(int l=0;l<list.size();l++){ 
         HashMap<String, String> hm = new HashMap<>(); 
         hm.put("lat", Double.toString((list.get(l)).latitude)); 
         hm.put("lng", Double.toString((list.get(l)).longitude)); 
         path.add(hm); 
        } 
       } 
       routes.add(path); 
      } 
     } 

    } catch (Exception e){ 
     e.printStackTrace(); 
    } 


    return routes; 
} 

private List<LatLng> decodePoly(String encoded) { 

    List<LatLng> poly = new ArrayList<>(); 
    int index = 0, len = encoded.length(); 
    int lat = 0, lng = 0; 

    while (index < len) { 
     int b, shift = 0, result = 0; 
     do { 
      b = encoded.charAt(index++) - 63; 
      result |= (b & 0x1f) << shift; 
      shift += 5; 
     } while (b >= 0x20); 
     int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); 
     lat += dlat; 

     shift = 0; 
     result = 0; 
     do { 
      b = encoded.charAt(index++) - 63; 
      result |= (b & 0x1f) << shift; 
      shift += 5; 
     } while (b >= 0x20); 
     int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); 
     lng += dlng; 

     LatLng p = new LatLng((((double) lat/1E5)), 
       (((double) lng/1E5))); 
     poly.add(p); 
    } 

    return poly; 
} 
} 

Antwort

0

Try this Distance und Duration

final JSONObject json = new JSONObject(response); 
JSONArray routeArray = json.getJSONArray("routes"); 
JSONObject routes = routeArray.getJSONObject(0); 

JSONArray legsArray = routes.getJSONArray("legs"); 
JSONObject newDisTimeOb = legsArray.getJSONObject(0); 

JSONObject distOb = newDisTimeOb.getJSONObject("distance"); 
JSONObject timeOb = newDisTimeOb.getJSONObject("duration"); 

Log.i("Diatance :", distOb.getString("text")); 
Log.i("Time :", timeOb.getString("text")); 

hier zu bekommen, ist ein komplettes Example

+0

Thanks @ rafsanahmad007 für Code. –

+0

wenn die antwort hilft..markiere es als richtig .... danke – rafsanahmad007