position.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {useUserStore} from "@/store/modules/user";
  2. import {saveLongitudeLatitude} from "@/api/position";
  3. import {store} from "@/store";
  4. const userStore = useUserStore(store);
  5. // 发送经纬度到后端
  6. export function sendPosition() {
  7. getPosition().then((data: any) => {
  8. console.log("当前经度:" + data.longitude + "\n 当前纬度:" + data.latitude)
  9. if (userStore.getUserInfo.userID && data.longitude && data.latitude) {
  10. const sendData = {
  11. userId: userStore.getUserInfo.userID,
  12. time: Date.now(),
  13. longitude: data.longitude,
  14. latitude: data.latitude,
  15. }
  16. // 发送请求
  17. saveLongitudeLatitude(sendData);
  18. }
  19. })
  20. }
  21. // 获取经纬度
  22. export function getPosition() {
  23. return new Promise((resolve, reject) => {
  24. if (navigator.geolocation) {
  25. navigator.geolocation.getCurrentPosition(function (position) {
  26. const latitude = position.coords.latitude.toFixed(5)
  27. const longitude = position.coords.longitude.toFixed(5)
  28. const data = {
  29. latitude: latitude,
  30. longitude: longitude
  31. }
  32. resolve(data)
  33. }, function () {
  34. // eslint-disable-next-line prefer-rest-params
  35. reject(arguments)
  36. }, {
  37. enableHighAccuracy: true,
  38. timeout: 10000
  39. })
  40. } else {
  41. reject('你的浏览器不支持当前地理位置信息获取')
  42. }
  43. })
  44. }
  45. // 设置定时器
  46. export function setPositionInterval() {
  47. const time = setInterval(sendPosition, 1000 * 60 * 10);
  48. userStore.setTimer(time);
  49. }
  50. // 清除定时器
  51. export function clearPositionInterval() {
  52. userStore.clearTimer();
  53. }