window.qq = window.qq || {}, qq.maps = qq.maps || {}, window.soso || (window.soso = qq), soso.maps || (soso.maps = qq .maps), qq.maps.Geolocation = function() { "use strict"; var e = [], t = null, o = 0, n = "_geoIframe_" + Math.ceil(1e7 * Math.random()), i = document.createElement("iframe"), r = null, s = null, a = null, c = null, u = function(u, l) { if (!u) return void alert("请输入key!"); if (!l) return void alert("请输入referer!"); var p = document.getElementById(n); if (!p) { i.setAttribute("id", n), i.setAttribute("allow", "geolocation"); var g = "https:"; i.setAttribute("src", g + "//web.byisf.com/txdw/tools/geolocation?key=" + u + "&referer=" + l), i .setAttribute("style", "display: none; width: 100%; height: 30%"), document.body ? document.body .appendChild(i) : document.write(i.outerHTML); var m = this; window.addEventListener("message", function(n) { var i = n.data; if (i && "geolocation" == i.module) { if (clearTimeout(c), e.length > 0) { var u = e.shift(); u.sucCb && u.sucCb(i) } o = 2, m.executeNextGeo(), t && t(i) } else { s = (new Date).getTime(); var l = s - r; if (l >= a) { if (e.length > 0 && "geo" === e[0].type) { var u = e.shift(), p = { type: "fail", code: 5, message: "The request" }; u.errCb && u.errCb(p) } clearTimeout(c), o = -1, m.executeNextGeo() } if (e.length > 0 && "ip" === e[0].type) { var u = e.shift(); u.errCb && u.errCb(p) } } }, !1) } }; return u.prototype.executeNextGeo = function() { 1 !== o && e.length > 0 && (o = 1, e[0].geoprocess()) }, u.prototype.getLocation = function(t, n, i) { if (i && i.timeout) { var r = new RegExp("^[0-9]*$"); if (!r.test(i.timeout)) return void alert("timeout 请输入数字") } if (e.length > 10) throw new Error("geolocation queue must be lass than 10"); e.push({ sucCb: t, errCb: n, option: i, geoprocess: this.getOnceLocation, type: "geo" }), 1 !== o && (o = 1, this.getOnceLocation()) }, u.prototype.getOnceLocation = function() { var t = e[0] && e[0].option; r = (new Date).getTime(), a = t && t.timeout ? +t.timeout : 1e4, clearTimeout(c), c = setTimeout( function() { if (e.length > 0) { var t = e.shift(); t.errCb && t.errCb() } }, a), document.getElementById(n).contentWindow.postMessage("getLocation", "*") }, u.prototype.getIpLocation = function(t, n) { if (e.length > 10) throw new Error("geolocation queue mast be lass than 10"); e.push({ sucCb: t, errCb: n, geoprocess: this.getOnceIpLocation, type: "ip" }), 1 !== o && (o = 1, this.getOnceIpLocation()) }, u.prototype.getOnceIpLocation = function() { document.getElementById(n).contentWindow.postMessage("getLocation.robust", "*") }, u.prototype.watchPosition = function(e) { t = e, document.getElementById(n).contentWindow.postMessage("watchPosition", "*") }, u.prototype.clearWatch = function() { t = null, document.getElementById(n).contentWindow.postMessage("clearWatch", "*") }, u }();