liuyg
2022-02-22 a8f65a646f2d5e463cc1826425a8294ebf7bcf01
leafletMapOur/grabOrdersMap/js/getPosition.js
@@ -15,6 +15,7 @@
      this.isContinued = false;
      this.isContinuedTimeInt = null;
      this.isContinuedTimeOut = null;
      this.geolocation = null; //定位实例
      return this;
   }
   //开始获取
@@ -49,8 +50,9 @@
   continuedTime(val) {
      //开始持续获取定位
      let that = this;
      that.geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq");
      if (val != 1) {
         console.log("开始持续定位")
         // console.log(that.id,"开始持续定位")
         this.isContinued = true;
         that.once(function(res) {
            if (res.state == false) {
@@ -59,7 +61,7 @@
            }
         })
         if (this.isContinuedTimeOut) {
            console.log("重复开始持续定位")
            // console.log("重复开始持续定位")
            return;
         }
      }
@@ -77,11 +79,11 @@
               }
            }
         })
      }, 5000)
      }, 3000)
   }
   overContinued() {
      console.log("结束持续定位")
      // console.log("结束持续定位")
      let that = this;
      if (this.isContinued) {
         this.isContinued = false;
@@ -93,23 +95,19 @@
            clearTimeout(that.isContinuedTimeOut);
            this.isContinuedTimeOut = null;
         }
         if (this.geolocation) {
            this.geolocation = null;
         }
      }
      this.isContinued = false;
      that.outData('out');
   }
   // overContinued() {
   //    console.log("结束持续定位")
   //    let that = this;
   //    if (this.isContinued) {
   //       this.isContinued = false;
   //       clearInterval(that.isContinuedTimeInt);
   //       this.isContinuedTimeInt = null;
   //    }
   // }
   once(fn) {
      console.log("开始获取一次定位");
      // console.log("开始获取一次定位");
      this.state = true;
      let ok = true;
      let that = this,
         fns = fn,
         fns = fn || '',
         outit = function() {
            if (fns) {
               fns({
@@ -122,97 +120,131 @@
            }
         };
      outit();
      let success = function(position) {
         // console.log(position);
         var lat = position.coords.latitude;
         var lon = position.coords.longitude;
         // console.log("成功返回经纬度信息");
         // console.log(lon, lat, "成功");
         that.onceNowPosition = [lat, lon];
         that.state = false;
         ok = true;
         outit();
      };
      let error = function(error) {
         // console.log(error, "失败");
         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;
      //qq定位
      // var geolocation = new qq.maps.Geolocation("T7RBZ-62U3X-RSQ4P-ZZVCB-WE7JT-HRBOG", "mapqq");
      // var options = {
      //    // timeout: 1000
      // };
      // function showPosition(position) {
      //    console.log(JSON.stringify(position))
      //    let lat = position.lat; //
      //    let lng = position.lng; //火星坐标 //TODO 实现业务代码逻辑
      //    that.onceNowPosition = [lng, lat];
      //    // console.log(that.onceNowPosition)
      //    that.state = false;
      //    ok = true;
      //    outit();
      // }
      // function showErr(data) {
      //    console.log(data)
      //    that.onceNowPosition = data;
      //    that.state = false;
      //    ok = true;
      //    outit();
      // };
      // that.geolocation.getLocation(showPosition, showErr, options);
      // 高德定位
      // console.log(AMap)
      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(JSON.stringify(data));
            var lat = data.position.lat;
            var lon = data.position.lng;
            that.onceNowPosition = [lat, lon];
            that.state = false;
            ok = true;
            outit();
         }
         that.onceNowPosition = msg;
         that.state = false;
         ok = true;
         outit();
      };
      let options = {
         enableHighAccuracy: true,
         // timeout: 5000,
         timeout: Infinity,
         maximumAge: 0,
      };
      this.getOnceSPosition = navigator.geolocation.getCurrentPosition(
         success,
         error,
         options
      );
      //高德定位
      // console.log("开始获取一次定位");
      // this.state = true;
      // let that = this;
      // that.outData();
      // AMap.plugin("AMap.Geolocation", function() {
      //    var geolocation = new AMap.Geolocation({
      //       // 是否使用高精度定位,默认:true
      //       enableHighAccuracy: true,
      //       // 设置定位超时时间,默认:无穷大
      //       // timeout: 10000,
      //    });
      //    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("成功返回经纬度信息");
      //       // console.log(lon, lat, "成功");
      //       that.onceNowPosition = [lon, lat];
      //       this.state = false;
      //       that.outData();
         function onError(data) {
            // 定位出错
            console.log(JSON.stringify(data));
            that.onceNowPosition = data.message;
            that.state = false;
            ok = false;
            outit();
         }
      });
      // return
      // let success = function(position) {
      //    // console.log(position);
      //    var lat = position.coords.longitude; //经度
      //    var lon = position.coords.latitude; //纬度
      //    // console.log("成功返回经纬度信息");
      //    // console.log(lon, lat, "成功");
      //    that.onceNowPosition = [lat, lon];
      //    that.state = false;
      //    ok = true;
      //    outit();
      // };
      // let error = function(error) {
      //    // console.log(error, "失败");
      //    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;
      //    }
      //    function onError(data) {
      //       // 定位出错
      //       // console.log(data);
      //       that.onceNowPosition = data;
      //       this.state = false;
      //       that.outData();
      //    }
      // });
      //    that.onceNowPosition = msg;
      //    that.state = false;
      //    ok = false;
      //    outit();
      // };
      // let options = {
      //    enableHighAccuracy: true,
      //    // timeout: 5000,
      //    timeout: Infinity,
      //    maximumAge: 0,
      // };
      // this.getOnceSPosition = navigator.geolocation.getCurrentPosition(
      //    success,
      //    error,
      //    options
      // );
   }
   //结束获取
   outInit() {
   }
   //抛出数据
   outData() {
   outData(val) {
      let d = {
         state: this.state,
         intlat: this.onceNowPosition
      }
      if (val) {
         d[val] = val
      }
      this.fn(d)
   }
}
// export default $getPositions;