Java調(diào)用高德地圖API根據(jù)詳細(xì)地址獲取經(jīng)緯度詳細(xì)教程
開(kāi)發(fā)指南:地理/逆地理編碼-API文檔-開(kāi)發(fā)指南-Web服務(wù) API | 高德地圖API
一、首先需要注冊(cè)成為開(kāi)發(fā)者,注冊(cè)成功后就可以使用此開(kāi)放平臺(tái)。
高德開(kāi)放平臺(tái)網(wǎng)址:高德開(kāi)放平臺(tái) | 高德地圖API點(diǎn)擊注冊(cè):
選擇注冊(cè)方式,注冊(cè)完成進(jìn)入下一步:選擇認(rèn)證方式
我是個(gè)人開(kāi)發(fā),就選個(gè)人認(rèn)證開(kāi)發(fā)者,如果是企業(yè)就選企業(yè)認(rèn)證開(kāi)發(fā)者
填寫完善信息,進(jìn)行支付寶掃描實(shí)名認(rèn)證,勾選同意,點(diǎn)擊提交資料:
認(rèn)證結(jié)果:
二、進(jìn)入控制臺(tái)
使用 API 前請(qǐng)您先注冊(cè)高德賬號(hào)申請(qǐng)Key。
1.進(jìn)入控制臺(tái)
2.在應(yīng)用管理創(chuàng)建應(yīng)用
創(chuàng)建好的應(yīng)用:
3.為上面的應(yīng)用添加key
生成的key:
注:此key值是以后,請(qǐng)求api所用的key,一定要保存好
服務(wù)示例:https://restapi.amap.com/v3/geocode/geo?address=北京市朝陽(yáng)區(qū)阜通東大街6號(hào)&output=XML&key=<用戶的key>
請(qǐng)求示例:
示例說(shuō)明:address 是需要獲取坐標(biāo)的結(jié)構(gòu)化地址,output(XML)用于指定返回?cái)?shù)據(jù)的格式,Key是用戶請(qǐng)求數(shù)據(jù)的身份標(biāo)識(shí)。
localtion中逗號(hào)前面為經(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ù)地址獲取對(duì)應(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ā)送請(qǐng)求 * * @param serverUrl 請(qǐng)求地址 */ private static String getResponse(String serverUrl) { // 用JAVA發(fā)起http請(qǐng)求,并返回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="北京市朝陽(yáng)區(qū)阜通東大街6號(hào)"; String location=getLonAndLatByAddress(address); System.out.println("經(jīng)緯度:" + location); } }
執(zhí)行結(jié)果:
附:java 使用高德地圖api傳入經(jīng)緯度獲取海拔高度
可以使用高德地圖的 Web 服務(wù) API 中的地理編碼接口和逆地理編碼接口來(lái)獲取經(jīng)緯度對(duì)應(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 需要替換為高德地圖開(kāi)發(fā)者平臺(tái)申請(qǐng)的 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ù)開(kāi)發(fā)者平臺(tái)的規(guī)定進(jìn)行調(diào)用。同時(shí),由于該接口需要訪問(wèn)互聯(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)鼠標(biāo)拖拽移動(dòng)界面組件
在Java中,F(xiàn)rame或者JFrame自身已經(jīng)實(shí)現(xiàn)了鼠標(biāo)拖拽標(biāo)題欄移動(dòng)窗口的功能。但是Jframe的樣式實(shí)在無(wú)法令人滿意,那你又該怎么實(shí)現(xiàn)鼠標(biāo)拖拽移動(dòng)窗口的目的呢?今天我們來(lái)探討下2014-09-09Java字節(jié)與字符流永久存儲(chǔ)json數(shù)據(jù)
本篇文章給大家詳細(xì)講述了Java字節(jié)與字符流永久存儲(chǔ)json數(shù)據(jù)的方法,以及代碼分享,有興趣的參考學(xué)習(xí)下。2018-02-02java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法
這篇文章主要為大家詳細(xì)介紹了java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Java中Array、List、ArrayList的區(qū)別及說(shuō)明
這篇文章主要介紹了Java中Array、List、ArrayList的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07使用JMX監(jiān)控Zookeeper狀態(tài)Java API
今天小編就為大家分享一篇關(guān)于使用JMX監(jiān)控Zookeeper狀態(tài)Java API,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Spring?Boot?Shiro?auto-configure工作流程詳解
這篇文章主要為大家介紹了Spring?Boot?Shiro?auto-configure工作流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02