根据经纬度查询相应的省市区名称

来源:互联网 发布:绵阳自驾租车软件 编辑:程序博客网 时间:2024/05/23 23:10
import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class GetConfigureInfo {public static void main(String[] args) { // lat 39.97646 //log 116.3039String add = getAdd("116.3039", "39.97646");JSONObject jsonObject = JSONObject.fromObject(add);JSONArray jsonArray = JSONArray.fromObject(jsonObject.getString("addrList"));JSONObject j_2 = JSONObject.fromObject(jsonArray.get(0));String allAdd = j_2.getString("admName");String arr[] = allAdd.split(",");System.out.println(add);System.out.println("省:" + arr[0] + "\n市:" + arr[1] + "\n区:" + arr[2]);}/** * * @Description: 根据经纬度 查询地址 * @param @param log 纬度* @param @param lat 经度* @return String    String类型的json串* @throws */public static String getAdd(String log, String lat) { // lat 小 log 大// 参数解释: 纬度,经度 type 001 (100代表道路,010代表POI,001代表门址,111可以同时显示前三项) String urlString = "http://gc.ditu.aliyun.com/regeocoding?l=" + lat + "," + log + "&type=010";String res = "";BufferedReader in = null;try {URL url = new URL(urlString);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setDoOutput(true);conn.setRequestMethod("POST");in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;while ((line = in.readLine()) != null) {res += line + "\n";}} catch (Exception e) {e.printStackTrace();}finally{try {in.close();} catch (IOException e) {e.printStackTrace();}}return res;}}

注意:运行时必须连接网络,如果网络不通或网络不好,会报错的.java.net.UnknownHostException.

要引入6个jar包才可以进行json的解析,如果不需要json解析不需要jar包引入.

commons-beanutils-1.8.3.jar,
 commons-collections-3.2.1.jar, 
commons-lang-2.4.jar, 
commons-logging-1.1.1.jar, 
ezmorph-1.0.6.jar,
 json-lib-2.3-jdk15.jar

jar包下载地址:点击打开链接

原创粉丝点击