已解决
java调用天地图api获取地理信息
来自网友在路上 175875提问 提问时间:2023-09-20 19:09:48阅读次数: 75
最佳答案 问答题库758位专家为你答疑解惑
目录
1、注册账号登录
2、创建应用,获取key
3、查看接口示例
4、调用接口
4.1地理编码查询
4.2逆地理编码查询
天地图网址:天地图API
1、注册账号登录
2、创建应用,获取key
3、查看接口示例
4、调用接口
4.1地理编码查询
public class TiandituAPICallExample2 {public static void main(String[] args) {// 创建 RestTemplate 实例RestTemplate restTemplate = new RestTemplate();try {// 构建 URLString baseUrl = "http://api.tianditu.gov.cn/geocoder";UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl).queryParam("ds", "{\"keyWord\":\"北京市朝阳区酒仙桥路甲10号\"}").queryParam("tk", "你自己的key");String url = builder.toUriString();// 发送 GET 请求并获取响应ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);String responseBody = response.getBody();// 打印响应结果System.out.println(responseBody);} catch (Exception e) {e.printStackTrace();}}
}
结果
封装获取地理坐标
public static Map<String,String> getCoordinate(String address) {// 创建 RestTemplate 实例RestTemplate restTemplate = new RestTemplate();try {// 构建 URLString baseUrl = "http://api.tianditu.gov.cn/geocoder";UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl).queryParam("ds", "{\"keyWord\":\""+address+"\"}").queryParam("tk", "你自己的key");String url = builder.toUriString();// 发送 GET 请求并获取响应ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);int statusCodeValue = response.getStatusCodeValue();if (statusCodeValue == 200) { // 表示成功String responseBody = response.getBody();// 创建 JsonReader 对象JsonReader jsonReader = Json.createReader(new StringReader(responseBody));// 解析 JSON 响应为 JsonObjectJsonObject jsonObject = jsonReader.readObject();// 关闭 JsonReaderjsonReader.close();// 访问解析后的值JsonObject locationObj = jsonObject.getJsonObject("location");//坐标点显示经度double lon = locationObj.getJsonNumber("lon").numberValue().doubleValue();//坐标点显示纬度double lat = locationObj.getJsonNumber("lat").numberValue().doubleValue();Map map = new HashMap();map.put("lon",lon);map.put("lat",lat);return map;}} catch (Exception e) {e.printStackTrace();}return null;}
4.2逆地理编码查询
通过坐标获取地理信息
public static String getAddress(Double lon, Double lat, String tk){String postStr = "{'lon':"+lon+",'lat':"+lat+",'ver':1}";String apiUrl = "http://api.tianditu.gov.cn/geocoder?postStr="+postStr+"&type=geocode&tk="+tk+"";StringBuilder response = null;try {// 创建 URL 对象URL url = new URL(apiUrl);// 打开连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 设置请求方法为 GETconnection.setRequestMethod("GET");// 获取响应状态码int responseCode = connection.getResponseCode();System.out.println("Response code: " + responseCode);// 读取响应内容BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}reader.close();// 关闭连接connection.disconnect();} catch (IOException e) {e.printStackTrace();}return response.toString();}
结果
所需依赖
<!--spring-web--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.29</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency><dependency><groupId>javax.json</groupId><artifactId>javax.json-api</artifactId><version>1.1.4</version></dependency><dependency><groupId>org.glassfish</groupId><artifactId>javax.json</artifactId><version>1.1.4</version></dependency>
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"java调用天地图api获取地理信息":http://eshow365.cn/6-10178-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: vue watch 侦听器 监视器
- 下一篇: tcpdump常用命令