JSON如何通过坐标获取地址?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (144)

我为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。你能帮我解决一下我的代码有什么问题吗?

提问于
用户回答回答于

使用JsonObjectRequestRequestQueue是一个异步机制-工作在后台执行和onResponse调用回调函数,每当响应准备。

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

如果你想阻止线程直到请求完成并设置值address,你应该使用RequestFuture

扫码关注云+社区

领取腾讯云代金券