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