获取key:获取Key-创建工程-开发指南-Web服务 API|高德地图API (amap.com)
package org.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class GaoDeTest {
/**
* 逆地理编码
* 通过经纬度获取结构化地址
*/
public static void main(String[] args) {
String gaodeResult = GetLocationMsg(114.065240, 25.189741);
System.out.println("高德地址-------->" + gaodeResult);
}
/**
* <p>
* Title: GetLocationMsg
* Description:高德地图API
* @param longitude
* @param latitude
* @return
*/
public static String GetLocationMsg(double longitude, double latitude) {
String message = "";
String address = "";
// 高德地图逆地理编码API
String url = String.format(
"https://restapi.amap.com/v3/geocode/regeo?output=JSON&key=你申请的key&radius=1000&extensions=all&batch=false&roadlevel=0&location=%s,%s",
longitude, latitude);
URL myURL = null;
URLConnection httpsConn = null;
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
httpsConn = (URLConnection) myURL.openConnection();
httpsConn.setConnectTimeout(100000);
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
while ((data = br.readLine()) != null) {
message = message + data;
}
JsonParser jp = new JsonParser();
//将json字符串转化成json对象
JsonObject jo = jp.parse(message).getAsJsonObject();
String status = jo.get("status").getAsString();
String addressJsonEle = jo.get("regeocode").getAsJsonObject().get("formatted_address").toString();
if (addressJsonEle.equals("[]")) {
address = null;
} else {
if (jo.get("regeocode").getAsJsonObject().get("pois").getAsJsonArray().size() <= 0) {
String detail = jo.get("regeocode").getAsJsonObject().get("addressComponent").getAsJsonObject().get("streetNumber").getAsJsonObject().get("street").getAsString() + jo.get("regeocode").getAsJsonObject().get("addressComponent").getAsJsonObject().get("streetNumber").getAsJsonObject().get("number").getAsString();
if (status.equals("1") && !addressJsonEle.equals("[]")) {
address = addressJsonEle + " " + detail;
}
} else {
String detail = jo.get("regeocode").getAsJsonObject().get("pois").getAsJsonArray().get(0).getAsJsonObject().get("name").getAsString();
String detailDistance = jo.get("regeocode").getAsJsonObject().get("pois").getAsJsonArray().get(0).getAsJsonObject().get("distance").getAsString();
if (status.equals("1") && !addressJsonEle.equals("[]")) {
address = addressJsonEle + " " + detail + " " + detailDistance.substring(0, detailDistance.lastIndexOf(".")) + "米";
}
}
}
insr.close();
}
} catch (
IOException e) {
e.printStackTrace();
}
return address;
}
}