根据经纬度坐标定位用户所在城市
package com.henu.controller; import java.net.URL; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class GetLocation { public static void main(String[] args) { // lat 39.97646 // log 116.3039 String add = getAdd("113.595688", "34.798947"); 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("省:" + arr[0] + "\n市:" + arr[1] + "\n区:" + arr[2]); String admCode = j_2.getString("admCode"); System.out.println(admCode); } 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 = ""; 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()); } System.out.println(res); return res; } }
运行结果:
{"queryLocation":[34.798947,113.595688],"addrList":[{"type":"poi","status":1,"name":"阿登饭庄","id":"ANB017316EI9","admCode":"410102","admName":"河南省,郑州市,中原区,","addr":"","nearestPoint":[113.59577,34.79889],"distance":10.296}]}
省:河南省
市:郑州市
区:中原区
410102