From e3dcaeb0180a4e37347ac9ceb44c8a59ae7af37f Mon Sep 17 00:00:00 2001
From: liuyg <liuyg@qq.com>
Date: Mon, 21 Feb 2022 19:40:20 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/qfqk-android

---
 leafletMapOur/grabOrdersMap/js/getPosition.js |  180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 180 insertions(+), 0 deletions(-)

diff --git a/leafletMapOur/grabOrdersMap/js/getPosition.js b/leafletMapOur/grabOrdersMap/js/getPosition.js
index e69de29..a154b87 100644
--- a/leafletMapOur/grabOrdersMap/js/getPosition.js
+++ b/leafletMapOur/grabOrdersMap/js/getPosition.js
@@ -0,0 +1,180 @@
+class $getPositions {
+	constructor(arg) {
+		this.id = arg.id || 0; //任务id
+		this.fn = arg.fn ? function(data) {
+			arg.fn(data);
+		} : function(data) {
+			console.log("未设置输出回调")
+			return data;
+		};
+		this.ourPosition = []; //全部位置
+		this.nowPosition = []; //当前位置
+		this.onceNowPosition = []; //当前一次位置
+		this.getOnceSPosition = null;
+		this.state = false;
+		this.isContinued = false;
+		this.isContinuedTimeInt = null;
+		this.isContinuedTimeOut = null;
+		return this;
+	}
+	//开始获取
+	init() {
+		//判断权限
+		return this;
+
+	}
+	continued() {
+		//开始持续获取定位
+		console.log("开始持续定位")
+		let that = this;
+		this.isContinued = true;
+		if (this.isContinuedTimeInt) {
+			console.log("重复开始持续定位")
+			return;
+		} else {
+			that.once(function(res) {
+				if (res.state == false) {
+					console.log(res.intlat)
+				}
+			})
+			this.isContinuedTimeInt = setInterval(() => {
+				that.once(function(res) {
+					if (res.state == false) {
+						console.log(res.intlat)
+					}
+				})
+			}, 5000)
+		}
+	}
+	continuedTime(val) {
+		//开始持续获取定位
+		let that = this;
+		if (val != 1) {
+			// console.log(that.id,"开始持续定位")
+			this.isContinued = true;
+			that.once(function(res) {
+				if (res.state == false) {
+					// console.log(res.intlat)
+					that.outData();
+				}
+			})
+			if (this.isContinuedTimeOut) {
+				// console.log("重复开始持续定位")
+				return;
+			}
+		}
+		this.isContinuedTimeOut = setTimeout(() => {
+			that.once(function(res) {
+				if (res.state == false) {
+					// console.log(res.intlat)
+					that.outData();
+					if (res.ok) {
+						//返回成功
+						that.continuedTime(1);
+					} else {
+						//返回失败
+						that.continuedTime(1);
+					}
+				}
+			})
+		}, 3000)
+
+	}
+	overContinued() {
+		// console.log("结束持续定位")
+		let that = this;
+		if (this.isContinued) {
+			this.isContinued = false;
+			if (this.isContinuedTimeInt) {
+				clearInterval(that.isContinuedTimeInt);
+				this.isContinuedTimeInt = null;
+			}
+			if (this.isContinuedTimeOut) {
+				clearTimeout(that.isContinuedTimeOut);
+				this.isContinuedTimeOut = null;
+			}
+		}
+		this.isContinued = false;
+		that.outData('out');
+	}
+	once(fn) {
+		// console.log("开始获取一次定位");
+		this.state = true;
+		let ok = true;
+		let that = this,
+			fns = fn || '',
+			outit = function() {
+				if (fns) {
+					fns({
+						state: that.state,
+						intlat: that.onceNowPosition,
+						ok: ok
+					})
+				} else {
+					that.outData();
+				}
+			};
+		outit();
+		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;
+			}
+			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(val) {
+		let d = {
+			state: this.state,
+			intlat: this.onceNowPosition
+		}
+		if (val) {
+			d[val] = val
+		}
+		this.fn(d)
+	}
+}
+
+// export default $getPositions;

--
Gitblit v1.9.3