小冷在使用百度地图滑动回调监听附近位置时候,发现省市区这几个字段拿不到,但经纬度可以拿到,项目中省市区这三个字段又必须要取到,所以只能通过先通过经纬度信息调用百度地图api 反解省市区信息。
1. 需要参数
"http://api.map.baidu.com/geocoder/v2/?ak=key&mcode=mcode" + latitude + "," + longitude + "&output=json&pois=1"
替换url中的key和mcode和经纬度
- key (申请的key)
- mcode(百度地图控制台的sha1+包名拼成的串)
- 经纬度
2.方法
private void getLocation(final float longitude, final float latitude) {
new Thread() {
@Override
public void run() {
super.run();
try {
URL url = new URL("http://api.map.baidu.com/geocoder/v2/?ak=key&mcode=mcode" + latitude + "," + longitude + "&output=json&pois=1");
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.connect();
InputStream in = ucon.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String str = reader.readLine();
//outprint.print(str);
str = str.substring(str.indexOf("(") + 1, str.length() - 1);
/* str = str.substring(str.indexOf("(") + 1, str.length()-1);
//outprint.print(str);
JSONObject jsonObject = new JSONObject(str);
String address = "";
address = jsonObject.getJSONObject("result").getString("formatted_address");*/
AddressModel addressModel = GsonUtil.fromJson(str, AddressModel.class);
addressComponent = addressModel.getResult().getAddressComponent();
handler.sendEmptyMessage(1);
Log.i("", "");
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}