做同步第三方數據項目的時候,其中就有百度經緯度、街道字段,已知的是百度經緯度,只需要知道街道、街道行政編碼即可。
第一步:參考他人寫的代碼 https://blog.csdn.net/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);
}
