JAVA地址通过百度地图API转化为经纬度
public static Map getLngAndLat(String address) { Map map = new HashMap(); String url = "http://api.map.baidu.com/geocoder/v2/?address=" + address + "&output=json&ak=你的ak"; //这里需要自己申请百度ak try { String json = loadJSON(url); JSONObject obj = JSONObject.fromObject(json); if (obj.get("status").toString().equals("0")) { double lng = obj.getJSONObject("result").getJSONObject("location").getDouble("lng"); double lat = obj.getJSONObject("result").getJSONObject("location").getDouble("lat"); map.put("lng", getDecimal(lng)); map.put("lat", getDecimal(lat)); //System.out.println("经度:"+lng+"---纬度:"+lat); } else { map.put("error", "未找到相匹配的经纬度!"); System.out.println("未找到相匹配的经纬度!"); } } catch (Exception e) { map.put("error", "未找到相匹配的经纬度,请检查地址"); System.out.println("未找到相匹配的经纬度!请检查地址"); } return map; } public static double getDecimal(double num) { if (Double.isNaN(num)) { return 0; } BigDecimal bd = new BigDecimal(num); num = bd.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue(); return num; } public static String loadJSON(String url) { StringBuilder json = new StringBuilder(); try { URL oracle = new URL(url); URLConnection yc = oracle.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader( yc.getInputStream(), "UTF-8")); String inputLine = null; while ((inputLine = in.readLine()) != null) { json.append(inputLine); } in.close(); } catch (MalformedURLException e) { } catch (IOException e) { } return json.toString(); }
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)