1、测试Activity代码如下:
public class TestActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); Handler handler = new Handler() { public void handleMessage(Message msg) { //Do your coding here with the formatted_address Toast.makeText(TestActivity.this, formatted_address, Toast.LENGTH_SHORT).show(); } }; download(handler, 39.915378, 116.403694, "此处字符串填写的是你申请百度地图sdk应用时自动生成的安全码,二选一即可"); } private String formatted_address; public void download(final Handler handler, final Double latitude, final Double longitude, final String mCode) { new Thread(new Runnable() { @Override public void run() { try { //URL String url_s = "http://api.map.baidu.com/geocoder/v2/?ak=IKp1vq8GAUq69GQh92GhXuLMdLqTXEYw&location=" + latitude + "," + longitude + "&output=json&pois=1&mcode=" + mCode; URL url = new URL(url_s); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //设置连接属性。不喜欢的话直接默认也可以 conn.setConnectTimeout(5000); //设置超时 conn.setUseCaches(false); //数据不多不用缓存了 //这里连接了 conn.connect(); //这里才真正获取到了数据 InputStream inputStream = conn.getInputStream(); InputStreamReader input = new InputStreamReader(inputStream); BufferedReader buffer = new BufferedReader(input); if (conn.getResponseCode() == 200) { //200意味着返回的是"OK" String inputLine; StringBuffer resultData = new StringBuffer(); //StringBuffer字符串拼接很快 while ((inputLine = buffer.readLine()) != null) { resultData.append(inputLine); } String text = resultData.toString(); parseJson(text); handler.sendEmptyMessage(1); Log.v("out---------------->", text); } } catch (Exception e) { e.printStackTrace(); } } }).start(); } private String parseJson(String text) { try { //这里的text就是上边获取到的数据,一个String. JSONObject jsonObject = new JSONObject(text); JSONObject result = jsonObject.getJSONObject("result"); formatted_address = result.getString("formatted_address"); } catch (Exception e) { e.printStackTrace(); } return null; } }
2、其中download方法的参数mCode指的是你申请百度地图sdk应用时自动生成的安全码,二选一即可,如下图所示:
3、其中download方法中的参数latitude和longitude分别为纬度和经度,而private属性formatted_address则是已知经纬度的详细地址字符串。