• java调用天地图api获取地理信息


    目录

    1、注册账号登录

    2、创建应用,获取key

    3、查看接口示例

    4、调用接口

    4.1地理编码查询

    4.2逆地理编码查询


    天地图网址:天地图API

    1、注册账号登录

    2、创建应用,获取key

    3、查看接口示例

    4、调用接口

    4.1地理编码查询
    1. public class TiandituAPICallExample2 {
    2. public static void main(String[] args) {
    3. // 创建 RestTemplate 实例
    4. RestTemplate restTemplate = new RestTemplate();
    5. try {
    6. // 构建 URL
    7. String baseUrl = "http://api.tianditu.gov.cn/geocoder";
    8. UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl)
    9. .queryParam("ds", "{\"keyWord\":\"北京市朝阳区酒仙桥路甲10号\"}")
    10. .queryParam("tk", "你自己的key");
    11. String url = builder.toUriString();
    12. // 发送 GET 请求并获取响应
    13. ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
    14. String responseBody = response.getBody();
    15. // 打印响应结果
    16. System.out.println(responseBody);
    17. } catch (Exception e) {
    18. e.printStackTrace();
    19. }
    20. }
    21. }

    结果

    封装获取地理坐标

    1. public static Map<String,String> getCoordinate(String address) {
    2. // 创建 RestTemplate 实例
    3. RestTemplate restTemplate = new RestTemplate();
    4. try {
    5. // 构建 URL
    6. String baseUrl = "http://api.tianditu.gov.cn/geocoder";
    7. UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(baseUrl)
    8. .queryParam("ds", "{\"keyWord\":\""+address+"\"}")
    9. .queryParam("tk", "你自己的key");
    10. String url = builder.toUriString();
    11. // 发送 GET 请求并获取响应
    12. ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
    13. int statusCodeValue = response.getStatusCodeValue();
    14. if (statusCodeValue == 200) { // 表示成功
    15. String responseBody = response.getBody();
    16. // 创建 JsonReader 对象
    17. JsonReader jsonReader = Json.createReader(new StringReader(responseBody));
    18. // 解析 JSON 响应为 JsonObject
    19. JsonObject jsonObject = jsonReader.readObject();
    20. // 关闭 JsonReader
    21. jsonReader.close();
    22. // 访问解析后的值
    23. JsonObject locationObj = jsonObject.getJsonObject("location");
    24. //坐标点显示经度
    25. double lon = locationObj.getJsonNumber("lon").numberValue().doubleValue();
    26. //坐标点显示纬度
    27. double lat = locationObj.getJsonNumber("lat").numberValue().doubleValue();
    28. Map map = new HashMap();
    29. map.put("lon",lon);
    30. map.put("lat",lat);
    31. return map;
    32. }
    33. } catch (Exception e) {
    34. e.printStackTrace();
    35. }
    36. return null;
    37. }

    4.2逆地理编码查询

    通过坐标获取地理信息

    1. public static String getAddress(Double lon, Double lat, String tk){
    2. String postStr = "{'lon':"+lon+",'lat':"+lat+",'ver':1}";
    3. String apiUrl = "http://api.tianditu.gov.cn/geocoder?postStr="+postStr+"&type=geocode&tk="+tk+"";
    4. StringBuilder response = null;
    5. try {
    6. // 创建 URL 对象
    7. URL url = new URL(apiUrl);
    8. // 打开连接
    9. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    10. // 设置请求方法为 GET
    11. connection.setRequestMethod("GET");
    12. // 获取响应状态码
    13. int responseCode = connection.getResponseCode();
    14. System.out.println("Response code: " + responseCode);
    15. // 读取响应内容
    16. BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    17. response = new StringBuilder();
    18. String line;
    19. while ((line = reader.readLine()) != null) {
    20. response.append(line);
    21. }
    22. reader.close();
    23. // 关闭连接
    24. connection.disconnect();
    25. } catch (IOException e) {
    26. e.printStackTrace();
    27. }
    28. return response.toString();
    29. }

    结果

    所需依赖

    1. <!--spring-web-->
    2. <dependency>
    3. <groupId>org.springframework</groupId>
    4. <artifactId>spring-web</artifactId>
    5. <version>5.3.29</version>
    6. </dependency>
    7. <dependency>
    8. <groupId>org.apache.httpcomponents</groupId>
    9. <artifactId>httpclient</artifactId>
    10. <version>4.5.13</version>
    11. </dependency>
    12. <dependency>
    13. <groupId>javax.json</groupId>
    14. <artifactId>javax.json-api</artifactId>
    15. <version>1.1.4</version>
    16. </dependency>
    17. <dependency>
    18. <groupId>org.glassfish</groupId>
    19. <artifactId>javax.json</artifactId>
    20. <version>1.1.4</version>
    21. </dependency>


     

  • 相关阅读:
    链路聚合_Eth-trunk
    Spring IOC之ImportSelector接口
    Java游戏服务器开发之概念扫盲
    sharepoint2016-2019升级到sharepoint订阅版
    深度学习基础:超分辨率网络整理之EDVR网络
    python: window环境安装
    Java并发(三)----创建线程的三种方式及查看进程线程
    C++语法基础:函数指针
    C编译器04-生成汇编代码
    重磅!谷歌宣布 DeepMind 与 Google Brain 合并,奋力追赶 OpenAI
  • 原文地址:https://blog.csdn.net/qi341500/article/details/133028695