通过百度地图根据地址自动获取经纬度的方法

方法: /** * 返回输入地址的经纬度坐标 * key lng(经度),lat(纬度) */ public static Map<String,String> getGeocoderLatitude(String address){ BufferedReader in = null; try { //将地址转换成utf-8的16进制 address = URLEncoder.encode(address, "UTF-8"); URL tirc = new URL("http://api.map.baidu.com/geocoder?address="+ address +"&output=json&key="+ KEY_1); in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8")); String res; StringBuilder sb = new StringBuilder(""); while((res = in.readLine())!=null){ sb.append(res.trim()); } String str = sb.toString(); Map<String,String> map = null; if(!"".equals(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(); }finally{ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } 哪里需要获取经纬度,就调用上面的方法就可以了,调用方法如下: Map<String, String> json = getGeocoderLatitude(bussiness.getAddress()); if(json==null){ out.println("请输入详细的地址"); }else{ String lon = json.get("lng"); String lat = json.get("lat"); }

你可能感兴趣的:(通过百度地图根据地址自动获取经纬度的方法)