高德住宅小區工具類

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;
        }
        
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章