From 2c86a8bd60deed0dd0e044bad6fb83f75d19a332 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 26 十月 2025 15:05:50 +0800
Subject: [PATCH] Merge branch 'feature-task'

---
 app/api/map.js |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/app/api/map.js b/app/api/map.js
new file mode 100644
index 0000000..ed85e5b
--- /dev/null
+++ b/app/api/map.js
@@ -0,0 +1,129 @@
+import request from '@/utils/request'
+
+// 鍦板浘鍦板潃鎼滅储API
+export function searchAddress(keyword, region) {
+  // 鍙傛暟楠岃瘉
+  if (!keyword) {
+    return Promise.reject(new Error('鍙傛暟涓嶅畬鏁达紝缂哄皯鍏抽敭璇�'))
+  }
+  
+  return request({
+    url: '/system/gps/address/search',
+    method: 'get',
+    params: {
+      keyword: keyword,
+      region: region || '骞垮窞'
+    }
+  })
+}
+
+// 鍦板浘閫嗗湴鍧�瑙f瀽API
+export function reverseGeocoder(lat, lng) {
+  // 鍙傛暟楠岃瘉
+  if (lat === undefined || lat === null || lng === undefined || lng === null) {
+    return Promise.reject(new Error('鍙傛暟涓嶅畬鏁达紝缂哄皯缁忕含搴﹀潗鏍�'))
+  }
+  
+  // 妫�鏌ュ弬鏁版湁鏁堟��
+  if (isNaN(lat) || isNaN(lng)) {
+    return Promise.reject(new Error('鍙傛暟鏃犳晥锛岀粡绾害鍧愭爣鏍煎紡閿欒'))
+  }
+  
+  return request({
+    url: '/system/gps/address/geocoder',
+    method: 'get',
+    params: {
+      lat: lat,
+      lng: lng
+    }
+  })
+}
+
+// 鍦板浘璺嚎瑙勫垝API锛堣绠椾袱鐐归棿璺濈锛�
+export function calculateDistance(fromLat, fromLng, toLat, toLng) {
+  // 鍙傛暟楠岃瘉
+  if (fromLat === undefined || fromLat === null || 
+      fromLng === undefined || fromLng === null ||
+      toLat === undefined || toLat === null ||
+      toLng === undefined || toLng === null) {
+    return Promise.reject(new Error('鍙傛暟涓嶅畬鏁�,缂哄皯璧风偣鎴栫粓鐐瑰潗鏍�'))
+  }
+  
+  // 妫�鏌ュ弬鏁版湁鏁堟��
+  if (isNaN(fromLat) || isNaN(fromLng) || isNaN(toLat) || isNaN(toLng)) {
+    return Promise.reject(new Error('鍙傛暟鏃犳晥,鍧愭爣鏍煎紡閿欒'))
+  }
+  
+  return request({
+    url: '/system/gps/route/distance',
+    method: 'get',
+    params: {
+      fromLat: fromLat,
+      fromLng: fromLng,
+      toLat: toLat,
+      toLng: toLng
+    }
+  })
+}
+
+// ==================== 鐧惧害鍦板浘鎺ュ彛 ====================
+
+// 鐧惧害鍦板浘鍦扮悊缂栫爜API锛堝湴鍧�杞潗鏍囷級
+export function baiduGeocoding(address, city) {
+  // 鍙傛暟楠岃瘉
+  if (!address) {
+    return Promise.reject(new Error('鍙傛暟涓嶅畬鏁�,缂哄皯鍦板潃淇℃伅'))
+  }
+  
+  return request({
+    url: '/system/gps/baidu/geocoding',
+    method: 'get',
+    params: {
+      address: address,
+      city: city
+    }
+  })
+}
+
+// 鐧惧害鍦板浘璺嚎瑙勫垝API锛堣绠椾袱涓潗鏍囦箣闂寸殑椹捐溅璺濈锛�
+export function baiduRouteDriving(origin, destination) {
+  // 鍙傛暟楠岃瘉
+  if (!origin || !destination) {
+    return Promise.reject(new Error('鍙傛暟涓嶅畬鏁�,缂哄皯璧风偣鎴栫粓鐐瑰潗鏍�'))
+  }
+  
+  // 楠岃瘉鍧愭爣鏍煎紡锛堢含搴�,缁忓害锛�
+  const originParts = origin.split(',')
+  const destParts = destination.split(',')
+  if (originParts.length !== 2 || destParts.length !== 2) {
+    return Promise.reject(new Error('鍧愭爣鏍煎紡閿欒,搴斾负:绾害,缁忓害'))
+  }
+  
+  return request({
+    url: '/system/gps/baidu/route/driving',
+    method: 'get',
+    params: {
+      origin: origin,
+      destination: destination
+    }
+  })
+}
+
+// 鐧惧害鍦板浘璁$畻涓や釜鍦板潃涔嬮棿鐨勮窛绂伙紙缁勫悎鎺ュ彛锛氬湴鍧�杞潗鏍� + 璺嚎瑙勫垝锛�
+export function baiduDistanceByAddress(fromAddress, fromCity, toAddress, toCity) {
+  // 鍙傛暟楠岃瘉
+  if (!fromAddress || !toAddress) {
+    return Promise.reject(new Error('鍙傛暟涓嶅畬鏁�,缂哄皯璧风偣鎴栫粓鐐瑰湴鍧�'))
+  }
+  
+  return request({
+    url: '/system/gps/baidu/distance/byAddress',
+    method: 'get',
+    params: {
+      fromAddress: fromAddress,
+      fromCity: fromCity,
+      toAddress: toAddress,
+      toCity: toCity
+    }
+  })
+}
\ No newline at end of file

--
Gitblit v1.9.1