最近看百度地圖官方API,寫了一個(gè)通過(guò)地址獲取經(jīng)緯度,
          或者通過(guò)經(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è)置代理,沒(méi)代理可注釋
          //  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ù)具體含義 
                 請(qǐng)參考http://developer.baidu.com/map/geocoding-api.htm
               

          Feedback

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

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

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

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

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东山县| 廉江市| 寿光市| 武清区| 阜康市| 米易县| 清丰县| 鞍山市| 保靖县| 阿勒泰市| 景洪市| 石棉县| 自贡市| 佛冈县| 陆良县| 山丹县| 绥江县| 阳朔县| 如皋市| 泰宁县| 保定市| SHOW| 凤山市| 大足县| 清新县| 绥棱县| 平凉市| 宿州市| 达拉特旗| 正宁县| 商城县| 岫岩| 英山县| 子长县| 客服| 唐山市| 嘉鱼县| 伊川县| 富源县| 英德市| 双桥区|