【问题标题】:Google transit json parsing directions谷歌过境 json 解析方向
【发布时间】:2014-08-29 12:23:10
【问题描述】:

我可以使用纬度和纬度从谷歌交通 api 检索数据,但不能使用 directions 属性。这是我到目前为止所做的

public class MainActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
    }
            try
            {
                String Lat=Double.toString(22.508507985602836);
                String Long=Double.toString(73.474991977022533);

                String Address = ReadAddressFromWebService(Lat,Long);
                Toast.makeText(this,Address, Toast.LENGTH_LONG).show();
            }

            catch(Exception e)
            {
                Log.e("error","Json parsing error :"+ e.toString());
                Toast.makeText(this,e.toString(), Toast.LENGTH_LONG).show();
            }
    }

    public String ReadAddressFromWebService(String latitude, String longitude) {
            String Address="";
            StringBuffer sb=new StringBuffer();
            sb.append("http://maps.googleapis.com/maps/api/geocode/json?latlng="+
              latitude +","+longitude +"&sensor=false");
                String url=sb.toString();
            HttpClient httpClient=new DefaultHttpClient();

            Log.i("","HTTP client created");
            String responseData="";
        try {
            HttpResponse response=httpClient.execute(new HttpGet(url));
            response.addHeader("Accept-Language", "it-IT");
            HttpEntity entity=response.getEntity();
            Log.i("", "HTTP Response arrived");

            BufferedReader bf=new BufferedReader(new
            InputStreamReader((entity.getContent()),"UTF-8"));
            String line="";
            Log.i("","Start buffre reading");

        while((line=bf.readLine())!=null){
            responseData=responseData+line;
        }

            JSONObject jsonObj = new JSONObject(responseData);

            JSONArray resultArry = jsonObj.getJSONArray("results");

            Address = resultArry.getJSONObject(0).getString("formatted_address").toString();

        } catch (Exception e) {
        // TODO Auto-generated catch block
            e.printStackTrace();
    }

    return Address;
    }
}

我尝试以这种方式更改StringBuffersb.append("http://maps.googleapis.com/maps/api/directions/json?origin="+ latitude +"&destination="+longitude +"&sensor=false");

但是我用来查看结果的 toast 没有显示任何内容.. 是空的,并且我在行中收到 JSONObject 错误:地址 = resultArry.getJSONObject(0).getString("formatted_address").toString();

所以,这是我要解析的 json:http://maps.googleapis.com/maps/api/directions/json?origin=vicenza&destination=costabissara&sensor=false

我会显示路线..当然我改变了:

`JSONArray resultArry = jsonObj.getJSONArray("results");

        Address = resultArry.getJSONObject(0).getString("formatted_address").toString();`

`JSONArray resultArry = jsonObj.getJSONArray("routes");

        Address = resultArry.getJSONObject(0).getString("legs").toString();`

但没有成功..

【问题讨论】:

    标签: java android json google-maps


    【解决方案1】:

    我已经尝试了您的示例并且它有效。我必须做的唯一改变是,我没有将坐标传递给ReadAddressFromWebService,而是传递了起点和终点字符串:

    String from = "vicenza";
    String to = "costabissara";
    
    String Address = ReadAddressFromWebService(from,to);
    

    origindestination 使用位置名称而不是坐标。

    【讨论】:

    • 谢谢你,你是对的..但是,通过这种方式我可以设置 2 个不同的城市.. 我如何使用同一个城市的 2 个地址检索目的地?不知道你懂没。。
    • @End.Game Here's an exampe。您只需用逗号分隔地址、城市和国家/地区。您可以从Google Maps获取完整地址。
    猜你喜欢
    • 2014-03-26
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多