通過地址獲取經緯度和通過經緯度獲取地址

1、通過地址獲取該地址的經緯度

    /** 
    * @param addr 
    * 查詢的地址 
    * @return 
    * @throws IOException 
    */
    public Object[] getCoordinate(String addr) throws IOException { 
        String lng = null;//經度
        String lat = null;//緯度
        String address = null; 
        try { 
            address = java.net.URLEncoder.encode(addr, "UTF-8"); 
        }catch (UnsupportedEncodingException e1) { 
            e1.printStackTrace(); 
        } 
        String key = "f247cdb592eb43ebac6ccd27f796e2d2"; 
        String url = String .format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s", address, key); 
        
        URL myURL = null; 
        URLConnection httpsConn = null; 
        try { 
            myURL = new URL(url); 
        } catch (MalformedURLException e) { 
            e.printStackTrace(); 
        } 
        InputStreamReader insr = null;
        BufferedReader br = null;
        try { 
            httpsConn = (URLConnection) myURL.openConnection();// 不使用代理 
            if (httpsConn != null) { 
                insr = new InputStreamReader( httpsConn.getInputStream(), "UTF-8"); 
                br = new BufferedReader(insr); 
                String data = null; 
                int count = 1;
                while((data= br.readLine())!=null){ 
                    if(count==5){
                        lng = (String)data.subSequence(data.indexOf(":")+1, data.indexOf(","));//經度
                        count++;
                    }else if(count==6){
                        lat = data.substring(data.indexOf(":")+1);//緯度
                        count++;
                    }else{
                        count++;
                    }
                } 
            } 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally {
            if(insr!=null){
                insr.close();
            }
            if(br!=null){
                br.close();
            }
        }
        return new Object[]{lng,lat}; 
    }

測試:

    public static void main(String[] args) throws IOException {
        GetLocation getLatAndLngByBaidu = new GetLocation();
        Object[] o = getLatAndLngByBaidu.getCoordinate("成都市天府四街");
        
        System.out.println(o[0]);//經度
        System.out.println(o[1]);//緯度
    }

結果:

104.063832
30.54855

2、通過某個經緯度獲取該經緯度的地址

public static void getCityFromLngAndlat() {
    //通過修改這裏的location(經緯度)參數,即可得到相應經緯度的詳細信息
    String url2 = "http://api.map.baidu.com/geocoder/v2/?ak=pmCgmADsAsD9rEXkqWNcTzjd&location=22.75424,112.76535&output=json&pois=1 ";
    URL myURL2 = null; 
    URLConnection httpsConn2 = null; 
    try { 
        myURL2 = new URL(url2); 
    } catch (MalformedURLException e) { 
        e.printStackTrace(); 
    } 
    InputStreamReader insr2 = null;
    BufferedReader br2 = null;
    try { 
        httpsConn2 = (URLConnection) myURL2.openConnection();// 不使用代理 
        if (httpsConn2 != null) { 
           insr2 = new InputStreamReader( httpsConn2.getInputStream(), "UTF-8"); 
           br2 = new BufferedReader(insr2); 
           String data2 = br2.readLine(); 
           try {
                                     //解析得到的json格式數據
               JSONObject dataJson = new JSONObject(data2);
               JSONObject result = dataJson.getJSONObject("result");
               JSONObject addressComponent = result.getJSONObject("addressComponent");
               String city = addressComponent.getString("city");
                    
               System.out.println("city = " + city);
                
                
           } catch (JSONException e){
             e.printStackTrace();
           }
        } 
    } catch (IOException e) { 
       e.printStackTrace(); 
    } finally {
        if(insr2!=null){
           insr2.close();
        }
        if(br!=null){
           br2.close();
        }
    }
}

獲取的json數據如下:

{
    "status": 0, 
    "result": {
        "location": {
            "lng": 112.76535000506, 
            "lat": 22.754240005123
        }, 
        "formatted_address": "廣東省佛山市高明區X492", 
        "business": "", 
        "addressComponent": {
            "city": "佛山市", 
            "country": "中國", 
            "direction": "", 
            "distance": "", 
            "district": "高明區", 
            "province": "廣東省", 
            "street": "X492", 
            "street_number": "", 
            "country_code": 0
        }, 
        "pois": [
            {
                "addr": "佛山市高明區", 
                "cp": "NavInfo", 
                "direction": "東北", 
                "distance": "680", 
                "name": "皁幕山泉", 
                "poiType": "公司企業", 
                "point": {
                    "x": 112.76102978437, 
                    "y": 22.750226120112
                }, 
                "tag": "公司企業", 
                "tel": "", 
                "uid": "ea4a3dc9e82219534e5547fc", 
                "zip": ""
            }, 
            {
                "addr": "四九二縣道井頭圩附近", 
                "cp": "NavInfo", 
                "direction": "東北", 
                "distance": "690", 
                "name": "鄉下酒樓", 
                "poiType": "美食", 
                "point": {
                    "x": 112.76288029372, 
                    "y": 22.748959622733
                }, 
                "tag": "美食;中餐廳", 
                "tel": "", 
                "uid": "b292b3aa9bf25c28be48422f", 
                "zip": ""
            }, 
            {
                "addr": "四九二縣道井頭村附近", 
                "cp": "NavInfo", 
                "direction": "東北", 
                "distance": "724", 
                "name": "雄英酒樓", 
                "poiType": "美食", 
                "point": {
                    "x": 112.76211673404, 
                    "y": 22.74900128402
                }, 
                "tag": "美食;中餐廳", 
                "tel": "", 
                "uid": "abe37f62d7e119b6cd04efd2", 
                "zip": ""
            }, 
            {
                "addr": "四九二縣道井頭村附近", 
                "cp": "NavInfo", 
                "direction": "東北", 
                "distance": "730", 
                "name": "名峯酒樓", 
                "poiType": "美食", 
                "point": {
                    "x": 112.75995181776, 
                    "y": 22.750776042908
                }, 
                "tag": "美食;中餐廳", 
                "tel": "", 
                "uid": "2fb890627b93c3a7c91b95e2", 
                "zip": ""
            }, 
            {
                "addr": "楊和鎮", 
                "cp": "NavInfo", 
                "direction": "東北", 
                "distance": "757", 
                "name": "山村菜館", 
                "poiType": "美食", 
                "point": {
                    "x": 112.76165859823, 
                    "y": 22.748934625955
                }, 
                "tag": "美食;中餐廳", 
                "tel": "", 
                "uid": "637df60ac6f49c7241afe68b", 
                "zip": ""
            }
        ], 
        "poiRegions": [ ], 
        "sematic_description": "皁幕山泉東北680米", 
        "cityCode": 138
    }
}

 

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