浏览代码

用户地址地图获取code编码/删除

jiayubo 1 周之前
父节点
当前提交
efd243dcc4
共有 3 个文件被更改,包括 314 次插入225 次删除
  1. 9 0
      api/userSettings.js
  2. 62 16
      pages_mine/components/setupUser/Add.vue
  3. 243 209
      pages_mine/pages/selectAddress/index.vue

+ 9 - 0
api/userSettings.js

@@ -25,3 +25,12 @@ export function useraDdress(data) {
 		data: data
     })
 }
+
+
+// 地址删除
+export function addressAddressIds(addressId) {
+  return request({
+    url: `/core/user/address/${addressId}`,
+    method: 'delete',
+  })
+}

+ 62 - 16
pages_mine/components/setupUser/Add.vue

@@ -197,28 +197,74 @@
 		modelForm.value.districtCode = code[2]
 		modelForm.value.districtInd = index[2]
 
-	}
-	function onCityWx(row) {
-    console.log('地区选点',row);
+}
+
+function getAdcodeByCoordinates(latitude, longitude) {
+    const key = "XIXBZ-KF2KB-AAXUW-NCF42-UDJBJ-H2FAE"; // 替换为你的腾讯地图 API 密钥
+    const url = `https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude},${longitude}&key=${key}`;
+
+    return new Promise((resolve, reject) => {
+        uni.request({
+            url: url,
+            success: (res) => {
+                if (res.data.status === 0) {
+                    const adInfo = res.data.result.ad_info;
+                    resolve({
+                        provinceName: adInfo.province,
+                        cityName: adInfo.city,
+                        districtName: adInfo.district,
+                        provinceCode: adInfo.adcode.slice(0, 2) + "0000", // 省编码
+                        cityCode: adInfo.adcode.slice(0, 4) + "00",     // 市编码
+                        districtCode: adInfo.adcode,                  // 区编码
+                    });
+                } else {
+                    reject("Error fetching adcode: " + res.data.message);
+                }
+            },
+            fail: (err) => {
+                reject(err);
+            },
+        });
+    });
+}
+
+function onCityWx(row) {
+    console.log('地区选点', row);
     wx.chooseLocation({
-        success: function (res) {
-            const result = splitAddress(res.address);
-            console.log(res,result);
-            modelForm.value.provinceName = result.province
-			modelForm.value.cityName = result.city
-			modelForm.value.districtName = result.district
-			modelForm.value.address = result.detail
-			modelForm.value.longitude =res.longitude
-			modelForm.value.latitude = res.latitude
+        success: async function (res) {
+            try {
+                const result = splitAddress(res.address); // 解析地址信息
+                console.log(result, 'result>>>>>>>>');
+                console.log(res, result);
+
+                // 使用腾讯地图 API 获取编码
+                const adcodeData = await getAdcodeByCoordinates(res.latitude, res.longitude);
+
+                modelForm.value.provinceName = adcodeData.provinceName;
+                modelForm.value.cityName = adcodeData.cityName;
+                modelForm.value.districtName = adcodeData.districtName;
+                modelForm.value.provinceCode = adcodeData.provinceCode; // 设置省编码
+                modelForm.value.cityCode = adcodeData.cityCode;         // 设置市编码
+                modelForm.value.districtCode = adcodeData.districtCode; // 设置区编码
+                modelForm.value.address = result.detail;
+                modelForm.value.longitude = res.longitude;
+                modelForm.value.latitude = res.latitude;
+            } catch (err) {
+                console.error(err);
+                uni.showToast({
+                    title: '获取地址编码失败',
+                    icon: 'error',
+                });
+            }
         },
         fail: function (err) {
             console.log(err);
             uni.showToast({
-			title:'获取地址失败',
-			icon: 'error',
-		});
+                title: '获取地址失败',
+                icon: 'error',
+            });
         },
-    })
+    });
 }
 	
 	// 预留校验函数

文件差异内容过多而无法显示
+ 243 - 209
pages_mine/pages/selectAddress/index.vue