做同步第三方数据项目的时候,其中就有百度经纬度、街道字段,已知的是百度经纬度,只需要知道街道、街道行政编码即可。
第一步:参考他人写的代码 https://blog.youkuaiyun.com/WangKun_0612/article/details/115119422
—————————————————————————————————————————————
第二步:稍作改动,再根据已经写好的http工具类进行改动
/**
*
* @param lat
* @param lon
* @return
*/
private JSONObject getTownByLonAndLat(String lat,String lon){
Map<String,String> map = getMap();//参数
map.put("ak", "SfrwGH7INvjPq7BwCrYrioBQZm9XXxrR");//申请百度开放平台KEY(ak)
map.put("output", "json");// 输出Json数据
map.put("extensions_town", "true");// 行政区划返回乡镇级数据(town),仅国内召回乡镇数据
map.put("coordtype", "wgs84ll"); // GPS 经纬度类型
map.put("location", lat+","+lon+"");//百度经纬度
String url = "http://api.map.baidu.com/reverse_geocoding/v3/";
List<Header> headers = new ArrayList<>();//header
String str = HttpUtil.getResult(url,map,headers);
JSONObject jsonObject = JSONObject.parseObject(str);
return jsonObject.getJSONObject("result").getJSONObject("addressComponent");
}
HttpUtil http工具方法
/**
* get请求
*
* @param url 请求地址
* @param map 参数集
* @return String
*/
public static String getResult(String url, Map<String, String> map, List<Header> headers) {
String entityStr = null;
try {
entityStr = getRequestMethod(map, url, HttpGet.METHOD_NAME, headers);
} catch (IOException e) {
log.error("IO异常");
e.printStackTrace();
}
return entityStr;
}
/**
* 获取请求结果
*
* @param map 参数集
* @param url 请求地址
* @param method 请求方式
* @return String
* @throws IOException
*/
public static String getRequestMethod(Map<String, String> map, String url, String method, List<Header> headers) throws IOException {
List<NameValuePair> params = new ArrayList<>(4);
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for (Map.Entry<String, String> e : entrySet) {
String name = e.getKey();
String value = e.getValue();
NameValuePair pair = new BasicNameValuePair(name, value);
params.add(pair);
}
HttpClient client = getConnection();
HttpResponse response = client.execute(getRequestMethod(params, url, method, headers));
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
return EntityUtils.toString(entity, StandardCharsets.UTF_8);
} else {
log.error("请求失败 {}", url);
}
HttpEntity entity = response.getEntity();
return EntityUtils.toString(entity, StandardCharsets.UTF_8);
}