获取百度地图的某个经纬度最近的地名
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import org.json.JSONArray; import org.json.JSONObject; public class ReverseGeoCoding { private static final String BAIDU_MAP_API_URL = "http://api.map.baidu.com/reverse_geocoding/v3/?"; private static final String AK = "your_ak_here"; // 替换成你自己的百度地图开发者AK public static String getNearestLocation(double lat, double lng) { try { // 组装请求URL StringBuilder sb = new StringBuilder(BAIDU_MAP_API_URL); sb.append("ak=").append(AK).append("&"); sb.append("output=json&"); sb.append("coordtype=wgs84ll&"); sb.append("location=").append(lat).append(",").append(lng); // 发送HTTP请求 URL url = new URL(sb.toString()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); // 解析JSON数据 BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); StringBuilder result = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { result.append(line); } reader.close(); conn.disconnect(); JSONObject json = new JSONObject(result.toString()); int status = json.getInt("status"); if (status == 0) { JSONObject resultObj = json.getJSONObject("result"); JSONArray pois = resultObj.getJSONArray("pois"); if (pois.length() > 0) { JSONObject poi = pois.getJSONObject(0); return poi.getString("name"); } } } catch (Exception e) { e.printStackTrace(); } return null; } public static void main(String[] args) { // 测试获取某个经纬度最近的地名 double lat = 39.915291; double lng = 116.403857; String nearestLocation = getNearestLocation(lat, lng); System.out.println("经度:" + lng + ",纬度:" + lat + ",最近的地名:" + nearestLocation); } }
在代码中,getNearestLocation
方法接收一个经纬度坐标作为输入参数,并调用百度地图的逆地址解析 API 获取该坐标最近的地名。该方法返回一个字符串,表示最近的地名。在 main
方法中,我们输入了一个经纬度坐标,调用 getNearestLocation
方法获取最近的地名,并将结果输出到控制台。请注意,代码中的 AK
变量需要替换为你自己的百度地图开发者AK。
学习时的痛苦是暂时的 未学到的痛苦是终生的
作者:卷心菜的奇妙历险
本文版权归作者和博客园共有,遵循 CC 4.0 BY-SA 版权协议,欢迎转载 转载请附上原文出处链接和本声明,否则保留追究法律责任的权利。