From 7d33080998a2c5b38e8a74dbed2b0f40d39bbe47 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期三, 04 六月 2025 23:27:26 +0800
Subject: [PATCH] 1. 新增动态污染溯源新的判定逻辑(待完成)

---
 src/main/kotlin/com/flightfeather/uav/common/net/AMapService.kt |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/common/net/AMapService.kt b/src/main/kotlin/com/flightfeather/uav/common/net/AMapService.kt
index 615bc8f..52e1940 100644
--- a/src/main/kotlin/com/flightfeather/uav/common/net/AMapService.kt
+++ b/src/main/kotlin/com/flightfeather/uav/common/net/AMapService.kt
@@ -32,6 +32,54 @@
         val street: String,
     )
 
+    data class AMapDirection(
+        // 璺嚎绫诲瀷锛宒riving: 椹捐溅锛�
+        val type: String,
+        // 璧风偣缁忕含搴�
+        val origin: Pair<Double, Double>,
+        // 缁堢偣缁忕含搴�
+        val destination: Pair<Double, Double>,
+        // 閫斿緞璺嚎缁忕含搴︼紙涓嶅寘鎷捣鐐圭粓鐐癸級
+        val paths: List<Pair<Double, Double>>,
+        // 鏂规璺濈锛屽崟浣嶏細绫�
+        val distance: String
+    )
+
+    /**
+     * 椹捐溅璺嚎瑙勫垝
+     */
+    fun directionDriving(origin: Pair<Double, Double>, destination: Pair<Double, Double>):AMapDirection {
+        val res = httpMethod.get(
+            "/v5/direction/driving", listOf(
+                "key" to KEY,
+                "origin" to "${origin.first},${origin.second}",
+                "destination" to "${destination.first},${destination.second}",
+                "show_fields" to "polyline"
+            )
+        )
+        val obj = handleRes(res)
+        try {
+            val count = obj["count"].asString.toIntOrNull()
+            if (count != null && count > 0) {
+                val path = obj["route"].asJsonObject["paths"].asJsonArray.get(0).asJsonObject
+                val finalPaths = mutableListOf<Pair<Double,Double>>()
+                path["steps"].asJsonArray.forEach {
+                    finalPaths.addAll(
+                        it.asJsonObject["polyline"].asString.split(";").map { str->
+                            val strArr = str.split(",")
+                            strArr[0].toDouble() to strArr[1].toDouble()
+                        }
+                    )
+                }
+                return AMapDirection("driving", origin, destination, finalPaths, path["distance"].asString)
+            } else {
+                throw BizException("楂樺痉API椹捐溅璺嚎瑙勫垝澶辫触锛屾病鏈夋壘鍒板彲琛岀殑璺嚎")
+            }
+        } catch (e: Exception) {
+            throw BizException("楂樺痉API椹捐溅璺嚎瑙勫垝閿欒锛�${e.message}")
+        }
+    }
+
     /**
      * 鍦扮悊閫嗙紪鐮�
      * @param location 鍧愭爣鐐�

--
Gitblit v1.9.3