根据map坐标经纬度返回相应的地理位置
根据gprs坐标经纬度返回对应的地址:
这里采用的是阿里云地图 ,使用的坐标是火星坐标,如果用百度地图或者其他地图坐标系需要转换坐标
/**
* @author lizhiyuan
* 定义通过经纬度返回地理位置信息
* @param lat
* @param log
* @return
*/
public static String getAdd( String lat,String log){
//lat 小 log 大
//参数解释: 经度,纬度, type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项)
String urlString = "http://gc.ditu.aliyun.com/regeocoding?l="+lat+","+log+"&type=111";
String res = "";
try {
URL url = new URL(urlString);
java.net.HttpURLConnection conn = (java.net.HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream(),"UTF-8"));
String line;
while ((line = in.readLine()) != null) {
res += line+"\n";
}
in.close();
} catch (Exception e) {
System.out.println("error in wapaction,and e is " + e.getMessage());
}
JSONObject jsonObject = JSONObject.fromObject(res);
JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("addrList"));
JSONObject j_2 = JSONObject.fromObject(jsonArray.get(0));
String area = j_2.getString("admName");
String address=null;
if(area!=null&&!area.equals("")){
String arrs[] = area.split(",");
String arr= j_2.getString("name");
address=arrs[0]+arrs[1]+arrs[2]+arr;
}else{
address="";
}
return address;
}
测试方法:
public static void main(String[] args) {
String add = getAdd("23.1745663888889","114.570925555556");
System.out.println(add);
}
测试结果:
广东省惠州市惠城区S21广惠高速