Java調(diào)用高德地圖API根據(jù)詳細(xì)地址獲取經(jīng)緯度詳細(xì)教程
開發(fā)指南:地理/逆地理編碼-API文檔-開發(fā)指南-Web服務(wù) API | 高德地圖API
一、首先需要注冊成為開發(fā)者,注冊成功后就可以使用此開放平臺(tái)。
高德開放平臺(tái)網(wǎng)址:高德開放平臺(tái) | 高德地圖API點(diǎn)擊注冊:

選擇注冊方式,注冊完成進(jìn)入下一步:選擇認(rèn)證方式
我是個(gè)人開發(fā),就選個(gè)人認(rèn)證開發(fā)者,如果是企業(yè)就選企業(yè)認(rèn)證開發(fā)者

填寫完善信息,進(jìn)行支付寶掃描實(shí)名認(rèn)證,勾選同意,點(diǎn)擊提交資料:

認(rèn)證結(jié)果:

二、進(jìn)入控制臺(tái)
使用 API 前請您先注冊高德賬號申請Key。
1.進(jìn)入控制臺(tái)
2.在應(yīng)用管理創(chuàng)建應(yīng)用

創(chuàng)建好的應(yīng)用:

3.為上面的應(yīng)用添加key

生成的key:

注:此key值是以后,請求api所用的key,一定要保存好
服務(wù)示例:https://restapi.amap.com/v3/geocode/geo?address=北京市朝陽區(qū)阜通東大街6號&output=XML&key=<用戶的key>

請求示例:

示例說明:address 是需要獲取坐標(biāo)的結(jié)構(gòu)化地址,output(XML)用于指定返回?cái)?shù)據(jù)的格式,Key是用戶請求數(shù)據(jù)的身份標(biāo)識(shí)。
localtion中逗號前面為經(jīng)度,后面為緯度
由此api,把地址轉(zhuǎn)為經(jīng)緯度。
三、Java調(diào)用高德地圖API根據(jù)詳細(xì)地址獲取經(jīng)緯度
代碼如下:
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;
/**
* 地址轉(zhuǎn)經(jīng)緯度(使用高德地圖獲取地址信息的經(jīng)緯度)
*/
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";
/**
* 成功標(biāo)識(shí)
*/
private static String SUCCESS_FLAG="1";
/**
* 根據(jù)地址獲取對應(yīng)的經(jīng)緯度信息
* @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("地址轉(zhuǎn)換經(jīng)緯度失敗,錯(cuò)誤碼:" + obj.get("infocode"));
}
return location;
}
/**
* 發(fā)送請求
*
* @param serverUrl 請求地址
*/
private static String getResponse(String serverUrl) {
// 用JAVA發(fā)起http請求,并返回json格式的結(jié)果
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="北京市朝陽區(qū)阜通東大街6號";
String location=getLonAndLatByAddress(address);
System.out.println("經(jīng)緯度:" + location);
}
}
執(zhí)行結(jié)果:

附:java 使用高德地圖api傳入經(jīng)緯度獲取海拔高度
可以使用高德地圖的 Web 服務(wù) API 中的地理編碼接口和逆地理編碼接口來獲取經(jīng)緯度對應(yīng)的海拔高度信息。
以下是一個(gè)示例代碼:
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&spm=1055.2569.3001.10083)[] args) {
try {
[string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083) url = "https://restapi.amap.com/v3/geocode/regeo?key=YOUR_KEY&location=經(jīng)度,緯度&extensions=all";
// YOUR_KEY 需要替換為高德地圖開發(fā)者平臺(tái)申請的 Web 服務(wù) API 的 KEY;
// 經(jīng)度和緯度需要替換為實(shí)際的值。
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&spm=1055.2569.3001.10083) inputLine;
[string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)Buffer response = new [string](https://geek.csdn.net/edu/8802d631b97a4a6af1f4d0bbf8527465?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)Buffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 解析 JSON 數(shù)據(jù),獲取海拔高度信息。
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();
}
}
}
需要注意的是,該接口有頻率限制和調(diào)用次數(shù)限制,需要根據(jù)開發(fā)者平臺(tái)的規(guī)定進(jìn)行調(diào)用。同時(shí),由于該接口需要訪問互聯(lián)網(wǎng),因此需要保證網(wǎng)絡(luò)連接正常。
總結(jié)
到此這篇關(guān)于Java調(diào)用高德地圖API根據(jù)詳細(xì)地址獲取經(jīng)緯度的文章就介紹到這了,更多相關(guān)Java調(diào)用高德地圖獲取經(jīng)緯度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
web項(xiàng)目WEB-INF下沒有web.xml的解決方法
新手如果在web項(xiàng)目創(chuàng)建后WEB-INF下面沒有出現(xiàn)web.xml,怎么辦?別慌,沒有web.xml文件的原因是因?yàn)樵趧?chuàng)建web項(xiàng)目的時(shí)候沒有把創(chuàng)建web.xml勾上。這篇文章主要介紹了web項(xiàng)目WEB-INF下沒有web.xml的解決方法,需要的朋友可以參考下2022-12-12
Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法
本文介紹在Spring Boot基礎(chǔ)下配置數(shù)據(jù)源和通過 JdbcTemplate 編寫數(shù)據(jù)訪問的示例。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-01-01
MyBatis-Plus 批量插入數(shù)據(jù)的操作方法
spring boot+mybatis plus環(huán)境,單條插入用的是BaseMapper自帶的insert方法,本文重點(diǎn)給大家介紹MyBatis-Plus 批量插入數(shù)據(jù)的操作方法,感興趣的朋友一起看看吧2021-09-09
去掉IntelliJ IDEA 中 mybatis 對應(yīng)的 xml 文件警告的教程圖解
本文通過圖文并茂的形式給大家介紹了去掉IntelliJ IDEA 中 mybatis 對應(yīng)的 xml 文件警告的教程,需要的朋友可以參考下2018-06-06
細(xì)說Springcloud eureka的幾種主動(dòng)下線服務(wù)的方式
這篇文章主要介紹了細(xì)說Springcloud eureka的幾種主動(dòng)下線服務(wù)的方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁查詢功能
這篇文章主要介紹了SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁查詢功能,pringBoot分頁查詢的兩種寫法,一種是手動(dòng)實(shí)現(xiàn),另一種是使用框架實(shí)現(xiàn),現(xiàn)在我將具體的實(shí)現(xiàn)流程分享一下,需要的朋友可以參考下2023-11-11
Java中try-catch的使用及注意細(xì)節(jié)
現(xiàn)在有很多的語言都支持try-catch,比如常見的就是c++,java等,這篇文章主要給大家介紹了關(guān)于Java中try-catch的使用及注意細(xì)節(jié)的相關(guān)資料,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06

