申请百度开放平台KEY(ak) 没申请,随便找了一个
参数说明:
extensions_town:行政区划返回乡镇级数据(town),仅国内召回乡镇数据
coordtype:坐标的类型 bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度)
/**
* @Description 根据经纬度获取乡镇
* @param lat
* @param lng
* @Throws
* @Return java.lang.String
* @Date 2021-03-22 17:50:36
* @Author WangKun
**/
public static String getTownByLatAndLng(String lat,String lng) {
try {
String urlAddress = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR&output=json&extensions_town=true&coordtype=wgs84ll&location="+lat+","+lng+"";
StringBuilder sb = new StringBuilder();
URL url = new URL(urlAddress);
URLConnection connection = url.openConnection();
if (connection != null) {
InputStreamReader insr = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(insr);
String data;
while ((data = br.readLine()) != null) {
sb.append(data);
}
insr.close();
}
String str = sb.toString();
if (StringUtils.isNotBlank(str) && StringUtils.isNotEmpty(str)) {
JSONObject json = JSON.parseObject(str);
if (json.getInteger("status") == 0){
return json.getJSONObject("result").getJSONObject("addressComponent").getString("town");
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}