1

Google지도 방향 API에서 얻는 거리와 기간을 추가하려고합니다. 나는 JSON에 대해별로 신경 쓰지 않아 다음 코드에서 거리와 방향을 추가하도록 도와주세요. 우리가 코드DirectionsJSONParser 파일에 거리와 기간을 추가하는 방법

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

을 다음과 같이 된 JSONObject를 사용해야하지만 어디 추가하는 방법과 그 코드를 추가하는 방법을 모르는 거리와 방향으로

. 다음

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

답변

0

Distance하고 여기에

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

Duration 코드에 대한 rafsanahmad007 @ 완전한 Example

+0

감사입니다 얻을이 시도입니다. –

+0

답변이 도움이된다면 ... 올바른 것으로 표시 .... thankx – rafsanahmad007

관련 문제