摘要 工作中刚好用到这块,觉得挺好分享下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | package com.pb.baiduapi; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; /** * 获取经纬度 * * @author jueyue 返回格式:Map<String,Object> map map.put("status", * reader.nextString());//状态 map.put("result", list);//查询结果 * list<map<String,String>> * 密钥:f247cdb592eb43ebac6ccd27f796e2d2 */ public class GetLatAndLngByBaidu { /** * @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 { GetLatAndLngByBaidu getLatAndLngByBaidu = new GetLatAndLngByBaidu(); Object[] o = getLatAndLngByBaidu.getCoordinate( "成都市天府四街" ); System.out.println(o[ 0 ]); //经度 System.out.println(o[ 1 ]); //纬度 } } |
输出结果:104.04701
30.548397
调用以下路径根据经纬度获取地址,返回数据为JSON格式,
http://api.map.baidu.com/geocoder/v2/?ak=pmCgmADsAsD9rEXkqWNcTzjd&location=30.548397,104.04701&output=json&pois=1
返回结果:
{"status":0,"result":{"location":{"lng":104.04701001273,"lat":30.548396923974},"formatted_address":