package com.unshoping.quickshare.common.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * @author Administrator * * 住宅小区工具类 */ public class ResidentialAreaUtils { public static JSONArray getPois(String lat, String lng,int page) { JSONArray obj = getLocationInfo(lng, lat,page).getJSONArray("pois"); return obj; } public static JSONObject getLocationInfo(String lat, String lng,int page) { String url = "http://restapi.amap.com/v3/place/around?location=" + lng + "," + lat + "&output=json&offset=20&radius=1000&page="+page+"&types=120300&extensions=all&key=" + "f69af2fa030b5bcadcfca02caa536500"; JSONObject obj; obj = JSONObject.parseObject(HttpUtilnew.getRequest(url)); return obj; } public static int getPoisCount(String lat, String lng,int page){ String count = getLocationInfo(lng, lat,page).getString("count"); return Integer.parseInt(count); } /** * 分页获取附近1公里住宅区 * @param lon * @param lat * @param page * @return */ public static Map<Integer,Map<String,Object>> getLocationMapPage(double lon,double lat,int page){ Map<Integer,Map<String,Object>> mapse=new HashMap<Integer,Map<String,Object>>(); JSONArray jsonArray=getPois(String.valueOf(lat), String.valueOf(lon),page); int f=0; for(int j=0;j<jsonArray.size();j++){ JSONObject ob =jsonArray.getJSONObject(j); Map<String,Object> map=new HashMap<>(); map.put("id", ob.get("id")); map.put("name", ob.get("name")); map.put("pname", ob.get("pname")); map.put("cityname", ob.get("cityname")); map.put("adname", ob.get("adname")); map.put("address", ob.get("address")); mapse.put(f+1, map); f=f+1; } return mapse; } /** * 分页获取附近1公里住宅小区 * @param lon * @param lat * @param page * @return */ public static List<Map<String,Object>> getAreaLists(double lon,double lat,int page){ List list = new ArrayList(); Map<Integer,Map<String,Object>> maps = getLocationMapPage(lon,lat,page); if(maps.size()>0){ for(int i=1;i<=maps.size();i++){ Map<String,Object> data = new HashMap<String,Object>(); data.put("buildingId", maps.get(i).get("id")); data.put("villageName", maps.get(i).get("name")); String provice = maps.get(i).get("pname")==null?"":maps.get(i).get("pname").toString(); String city = maps.get(i).get("cityname")==null?"":maps.get(i).get("cityname").toString(); String adname = maps.get(i).get("adname")==null?"":maps.get(i).get("adname").toString(); String address =maps.get(i).get("address")==null?"":maps.get(i).get("address").toString(); String area = provice+city+adname+address; if(provice.equals(city)){ area = city+adname+address; } data.put("position", area); list.add(data); } } // System.out.println(list); return list; } /** * 获取总页数 * @param lon * @param lat * @param page * @return */ public static int getTotalPage(double lon,double lat,int page){ int count = getPoisCount(String.valueOf(lat), String.valueOf(lon),page); int pages = count%20; int pagese = count/20; if(pages!=0){ pagese=pagese+1; } if(pagese==0){ pagese=1; } return pagese; } /** * 获取系统附近住宅小区 * @param lat 纬度 * @param lon 经度 */ public static Map<Integer,Map<String,Object>> getLocationMap(double lon,double lat){ int count = getPoisCount(String.valueOf(22.571335), String.valueOf(113.861612),1); int pages = count%20; int page = count/20; if(pages!=0){ page=page+1; } if(page==0){ page=1; } Map<Integer,Map<String,Object>> mapse=new HashMap<Integer,Map<String,Object>>(); int f=0; for(int i=1;i<=page;i++){ JSONArray jsonArray=getPois(String.valueOf(lat), String.valueOf(lon),i); for(int j=0;j<jsonArray.size();j++){ JSONObject ob =jsonArray.getJSONObject(j); Map<String,Object> map=new HashMap<>(); map.put("id", ob.get("id")); map.put("name", ob.get("name")); mapse.put(f+1, map); f=f+1; } } System.out.println(mapse); System.out.println(mapse.size()); // JSONArray jsonArray=getPois(String.valueOf(lat), String.valueOf(lon),page); // Iterator<Object> it = jsonArray.iterator(); // Map<Integer,Map<String,Object>> maps=new HashMap<Integer,Map<String,Object>>(); // for(int i=0;i<jsonArray.size();i++){ // JSONObject ob =jsonArray.getJSONObject(i); // Map<String,Object> map=new HashMap<>(); // map.put("distance", ob.get("distance")); // map.put("id", ob.get("id")); // map.put("poiType", ob.get("type")); // map.put("name", ob.get("name")); // map.put("addr", ob.get("address")); // map.put("province", ob.get("pname")); // map.put("city", ob.get("cityname")); // map.put("district", ob.get("adname")); // String point=ob.get("location").toString(); // String[] points=point.split(","); // String pointx=points[0]; // String pointy=points[1]; // map.put("pointx", pointx); // map.put("pointy", pointy); // maps.put(i+1, map); // } return mapse; } /** * 获取附近1公里所有住宅小区 * @param lon * @param lat * @return */ public static List<Map<String,Object>> getAreaList(double lon,double lat){ List list = new ArrayList(); Map<Integer,Map<String,Object>> maps = getLocationMap(lon,lat); if(maps.size()>0){ for(int i=1;i<=maps.size();i++){ Map<String,Object> data = new HashMap<String,Object>(); data.put("buildingId", maps.get(i).get("id")); data.put("villageName", maps.get(i).get("name")); list.add(data); } } System.out.println(list); return list; } /** * 根据地址获取经纬度信息 * @param address * @return */ public static Map<String,String> getPotByaddress(String address){ String url = "http://restapi.amap.com/v3/geocode/geo?output=JSON&key="+"e71bbd768ff00eb02f3b4f8371ae71f2"; // String url = "http://restapi.amap.com/v3/geocode/geo?address="+address+"&output=JSON&key="+"f69af2fa030b5bcadcfca02caa536500"; JSONObject obj; Map<String,String> data = new HashMap<>(); obj = JSONObject.parseObject(HttpUtilnew.getRequest(url,"address:"+address)); String status = obj.getString("status"); String count = obj.getString("count"); if ("1".equals(status) && !"0".equals(count)){ String location = obj.getJSONArray("geocodes").getJSONObject(0).getString("location"); data.put("code","1"); data.put("location",location); }else{ data.put("code",obj.getString("info")); data.put("msg","未获取经纬度,请检查地址信息"); } return data; } public static void main(String[] args) { Map<String, String> data = getPotByaddress("嘉应大学(公交站)"); if ("1".equals(data.get("code"))){ System.out.println(data.get("location").split(",")[0]); System.out.println(data.get("location").split(",")[1]); } } /*public static void main(String[] args) { // getLocationMap(113.861612,22.571335); getAreaLists(113.861059,22.571452,2); // getLocationMap(113.861612,22.571335); // getAreaList(113.861612,22.571335); int count = getPoisCount(String.valueOf(22.571335), String.valueOf(113.861612),1); int pages = count%20; int page = count/20; if(pages!=0){ page=page+1; } if(page==0){ page=1; } List list = new ArrayList(); for(int i=1;i<=page;i++){ // Map<Integer, Map<String, Object>> map = getLocationMap(113.861612,22.571335,i); // list.add(map); } // System.out.println(list); Map<Integer,Map<String,Object>> mapse=new HashMap<Integer,Map<String,Object>>(); int f=0; for(int j=0;j<list.size();j++){ System.out.println(list.get(j)); Map<String,Object> datas = (Map<String, Object>) list.get(j); for(int m=1;m<=datas.size();m++){ Map<String,Object> maps = new HashMap<String,Object>(); Map<String,Object> distance=(Map<String, Object>) datas.get(m); maps.put("distance", distance.get("distance")); maps.put("id", distance.get("id")); maps.put("name", distance.get("name")); mapse.put(f+1, maps); f=f+1; } } // System.out.println(mapse); // System.out.println(mapse.size()); Map<String,Object> maps = new HashMap<String,Object>(); for(int j=0;j<list.size();j++){ System.out.println(list.get(j)); Map<String,Object> datas = (Map<String, Object>) list.get(j); for(int m=1;m<=datas.size();m++){ Map<String,Object> distance=(Map<String, Object>) datas.get(m); maps.put(distance.get("id").toString(), distance.get("name")); } } // System.out.println(maps); }*/ }
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.unshoping.quickshare.common.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * * @author Administrator */ public class HttpUtilnew { // 连接超时时间 private static final int CONNECTION_TIMEOUT = 3000; //读取超时时间 private static final int READ_TIMEOUT = 5000; // 参数编码 private static final String ENCODE_CHARSET = "utf-8"; /** * 发送HTTP_POST请求 * * @see 本方法默认的连接和读取超时均为30秒 * @param reqURL * 请求地址 * @param params * 发送到远程主机的正文数据[a:1,b:2] * @return String */ public static String postRequest(String reqURL, String... params) { StringBuilder resultData = new StringBuilder(); URL url = null; try { url = new URL(reqURL); } catch (MalformedURLException e) { e.printStackTrace(); } HttpURLConnection urlConn = null; InputStreamReader in = null; BufferedReader buffer = null; String inputLine = null; DataOutputStream out = null; if (url != null) { try { urlConn = (HttpURLConnection) url.openConnection(); urlConn.setDoInput(true);// 设置输入流采用字节流 urlConn.setDoOutput(true);// 设置输出流采用字节流 urlConn.setRequestMethod("POST"); urlConn.setUseCaches(false); // POST请求不能使用缓存 urlConn.setInstanceFollowRedirects(true); urlConn.setConnectTimeout(CONNECTION_TIMEOUT);// 设置连接超时 urlConn.setReadTimeout(READ_TIMEOUT); // 设置读取超时 // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的 urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); urlConn.setRequestProperty("Charset", ENCODE_CHARSET);// String param = sendPostParams(params); urlConn.setRequestProperty("Content-Length", param.getBytes().length + "");// // urlConn.setRequestProperty("Connection", "Keep-Alive"); // //设置长连接 urlConn.connect();// 连接服务器发送消息 if (!"".equals(param)) { out = new DataOutputStream(urlConn.getOutputStream()); // 将要上传的内容写入流中 out.writeBytes(param); // 刷新、关闭 out.flush(); out.close(); } in = new InputStreamReader(urlConn.getInputStream(), HttpUtilnew.ENCODE_CHARSET); buffer = new BufferedReader(in); if (urlConn.getResponseCode() == 200) { while ((inputLine = buffer.readLine()) != null) { resultData.append(inputLine); } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (buffer != null) { buffer.close(); } if (in != null) { in.close(); } if (urlConn != null) { urlConn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } } return resultData.toString(); } /** * 发送HTTP_GET请求 * * @see 本方法默认的连接和读取超时均为30秒 * @param httpUrl * 请求地址 * @param map * 发送到远程主机的正文数据[a:1,b:2] * @return String */ public static String getRequest(String httpUrl, String... params) { StringBuilder resultData = new StringBuilder(); URL url = null; try { String paramurl = sendGetParams(httpUrl, params); url = new URL(paramurl); } catch (MalformedURLException e) { e.printStackTrace(); } HttpURLConnection urlConn = null; InputStreamReader in = null; BufferedReader buffer = null; String inputLine = null; if (url != null) { try { urlConn = (HttpURLConnection) url.openConnection(); urlConn.setRequestMethod("GET"); urlConn.setConnectTimeout(CONNECTION_TIMEOUT); in = new InputStreamReader(urlConn.getInputStream(), HttpUtilnew.ENCODE_CHARSET); buffer = new BufferedReader(in); if (urlConn.getResponseCode() == 200) { while ((inputLine = buffer.readLine()) != null) { resultData.append(inputLine); } } } catch (IOException e) { e.printStackTrace(); } finally { try { if (buffer != null) { buffer.close(); } if (in != null) { in.close(); } if (urlConn != null) { urlConn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } } return resultData.toString(); } /** * Post追加参数 * * @see <code>params</code> * @param reqURL * 请求地址 * @param params * 发送到远程主机的正文数据[a:1,b:2] * @return */ private static String sendPostParams(String... params) { StringBuilder sbd = new StringBuilder(""); if (params != null && params.length > 0) { for (int i = 0; i < params.length; i++) { String[] temp = params[i].split(":"); sbd.append(temp[0]); sbd.append("="); sbd.append(urlEncode(temp[1])); sbd.append("&"); } sbd.setLength(sbd.length() - 1);// 删掉最后一个 } return sbd.toString(); } /** * Get追加参数 * * @see <code>params</code> * @param reqURL * 请求地址 * @param params * 发送到远程主机的正文数据[a:1,b:2] * @return */ private static String sendGetParams(String reqURL, String... params) { StringBuilder sbd = new StringBuilder(reqURL); if (params != null && params.length > 0) { if (isexist(reqURL, "?")) {// 存在? sbd.append("&"); } else { sbd.append("?"); } for (int i = 0; i < params.length; i++) { String[] temp = params[i].split(":"); sbd.append(temp[0]); sbd.append("="); sbd.append(urlEncode(temp[1])); sbd.append("&"); } sbd.setLength(sbd.length() - 1);// 删掉最后一个 } return sbd.toString(); } // 查找某个字符串是否存在 private static boolean isexist(String str, String fstr) { return str.indexOf(fstr) == -1 ? false : true; } /** * 编码 * * @param source * @return */ private static String urlEncode(String source) { String result = source; try { result = java.net.URLEncoder .encode(source, HttpUtilnew.ENCODE_CHARSET); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; } }