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则是已知经纬度的详细地址字符串。
本文介绍如何使用百度地图SDK的Geocoder API,通过经纬度获取详细地址信息。代码示例展示了如何在Android环境中调用API,解析JSON响应并显示地址。
1万+

被折叠的 条评论
为什么被折叠?



