JSON通过坐标获取地址

时间:2018-07-12 19:14:01

标签: java android json android-gps

我为Android创建了一个应用程序,该应用程序保存GPS坐标并显示其地址。

我有一个功能:

public String getAddressByGpsCoordinates(String latlan) {

    requestQueue = Volley.newRequestQueue(this);

    String url=  "http://maps.googleapis.com/maps/api/geocode/json?latlng="+latlan+"&sensor=true&key=(I have a correct key :))";
    JsonObjectRequest request = new JsonObjectRequest(url,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                    try {
                        address = response.getJSONArray("results").getJSONObject(0).getString("formatted_address");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
        }
    });

    requestQueue.add(request);
    return address;
}

始终返回NULL。 您能帮我代码的问题吗?

1 个答案:

答案 0 :(得分:0)

JsonObjectRequestRequestQueue一起使用是一种异步机制-工作在后台执行,只要响应准备就绪,就会调用onResponse回调。

因此,很有可能您是在调用onResponse之前从方法中返回的,并且由于address并未预先设置(无论如何,您已经显示了),因此它的值将为null

如果要在请求完成之前阻塞线程并设置address的值,则应使用RequestFutureCan I do a synchronous request with volley?