From 8b1a0857de8b1721af42f4de15c2072d18499c3e Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Sat, 31 Jan 2026 18:00:19 +0800
Subject: [PATCH] 通过经纬度获取对应区域的飞手
---
drone-service/drone-gd/src/main/java/org/sxkj/gd/utils/GdGeoAddressUtil.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 54 insertions(+), 1 deletions(-)
diff --git a/drone-service/drone-gd/src/main/java/org/sxkj/gd/utils/GdGeoAddressUtil.java b/drone-service/drone-gd/src/main/java/org/sxkj/gd/utils/GdGeoAddressUtil.java
index c1a10b1..e7be1da 100644
--- a/drone-service/drone-gd/src/main/java/org/sxkj/gd/utils/GdGeoAddressUtil.java
+++ b/drone-service/drone-gd/src/main/java/org/sxkj/gd/utils/GdGeoAddressUtil.java
@@ -18,6 +18,7 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.utils.StringUtil;
@@ -26,7 +27,7 @@
import java.net.URI;
import java.nio.charset.StandardCharsets;
import org.springframework.web.util.UriUtils;
-
+@Slf4j
public class GdGeoAddressUtil {
private static final Logger logger = LoggerFactory.getLogger(GdGeoAddressUtil.class);
private static final String TIAN_DI_TU_KEY = "9171789c872b8cfee7bba45c35a6b955";
@@ -48,6 +49,26 @@
}
}
+ /**
+ * 根据经纬度获取区县代码
+ * @param longitude 经度
+ * @param latitude 纬度
+ * @return 区县代码
+ */
+ public static String getCountyCode(Double longitude, Double latitude) {
+ if (longitude == null || latitude == null) {
+ return null;
+ }
+ try {
+ String postStr = String.format("{'lon':%s,'lat':%s,'ver':1}", longitude, latitude);
+ String countyCode = requestCountyCode(postStr);
+ return StringUtil.isBlank(countyCode) ? null : countyCode;
+ } catch (Exception e) {
+ logger.warn("天地图逆地理编码获取区县代码失败", e);
+ return null;
+ }
+ }
+
private static String requestAddress(String postStr) {
String encodedPostStr = UriUtils.encodeQueryParam(postStr, StandardCharsets.UTF_8);
String url = TIAN_DI_TU_URL + "?postStr=" + encodedPostStr + "&type=geocode&tk=" + TIAN_DI_TU_KEY;
@@ -57,6 +78,7 @@
return null;
}
try {
+ log.debug("天地图逆地理编码结果:{}", response);
JsonNode root = OBJECT_MAPPER.readTree(response);
String address = root.path("result").path("formatted_address").asText();
return StringUtil.isBlank(address) ? null : address;
@@ -65,4 +87,35 @@
return null;
}
}
+
+ /**
+ * 请求天地图API获取区县代码
+ * @param postStr 请求参数
+ * @return 区县代码
+ */
+ private static String requestCountyCode(String postStr) {
+ String encodedPostStr = UriUtils.encodeQueryParam(postStr, StandardCharsets.UTF_8);
+ String url = TIAN_DI_TU_URL + "?postStr=" + encodedPostStr + "&type=geocode&tk=" + TIAN_DI_TU_KEY;
+ URI uri = URI.create(url);
+ String response = REST_TEMPLATE.getForObject(uri, String.class);
+ if (StringUtil.isBlank(response)) {
+ return null;
+ }
+ try {
+ log.debug("天地图逆地理编码结果:{}", response);
+ JsonNode root = OBJECT_MAPPER.readTree(response);
+ String countyCode = root.path("result").path("addressComponent").path("county_code").asText();
+ return StringUtil.isBlank(countyCode) ? null : countyCode;
+ } catch (Exception e) {
+ logger.warn("解析天地图逆地理编码区县代码失败", e);
+ return null;
+ }
+ }
+
+ // public static void main(String[] args) {
+ // String formattedAddress = getFormattedAddress(116.39742, 39.90923);
+ // String countyCode = getCountyCode(116.39742, 39.90923);
+ // System.out.println("地址:" + formattedAddress);
+ // System.out.println("区县代码:" + countyCode);
+ // }
}
--
Gitblit v1.9.3