shuishen
2022-02-09 cfa95f03007b221f1e00f4bf5cd29c3ccea3a0a7
src/store/modules/mobilePosition.js
@@ -1,3 +1,7 @@
import { Message } from "element-ui";
// import BMap from "./mobilePositionLID";
import RemoGeoLocation from "./mobilePositionLID1";
const mobilePosition = {
  state: { getSPosition: null },
  mutations: {
@@ -7,29 +11,258 @@
        function (res) {
          console.log(res);
        };
      let startTime = new Date().getTime(),
        endTime;
      console.log(startTime, "startTime");
      let times = (dateBegin) => {
        var dateDiff = new Date().getTime() - dateBegin; //时间差的毫秒数
        var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
        var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
        var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
        //计算相差分钟数
        var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
        var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
        //计算相差秒数
        var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
        var seconds = Math.round(leave3 / 1000);
        var leave4 = leave3 % (60 * 1000); //计算分钟数后剩余的毫秒数
        var minseconds = Math.round(leave4 / 1000);
        var timeFn =
          "耗时:" +
          dayDiff +
          "天 " +
          hours +
          "小时 " +
          minutes +
          " 分钟" +
          seconds +
          " 秒" +
          minseconds +
          "毫秒";
        console.log(timeFn);
        return timeFn;
      };
      if (navigator.geolocation) {
        console.log("支持navigator.geolocation-111111111111111");
        try {
          state.getSPosition = navigator.geolocation.getCurrentPosition(
            function (position) {
              console.log(position);
              var lat = position.coords.latitude;
              var lon = position.coords.longitude;
              console.log("成功返回经纬度信息");
              console.log(lon, lat);
              outData([lon, lat]);
            }
          );
        } catch {
          console.log("支持navigator.geolocation-需要HTTPS");
        let success = function (position) {
          console.log(position);
          times(startTime);
          var lat = position.coords.latitude;
          var lon = position.coords.longitude;
          console.log("成功返回经纬度信息");
          Message({
            showClose: true,
            message:
              "成功返回经纬度信息(1)" +
              lon +
              "_" +
              lat +
              "--反应时间:" +
              times(startTime),
            type: "success",
            duration: 0,
          });
          console.log(lon, lat, "成功");
          outData([lon, lat]);
        };
        let error = function (error) {
          // console.log(error, "失败");
          outData(["失败", "失败"]);
          let msg = "none";
          switch (error.code) {
            case error.PERMISSION_DENIED:
              msg = "User denied the request for Geolocation.";
              break;
            case error.POSITION_UNAVAILABLE:
              msg = "Location information is unavailable.";
              break;
            case error.TIMEOUT:
              msg = "The request to get user location timed out.";
              break;
            case error.UNKNOWN_ERROR:
              msg = "An unknown error occurred.";
              break;
          }
          // Message({
          //   showClose: true,
          //   message:
          //     "定位获取失败-msg:" +
          //     msg +
          //     "------" +
          //     error.message +
          //     "--反应时间:" +
          //     times(startTime),
          //   type: "error",
          //   duration: 0,
          // });
          Message({
            showClose: true,
            message: "未开启位置权限",
            type: "error",
            duration: 2000,
          });
        };
        let options = {
          enableHighAccuracy: true,
          // timeout: 5000,
          timeout: Infinity,
          maximumAge: 0,
        };
        // console.log(navigator);
        // console.log(navigator.platform);
        // Message({
        //   showClose: true,
        //   message: navigator.platform,
        //   type: "error",
        //   duration: 0,
        // });
        // console.log(CLLocationManager);
        // return;
        if (navigator.platform === "iPhone") {
          //iphone请求权限
          // let remoGeo = new RemoGeoLocation();
          // navigator.geolocation.getCurrentPosition = function () {
          //   return remoGeo.getCurrentPosition.apply(remoGeo, arguments);
          // };
          // navigator.geolocation.watchPosition = function () {
          //   return remoGeo.watchPosition.apply(remoGeo, arguments);
          // };
          // Message({
          //   showClose: true,
          //   message: "ipone",
          //   type: "error",
          //   duration: 0,
          // });
          // console.log(CLLocationManager);
          // Message({
          //   showClose: true,
          //   message: CLLocationManager,
          //   type: "error",
          //   duration: 0,
          // });
          // return;
        }
        // return
        // console.log(BMap);
        //百度定位
        //       <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=zTNaMXHcfGsG0nFvwd6G72aMOo98uzH2">
        // </script>
        // var geolocation = new BMap.Geolocation();
        // geolocation.getCurrentPosition(function (r) {
        //   if (this.getStatus() == BMAP_STATUS_SUCCESS) {
        //     // var mk = new BMap.Marker(r.point);
        //     // map.addOverlay(mk);
        //     // map.panTo(r.point);
        //     console.log("您的位置:" + r.point.lng + "," + r.point.lat);
        //     outData([r.point.lng, r.point.lat]);
        //     Message({
        //       showClose: true,
        //       message:
        //         "成功返回经纬度信息" +
        //         r.point.lng +
        //         "_" +
        //         r.point.lat +
        //         "--反应时间:" +
        //         times(startTime),
        //       type: "success",
        //       duration: 0,
        //     });
        //   } else {
        //     console.log("failed" + this.getStatus());
        //     Message({
        //       showClose: true,
        //       message:
        //         "定位获取失败-msg:" +
        //         "failed" +
        //         this.getStatus() +
        //         "------" +
        //         "--反应时间:" +
        //         times(startTime),
        //       type: "error",
        //       duration: 0,
        //     });
        //   }
        // });
        // return;
        //高德定位
        // AMap.plugin("AMap.Geolocation", function () {
        //   var geolocation = new AMap.Geolocation({
        //     // 是否使用高精度定位,默认:true
        //     enableHighAccuracy: true,
        //     // 设置定位超时时间,默认:无穷大
        //     timeout: 10000,
        //     // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
        //     // buttonOffset: new AMap.Pixel(10, 20),
        //     //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
        //     // zoomToAccuracy: true,
        //     //  定位按钮的排放位置,  RB表示右下
        //     // buttonPosition: "RB",
        //   });
        //   geolocation.getCurrentPosition();
        //   AMap.event.addListener(geolocation, "complete", onComplete);
        //   AMap.event.addListener(geolocation, "error", onError);
        //   function onComplete(data) {
        //     // data是具体的定位信息
        //     console.log(data);
        //     var lat = data.position.lat;
        //     var lon = data.position.lng;
        //     console.log("成功返回经纬度信息");
        //     Message({
        //       showClose: true,
        //       message:
        //         "成功返回经纬度信息" +
        //         lon +
        //         "_" +
        //         lat +
        //         "--反应时间:" +
        //         times(startTime),
        //       type: "success",
        //       duration: 0,
        //     });
        //     console.log(lon, lat, "成功");
        //     outData([lon, lat]);
        //   }
        //   function onError(data) {
        //     // 定位出错
        //     console.log(data);
        //     Message({
        //       showClose: true,
        //       message:
        //         "定位获取失败-msg:" +
        //         data.message +
        //         "------" +
        //         "--反应时间:" +
        //         times(startTime),
        //       type: "error",
        //       duration: 0,
        //     });
        //   }
        // });
        // return;
        state.getSPosition = navigator.geolocation.getCurrentPosition(
          success,
          error,
          options
        );
      } else {
        console.log("不支持navigator.geolocation");
        Message({
          showClose: true,
          message: "不支持定位",
          type: "warning",
          duration: 0,
        });
        return "不支持navigator.geolocation";
      }
    },
    CLOSE_NOWPOSITION(state) {
      state.getSPosition = null;
      // if (state.getSPosition && navigator.geolocation) {
      //   navigator.geolocation.clearWatch(state.getSPosition);
      //   state.getSPosition = null;
      // }
    },
  },
  actions: {},