2016-07-07 11 views
0

私はおおよそGoogle Distance Matrix APIからJSONを解析しようとしましたが、距離が表示されていません。Google Distance Matrixに距離がありません

私のGPS位置は確かに0,0ではありません。

文字列距離= getMatrix(緯度、経度);

機能のために私のコードです:

private String getMatrix(double lat , double lang){ 
    JSONObject jObj; 
    String getdistance = ""; 
    String strUrl = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" 
        + Double.toString(my_lat) + "," 
        + Double.toString(my_lang) 
        + "&destinations="+ Double.toString(lat) + "," 
        + Double.toString(lang) 
        + "&mode=walking&sensor=false"; 

    String data = ""; 
    InputStream reader = null; 
    HttpURLConnection urlConnection = null; 
    try{ 
    URL url = new URL(strUrl); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    urlConnection.connect(); 

    reader = urlConnection.getInputStream(); 
    int bRead = -1; 
    byte[] buffer = new byte[1024]; 
    do { 
     bRead = reader.read(buffer, 0, 1024); 
     if (bRead == -1) { 
     break; 
     } 
     data += new String(buffer, 0, bRead); 
    } while (true); 
    urlConnection.disconnect(); 
    } catch(Exception e) { 
    } finally { 

    } 

    try { 
    jObj = new JSONObject(data); 

    JSONArray rowsArray = jObj.getJSONArray("rows"); 
    JSONObject rows = rowsArray.getJSONObject(0); 

    JSONArray elementsArray = rows.getJSONArray("elements"); 
    JSONObject newDisTimeOb = elementsArray.getJSONObject(0); 

    JSONObject distOb = newDisTimeOb.getJSONObject("distance"); 
    getdistance = distOb.optString("text").toString(); 
    } catch (JSONException e) { 
    e.printStackTrace(); 
    } 

    return getdistance; 
} 

答えて

0

まず、あなたが正しくコードでURL文字列を構築してきたかどうかを確認:

String strUrl = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=" 
        + Double.toString(my_lat) + "," 
        + Double.toString(my_lang) 
        + "&destinations="+ Double.toString(lat) + "," 
        + Double.toString(lang) 
        + "&mode=walking&sensor=false"; 

// Line to check if url code is right 
Log.d("APP", "strUrl = " + strUrl); 

を次にかどうか、あなたの次のコードをチェック実際にデータを生成します:

reader = urlConnection.getInputStream(); 
int bRead = -1; 
byte[] buffer = new byte[1024]; 
do { 
    bRead = reader.read(buffer, 0, 1024); 
    if (bRead == -1) { 
    break; 
    } 
    data += new String(buffer, 0, bRead); 
} while (true); 

私の提案バイトごとの応答バイトを読み取る代わりにBufferedReaderを使用することです。その後

変更:

getdistance = distOb.optString("text").toString(); 

getdistance = distOb.getString("text"); 

にあなたは再びここに文字列に変換する必要はありませんので。

Client Libraries for Google Maps Web Servicesを検索しましたが、DistanceMatrixApi.javaが見つかりました。多分私たちはそれを使うことができますが、私はそれを保証することはできません。

関連する問題