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

官方API:https://lbs.amap.com/api/webservice/guide/api/georegeo
*
Web服务API 地理/逆地理编码

实现代码*

package com.example.listdemo.utils;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;public class MapUtils {public static void main(String[] args) {try {// 1、根据地址获取经纬度Map<String, String> lonAndLat = getLonAndLat("浙江省杭州市滨江区江汉路1515号", "key");System.out.println("转换后经纬度为:" + lonAndLat);// 2、根据经纬度获取地址String formattedAddress = getAMapByLngAndLat("120.204798", "30.201000", "高德key");System.out.println("转换后地址为:" + formattedAddress);} catch (Exception e) {e.printStackTrace();}}/*** 地址转换为经纬度** @param address 地址* @param key     高德地图应用key* @return 经纬度*/public static Map getLonAndLat(String address, String key) {// 返回输入地址address的经纬度信息, 格式是 经度,纬度String queryUrl = "http://restapi.amap.com/v3/geocode/geo?key=" + key + "&address=" + address;// 高德接口返回的是JSON格式的字符串String queryResult = getResponse(queryUrl);Map<String, String> map = new HashMap<String, String>();JSONObject obj = JSONObject.parseObject(queryResult);if (obj.get("status").toString().equals("1")) {JSONObject jobJSON = JSONObject.parseObject(obj.get("geocodes").toString().substring(1, obj.get("geocodes").toString().length() - 1));String location = jobJSON.get("location").toString();System.out.println("经纬度:" + location);String[] lonAndLat = location.split(",");if (lonAndLat != null && lonAndLat.length == 2) {map.put("lng", lonAndLat[0]);map.put("lat", lonAndLat[1]);}System.out.println(map);return map;} else {throw new RuntimeException("地址转换经纬度失败,错误码:" + obj.get("infocode"));}}/*** 将经纬度getLng, getLat 通过getAMapByLngAndLat方法转换地址** @param getLng 经度* @param getLat 纬度* @param key    高德地图应用key* @return 地址名称* @throws Exception*/public static String getAMapByLngAndLat(String getLng, String getLat, String key) throws Exception {String url;try {url = "http://restapi.amap.com/v3/geocode/regeo?output=JSON&location=" + getLng + ","+ getLat + "&key=" + key + "&radius=0&extensions=base";String queryResult = getResponse(url); // 高德接品返回的是JSON格式的字符串// 将获取结果转为json数据JSONObject obj = JSONObject.parseObject(queryResult);System.out.println("obj为:" + obj);if (obj.get("status").toString().equals("1")) {// 如果没有返回-1JSONObject regeocode = obj.getJSONObject("regeocode");if (regeocode.size() > 0) {// 在regeocode中拿到 formatted_address 具体位置return regeocode.get("formatted_address").toString();} else {throw new RuntimeException("未找到相匹配的地址!");}} else {throw new RuntimeException("请求错误!");}} catch (Exception e) {e.printStackTrace();}return "-1";}/*** 根据两个定位点的经纬度算出两点间的距离** @param startLonLat 起始经纬度* @param endLonLat   结束经纬度(目标经纬度)* @param key         高德地图应用key* @return 两个定位点之间的距离*/private static long getDistance(String startLonLat, String endLonLat, String key) {// 返回起始地startAddr与目的地endAddr之间的距离,单位:米Long result = new Long(0);String queryUrl = "http://restapi.amap.com/v3/distance?key=" + key + "&origins=" + startLonLat + "&destination=" + endLonLat;String queryResult = getResponse(queryUrl);JSONObject obj = JSONObject.parseObject(queryResult);JSONArray ja = obj.getJSONArray("results");JSONObject jobO = JSONObject.parseObject(ja.getString(0));result = Long.parseLong(jobO.get("distance").toString());System.out.println("距离:" + result);return result;}/*** 发送请求** @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();}
}

执行结果:

"D:\Program Files\Java\jdk1.8.0_40\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=52173:C:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_40\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_40\jre\lib\rt.jar;F:\study-project\list-demo\target\classes;D:\mvnrepository\org\springframework\boot\spring-boot-starter-web\2.5.2\spring-boot-starter-web-2.5.2.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter\2.5.2\spring-boot-starter-2.5.2.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter-logging\2.5.2\spring-boot-starter-logging-2.5.2.jar;D:\mvnrepository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\mvnrepository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\mvnrepository\org\apache\logging\log4j\log4j-to-slf4j\2.14.1\log4j-to-slf4j-2.14.1.jar;D:\mvnrepository\org\apache\logging\log4j\log4j-api\2.14.1\log4j-api-2.14.1.jar;D:\mvnrepository\org\slf4j\jul-to-slf4j\1.7.31\jul-to-slf4j-1.7.31.jar;D:\mvnrepository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\mvnrepository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter-json\2.5.2\spring-boot-starter-json-2.5.2.jar;D:\mvnrepository\com\fasterxml\jackson\core\jackson-databind\2.12.3\jackson-databind-2.12.3.jar;D:\mvnrepository\com\fasterxml\jackson\core\jackson-annotations\2.12.3\jackson-annotations-2.12.3.jar;D:\mvnrepository\com\fasterxml\jackson\core\jackson-core\2.12.3\jackson-core-2.12.3.jar;D:\mvnrepository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.3\jackson-datatype-jdk8-2.12.3.jar;D:\mvnrepository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.3\jackson-datatype-jsr310-2.12.3.jar;D:\mvnrepository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.3\jackson-module-parameter-names-2.12.3.jar;D:\mvnrepository\org\springframework\boot\spring-boot-starter-tomcat\2.5.2\spring-boot-starter-tomcat-2.5.2.jar;D:\mvnrepository\org\apache\tomcat\embed\tomcat-embed-core\9.0.48\tomcat-embed-core-9.0.48.jar;D:\mvnrepository\org\apache\tomcat\embed\tomcat-embed-el\9.0.48\tomcat-embed-el-9.0.48.jar;D:\mvnrepository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.48\tomcat-embed-websocket-9.0.48.jar;D:\mvnrepository\org\springframework\spring-web\5.3.8\spring-web-5.3.8.jar;D:\mvnrepository\org\springframework\spring-beans\5.3.8\spring-beans-5.3.8.jar;D:\mvnrepository\org\springframework\spring-webmvc\5.3.8\spring-webmvc-5.3.8.jar;D:\mvnrepository\org\springframework\spring-aop\5.3.8\spring-aop-5.3.8.jar;D:\mvnrepository\org\springframework\spring-context\5.3.8\spring-context-5.3.8.jar;D:\mvnrepository\org\springframework\spring-expression\5.3.8\spring-expression-5.3.8.jar;D:\mvnrepository\org\springframework\boot\spring-boot-devtools\2.5.2\spring-boot-devtools-2.5.2.jar;D:\mvnrepository\org\springframework\boot\spring-boot\2.5.2\spring-boot-2.5.2.jar;D:\mvnrepository\org\springframework\boot\spring-boot-autoconfigure\2.5.2\spring-boot-autoconfigure-2.5.2.jar;D:\mvnrepository\org\projectlombok\lombok\1.18.20\lombok-1.18.20.jar;D:\mvnrepository\org\slf4j\slf4j-api\1.7.31\slf4j-api-1.7.31.jar;D:\mvnrepository\org\springframework\spring-core\5.3.8\spring-core-5.3.8.jar;D:\mvnrepository\org\springframework\spring-jcl\5.3.8\spring-jcl-5.3.8.jar;D:\mvnrepository\com\alibaba\fastjson\1.2.68\fastjson-1.2.68.jar;D:\mvnrepository\com\google\guava\guava\22.0\guava-22.0.jar;D:\mvnrepository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar;D:\mvnrepository\com\google\errorprone\error_prone_annotations\2.0.18\error_prone_annotations-2.0.18.jar;D:\mvnrepository\com\google\j2objc\j2objc-annotations\1.1\j2objc-annotations-1.1.jar;D:\mvnrepository\org\codehaus\mojo\animal-sniffer-annotations\1.14\animal-sniffer-annotations-1.14.jar;D:\mvnrepository\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\mvnrepository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\mvnrepository\org\apache\httpcomponents\httpcore\4.4.10\httpcore-4.4.10.jar;D:\mvnrepository\org\apache\httpcomponents\httpclient\4.5.6\httpclient-4.5.6.jar;D:\mvnrepository\commons-httpclient\commons-httpclient\3.1\commons-httpclient-3.1.jar;D:\mvnrepository\commons-logging\commons-logging\1.0.4\commons-logging-1.0.4.jar;D:\mvnrepository\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar;D:\mvnrepository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar" com.example.listdemo.utils.MapUtils
经纬度:120.204017,30.200900
{lng=120.204017, lat=30.200900}
转换后经纬度为:{lng=120.204017, lat=30.200900}
obj为:{"infocode":"10000","regeocode":{"formatted_address":"浙江省杭州市滨江区长河街道O2(杭州滨江龙湖店)龙湖郦城公馆","addressComponent":{"businessAreas":[{"name":"长河","location":"120.198800,30.188826","id":"330108"}],"country":"中国","province":"浙江省","citycode":"0571","city":"杭州市","adcode":"330108","streetNumber":{"number":"1515号","distance":"15.0673","street":"江南大道","location":"120.204721,30.200882","direction":"西南"},"towncode":"330108003000","district":"滨江区","neighborhood":{"name":[],"type":[]},"township":"长河街道","building":{"name":[],"type":[]}}},"status":"1","info":"OK"}
转换后地址为:浙江省杭州市滨江区长河街道O2(杭州滨江龙湖店)龙湖郦城公馆Process finished with exit code 0

Java调用高德地图API根据详细地址获取经纬度相关推荐

  1. java调用百度地图API依据地理位置中文获取经纬度

    百度地图api提供了非常多地图相关的免费接口,有利于地理位置相关的开发,百度地图api首页:http://developer.baidu.com/map/. 博主使用过依据地理依据地理位置中文获取经纬 ...

  2. 调用高德地图Api实现通过地址转经纬度

    调用高德地图Api实现通过地址转经纬度 在高德地图开放平台注册一个key就可以了,链接在这儿高德地图开放平台 /*** @author _沉淀_* @version 1.0.0* @ClassName ...

  3. 腾讯地图api如何根据地址获取经纬度

    腾讯地图api如何根据地址获取经纬度 /**      * 根据地址得到经纬度  //GET请求      */     @GetMapping("tencentGetLatLngBy/{a ...

  4. java调用高德地图API

    首先去高地地图API官网申请一个账号,然后创建key值.注意是创建web的key. 新建一个工具类AmapUtil: package com.lmj.amap.util;import net.sf.j ...

  5. java调用高德地图API开发,高德在线地图开发——未完待续

    这是目录 一.引入高德地图API 二.高德地图开发 1.定义一个div来存放地图 2.生成地图 3.添加一个跳跃的点 4.添加控件 5.有其他需要的请留言 一.引入高德地图API 高德地图官方示例:h ...

  6. 调用高德地图API将地名转换成经纬度

    今天帮老师完成一个任务,把一个第一列包含了大量地名的数据集,计算出每个地名的相应的经纬度.以便于后面用经纬度进行进一步的运算. 第一步,高德地图密钥申请 进入高德开放平台首页,输入账号登录(如没有账号 ...

  7. 使用高德地图api批量将地址转换为经纬度

    有时候需要将一些地址信息转换为经纬度信息,在echarts地图上展示,一下代码可以批量将地址转换为经纬度. 如果没有安装requests或openpyxl 使用: pip install reques ...

  8. C#调用百度地图API,根据地名获取经纬度geocoding

    前言 公司的一个内部网站维护,需要根据地名填写经纬度,最终同echarts生成地图. 之前数据比较少,直接经纬度查询查的,https://jingweidu.bmcx.com/ 现在数据越来越多,手动 ...

  9. java获取经纬度_java调用高德地图api获取某个位置的经纬度

    java调用高德地图api获取经纬度的方法,废话少说,直接上代码: import com.fasterxml.jackson.databind.JsonNode; import com.ning.ht ...

最新文章

  1. stm32f103最小系统的组成及各部分功能
  2. ubantu 添加防火墙策略_企业环境下用脚本设置ubuntu防火墙
  3. 如何做网络营销推广浅析网站优化要做好哪些优化会获得搜索引擎的青睐?
  4. postfix+postfixadmin+extmail邮件服务器架设过程
  5. MessageDigest简单介绍
  6. 与、或、短路或、自增、自减、的执行过程
  7. html 下拉列表美化,JS+CSS实现美化的下拉列表框效果
  8. MySQL管理工具MySQL Utilities — 如何连接MySQL服务器
  9. 【计算机科学基础】二进制加减法不用原码的原因
  10. C++三大特性之多态
  11. Sketch 80 for mac(矢量绘图设计软件)
  12. 解题报告——-2018级2016第二学期第三周作业
  13. mysql show profile_MySQL show profile使用说明
  14. 吴裕雄 01-mysql管理
  15. 系统集成项目管理工程师思维导图
  16. EXFO 收购RF over CPRI 测试方案提供商Absolute Analysis
  17. 【转】中控系统的概念、特点及功能
  18. 浅析Trafodion体系结构
  19. 中科大王彬计算机学院,中国科学院国家纳米科学中心 贺涛 男 博导
  20. 索引原理-索引数据结构

热门文章

  1. 充满魅惑的GetType(VB2005)
  2. 销售额总和的分类汇总计算机操作,excel怎么分类汇总
  3. 大学毕业论文字数有上限吗,我写了一万六千字,指导老师让我删掉一万字关键第二天就要交,怎么办?...
  4. 数据库结构与模式 - 三级模式 两级独立性/两级映射
  5. T件、K件和自耦变压器组成的网络变压器及其作用
  6. 基于.NetCore开发博客项目 StarBlog - (13) 加入友情链接功能
  7. android性能测试-腾讯GT使用说明
  8. Vue.js实例学习:获取DOM元素
  9. 如何在java代码中读取配置文件
  10. mysql i o瓶颈_性能瓶颈--DISK(I/O)