Java调用高德地图API根据详细地址获取经纬度详细教程

 更新时间:2024年04月13日 15:03:57   作者:_江屿_  
写了一个经纬度相关的工具,分享给有需求的小伙伴们,下面这篇文章主要给大家介绍了关于Java调用高德地图API根据详细地址获取经纬度,文中通过图文以及代码介绍的非常详细,需要的朋友可以参考下

开发指南:地理/逆地理编码-API文档-开发指南-Web服务 API | 高德地图API

一、首先需要注册成为开发者,注册成功后就可以使用此开放平台。

高德开放平台网址:高德开放平台 | 高德地图API点击注册:

 选择注册方式,注册完成进入下一步:选择认证方式

我是个人开发,就选个人认证开发者,如果是企业就选企业认证开发者

 填写完善信息,进行支付宝扫描实名认证,勾选同意,点击提交资料:

 认证结果:

二、进入控制台

使用 API 前请您先注册高德账号申请Key

1.进入控制台

我的应用 | 高德控制台

2.在应用管理创建应用

 创建好的应用:

3.为上面的应用添加key

 生成的key:

 注:此key值是以后,请求api所用的key,一定要保存好

服务示例:https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>

 请求示例:

示例说明:address 是需要获取坐标的结构化地址,output(XML)用于指定返回数据的格式,Key是用户请求数据的身份标识。
localtion中逗号前面为经度,后面为纬度

由此api,把地址转为经纬度。

三、Java调用高德地图API根据详细地址获取经纬度

代码如下:

package com.example.listdemo.utils;

import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

/**
 * 地址转经纬度(使用高德地图获取地址信息的经纬度)
 */
public class AddressLocationUtil {
    /**
     * Key
     */
    private static String KEY="<高德key>";

    public  static String GD_URL="https://restapi.amap.com/v3/geocode/geo?address=%s&key=%s";

    /**
     * 成功标识
     */
    private static String SUCCESS_FLAG="1";

    /**
     * 根据地址获取对应的经纬度信息
     * @param address
     * @return
     */
    public static String getLonAndLatByAddress(String address){
        String location="";
        GD_URL = String.format(GD_URL, address, KEY);
        //高德接口返回的是JSON格式的字符串
        String queryResult = getResponse(GD_URL);
        JSONObject obj = JSONObject.parseObject(queryResult);
        if(String.valueOf(obj.get("status")).equals(SUCCESS_FLAG)){
            JSONObject jobJSON = JSONObject.parseObject(obj.get("geocodes").toString().substring(1, obj.get("geocodes").toString().length() - 1));
            location = String.valueOf(jobJSON.get("location"));
        }else{
            throw new RuntimeException("地址转换经纬度失败,错误码:" + obj.get("infocode"));
        }
        return location;
    }
    /**
     * 发送请求
     *
     * @param serverUrl 请求地址
     */
    private static String getResponse(String serverUrl) {
        // 用JAVA发起http请求,并返回json格式的结果
        StringBuffer result = new StringBuffer();
        try {
            URL url = new URL(serverUrl);
            URLConnection conn = url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result.append(line);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }

    public static void main(String[] args) {
        String address="北京市朝阳区阜通东大街6号";
        String location=getLonAndLatByAddress(address);
        System.out.println("经纬度:" + location);
    }
}

执行结果:

附:java 使用高德地图api传入经纬度获取海拔高度

可以使用高德地图的 Web 服务 API 中的地理编码接口和逆地理编码接口来获取经纬度对应的海拔高度信息。

以下是一个示例代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class AMapAPI {
    public static void main([string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083)[] args) {
        try {
            [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083) url = "https://restapi.amap.com/v3/geocode/regeo?key=YOUR_KEY&amp;location=经度,纬度&amp;extensions=all";
            // YOUR_KEY 需要替换为高德地图开发者平台申请的 Web 服务 API 的 KEY;
            // 经度和纬度需要替换为实际的值。

            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();

            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
            [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083) inputLine;
            [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083)Buffer response = new [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083)Buffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            // 解析 JSON 数据,获取海拔高度信息。
            String result = response.toString();
            int indexStart = result.indexOf("\"elevations\":[") + "\"elevations\":[".length();
            int indexEnd = result.indexOf("]", indexStart);
            String elevations = result.substring(indexStart, indexEnd);
            System.out.println("海拔高度(单位:米):" + elevations);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

需要注意的是,该接口有频率限制和调用次数限制,需要根据开发者平台的规定进行调用。同时,由于该接口需要访问互联网,因此需要保证网络连接正常。

总结 

到此这篇关于Java调用高德地图API根据详细地址获取经纬度的文章就介绍到这了,更多相关Java调用高德地图获取经纬度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java求最小生成树的两种算法详解

    Java求最小生成树的两种算法详解

    最小生成树(Minimum Spanning Tree):在连通图的所有生成树中,所有边的权值和最小的生成树,称为最小生成树。这篇文章主要介绍了求最小生成树的两种方法:Prim算法和Kruskal算法,需要的可以参考一下
    2022-01-01
  • web项目WEB-INF下没有web.xml的解决方法

    web项目WEB-INF下没有web.xml的解决方法

    新手如果在web项目创建后WEB-INF下面没有出现web.xml,怎么办?别慌,没有web.xml文件的原因是因为在创建web项目的时候没有把创建web.xml勾上。这篇文章主要介绍了web项目WEB-INF下没有web.xml的解决方法,需要的朋友可以参考下
    2022-12-12
  • Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL数据库的方法

    本文介绍在Spring Boot基础下配置数据源和通过 JdbcTemplate 编写数据访问的示例。感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-01-01
  • 一文搞懂Spring中的注解与反射

    一文搞懂Spring中的注解与反射

    这篇文章主要为大家介绍了Spring中的注解与反射的原理与实现,文中的示例代码讲解详细,对我们了解Spring有一定的帮助,需要的可以参考一下
    2022-06-06
  • MyBatis-Plus 批量插入数据的操作方法

    MyBatis-Plus 批量插入数据的操作方法

    spring boot+mybatis plus环境,单条插入用的是BaseMapper自带的insert方法,本文重点给大家介绍MyBatis-Plus 批量插入数据的操作方法,感兴趣的朋友一起看看吧
    2021-09-09
  • 去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告的教程图解

    去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告的教程图解

    本文通过图文并茂的形式给大家介绍了去掉IntelliJ IDEA 中 mybatis 对应的 xml 文件警告的教程,需要的朋友可以参考下
    2018-06-06
  • 细说Springcloud eureka的几种主动下线服务的方式

    细说Springcloud eureka的几种主动下线服务的方式

    这篇文章主要介绍了细说Springcloud eureka的几种主动下线服务的方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • SpringBoot整合mybatis-plus实现分页查询功能

    SpringBoot整合mybatis-plus实现分页查询功能

    这篇文章主要介绍了SpringBoot整合mybatis-plus实现分页查询功能,pringBoot分页查询的两种写法,一种是手动实现,另一种是使用框架实现,现在我将具体的实现流程分享一下,需要的朋友可以参考下
    2023-11-11
  • Java中try-catch的使用及注意细节

    Java中try-catch的使用及注意细节

    现在有很多的语言都支持try-catch,比如常见的就是c++,java等,这篇文章主要给大家介绍了关于Java中try-catch的使用及注意细节的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • JDBC环境设置(中文详解)

    JDBC环境设置(中文详解)

    要开始使用JDBC设置,按照以下所示的步骤开发JDBC环境。以下内容假设Windows平台上
    2014-03-03

最新评论