Преглед изворни кода

fix:地图经度保留六位小数

jiayubo пре 3 месеци
родитељ
комит
324385bbee
4 измењених фајлова са 37 додато и 14 уклоњено
  1. 9 2
      api/login.js
  2. 14 7
      pages/login.vue
  3. 12 3
      store/modules/user.ts
  4. 2 2
      types/store.ts

+ 9 - 2
api/login.js

@@ -2,6 +2,10 @@ import request from '@/utils/request'
 
 // 登录方法
 export function login(username, password, code, uuid, referrerType, referrerId, latitude, longitude) {
+	// 如果经纬度保留6位小数 - 直接使用字符串格式传递
+	const lat = typeof latitude === 'number' ? latitude.toFixed(6) : (latitude || "0.000000")
+	const lng = typeof longitude === 'number' ? longitude.toFixed(6) : (longitude || "0.000000")
+	
 	const data = {
 		username,
 		password,
@@ -9,9 +13,12 @@ export function login(username, password, code, uuid, referrerType, referrerId,
 		uuid,
 		referrerType,
 		referrerId,
-		latitude: Number(latitude) || 0,
-		longitude: Number(longitude) || 0
+		latitude: lat,
+		longitude: lng
 	}
+	
+	console.log('API发送经纬度字符串格式:', lat, lng)
+	
 	return request({
 		url: '/login',
 		headers: {

+ 14 - 7
pages/login.vue

@@ -135,19 +135,26 @@ const getFuzzyLocation = () => {
       type: 'gcj02',
       success: (res) => {
         console.log('模糊位置获取成功:', res)
-        // 确保经纬度是number类型
-        loginForm.latitude = Number(res.latitude)
-        loginForm.longitude = Number(res.longitude)
-        resolve(res)
+        // 使用字符串格式保留6位小数,避免parseFloat去除末尾的0
+        const lat = res.latitude.toFixed(6)
+        const lng = res.longitude.toFixed(6)
+        // 在表单中保存为数字格式
+        loginForm.latitude = Number(lat)
+        loginForm.longitude = Number(lng)
+        console.log('处理后的经纬度:', lat, lng)
+        resolve({
+          latitude: lat,
+          longitude: lng
+        })
       },
       fail: (err) => {
         console.error('模糊位置获取失败:', err)
-        // 位置获取失败时,设为默认值0
+        // 位置获取失败时,设为默认值0,也保留6位小数
         loginForm.latitude = 0
         loginForm.longitude = 0
         resolve({
-          latitude: 0,
-          longitude: 0
+          latitude: "0.000000",
+          longitude: "0.000000"
         })
       }
     })

+ 12 - 3
store/modules/user.ts

@@ -83,9 +83,18 @@ const user: Module<UserState, UserState> = {
       const uuid = userInfo.uuid
       const referrerType = userInfo.referrerType
       const referrerId = userInfo.referrerId
-      // 确保经纬度是number类型
-      const latitude = Number(userInfo.latitude) || 0
-      const longitude = Number(userInfo.longitude) || 0
+      
+      // 确保经纬度保留6位小数 - 直接使用字符串格式
+      const latitude = typeof userInfo.latitude === 'number' ? 
+        userInfo.latitude.toFixed(6) : 
+        (userInfo.latitude?.toString() || "0.000000")
+        
+      const longitude = typeof userInfo.longitude === 'number' ? 
+        userInfo.longitude.toFixed(6) : 
+        (userInfo.longitude?.toString() || "0.000000")
+      
+      console.log('Store发送经纬度字符串格式:', latitude, longitude)
+      
       return new Promise((resolve, reject) => {
         login(username, password, code, uuid, referrerType, referrerId, latitude, longitude).then((res: any) => {
           setToken(res.token)

+ 2 - 2
types/store.ts

@@ -16,8 +16,8 @@ export interface UserForm {
     uuid: string
     referrerType: number
     referrerId: number
-    latitude: number
-    longitude: number
+    latitude: number | string
+    longitude: number | string
 }