百度地圖API中g(shù)eocoding的用法

          Posted on 2012-11-06 13:42 kiss_xian 閱讀(5836) 評論(3)  編輯  收藏

                  最近看百度地圖官方API,寫了一個(gè)通過地址獲取經(jīng)緯度,
          或者通過經(jīng)緯度得到詳細(xì)地址的工具類方法,源碼如下:

          import java.io.BufferedReader;
          import java.io.InputStreamReader;
          import java.net.URL;
          import java.net.URLEncoder;
          import java.util.HashMap;
          import java.util.Map;

          public class LatitudeUtils {
           
           public static final String KEY_1 = "327db7009617d6806b9c38e819ea06ac"; 
           /**
            * 返回輸入地址的經(jīng)緯度坐標(biāo)
            * key lng(經(jīng)度),lat(緯度)
            */
           public static Map<String,String> getLatitude(String address){
            try {
          //  將地址轉(zhuǎn)換成utf-8的16進(jìn)制
               address = URLEncoder.encode(address, "UTF-8");
          //  如果有代理,要設(shè)置代理,沒代理可注釋
          //  System.setProperty("http.proxyHost","192.168.172.23");
          //  System.setProperty("http.proxyPort","3209");
             URL resjson = new URL("http://api.map.baidu.com/geocoder?address="
                                + address +"&output=json&key="+ KEY_1);
            
             BufferedReader in = new BufferedReader(
                                new InputStreamReader(resjson.openStream()));
             String res;
             StringBuilder sb = new StringBuilder("");
             while((res = in.readLine())!=null){
              sb.append(res.trim());
             }
             in.close();
             String str = sb.toString();
             System.out.println("return json:"+str);
             Map<String,String> map = null;
             if(StringUtils.validNull(str)){
              int lngStart = str.indexOf("lng\":");
              int lngEnd = str.indexOf(",\"lat");
              int latEnd = str.indexOf("},\"precise");
              if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
               String lng = str.substring(lngStart+5, lngEnd);
               String lat = str.substring(lngEnd+7, latEnd);
               map = new HashMap<String,String>();
               map.put("lng", lng);
               map.put("lat", lat);
               return map;
              }
             }
            }catch (Exception e) {
             e.printStackTrace();
            }
            return null;
           }
           public static void main(String args[]){
            Map<String,String> map = LatitudeUtils.getLatitude("北京西城區(qū)北京北站");
              if(null != map){
                 System.out.println(map.get("lng"));
                 System.out.println(map.get("lat"));
              }
           }
          }

          注:這里只是geocoding用法的一個(gè)具體實(shí)現(xiàn),其中各個(gè)可選參數(shù)具體含義 
                 請參考http://developer.baidu.com/map/geocoding-api.htm
               

          Feedback

          # re: 百度地圖API中g(shù)eocoding的用法  回復(fù)  更多評論   

          2013-08-06 14:28 by 蔣永永
          validNull()你這個(gè)方法從哪里來的?

          # re: 百度地圖API中g(shù)eocoding的用法  回復(fù)  更多評論   

          2013-09-19 11:55 by 饒衡
          這個(gè)代碼很好用,請問有沒有通過經(jīng)緯碼得到詳細(xì)地址的代碼

          # re: 百度地圖API中g(shù)eocoding的用法  回復(fù)  更多評論   

          2015-09-09 12:13 by 劉通
          @饒衡
          同求 通過坐標(biāo)轉(zhuǎn)換地址

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 竹北市| 铜梁县| 昌乐县| 太康县| 民县| 林甸县| 曲麻莱县| 碌曲县| 龙游县| 册亨县| 信宜市| 阿克| 闽侯县| 兴化市| 松原市| 阜宁县| 得荣县| 巴塘县| 巴东县| 怀化市| 汝阳县| 即墨市| 全椒县| 阳城县| 北辰区| 新营市| 江达县| 广丰县| 九台市| 山丹县| 永顺县| 古浪县| 盖州市| 武定县| 长宁区| 上饶市| 当雄县| 古浪县| 闻喜县| 高安市| 英山县|