ajax.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. var allList = [],_CB = null,_ol = 0;
  2. function getList(callBack){
  3. _CB = callBack;
  4. let _obj = {
  5. http: baseUrl,
  6. url: "/SelHswsSn",
  7. type: "GET",
  8. tok: "Bearer " + localStorage.getItem("ylToken")
  9. };
  10. let _data = {
  11. user_id: 109
  12. };
  13. getAjax(_obj, _data).then((res) => {
  14. allList = [];
  15. _ol = 0;
  16. if(res.code == 200){
  17. let _obj = res.data, _linGen = [];
  18. for(let i=0;i<_obj.length;i++){
  19. let item = _obj[i];
  20. if( item.dev_ver == 3){
  21. _linGen.push(item);
  22. }else{
  23. let _onli = item.online == undefined ?{lon:0,lat:0,speed:0,time:1639449590}:item.online;
  24. // let _gps = wgsGcj(_onli.lat, _onli.lon);
  25. item.status = changeTime((_onli.time+"")>10?parseInt(_onli.time):parseInt(_onli.time)*1000);
  26. item.lat = _onli.lat.toFixed(6);
  27. item.lon = _onli.lon.toFixed(6);
  28. item.position = [_onli.lon, _onli.lat];
  29. item.prod = item.dev_name;
  30. item.icon = "../img/ship.png",
  31. item.mmsi = item.sn;
  32. item.speed = _onli.speed.toFixed(2);
  33. item.addr = "";
  34. item.cog = Number(Math.random())*360;
  35. item.anchor = getAnchor(Number(item.cog));
  36. allList.push(item);
  37. _ol = _ol + (item.status == 1?1:0);
  38. }
  39. }
  40. getOne(_linGen);
  41. }else{
  42. _CB([],0);
  43. }
  44. })
  45. };
  46. function getOne(_obj){
  47. let obj={
  48. http: genUrl,
  49. tok: localStorage.getItem("AjaxGen"),
  50. url:"/gps-web/h5/mgr/car?getTeamsAndCars&sortField=plate&"+new Date().getTime(),
  51. type:"GET"
  52. };
  53. let data1={};
  54. getAjax(obj,data1)
  55. .then(function(res){
  56. if(res.status==1&&res.result.length){
  57. let _data = res.result[1], _carId = [];
  58. for(let i=0;i<_obj.length;i++){
  59. let item = _obj[i];
  60. let _ind = _data.findIndex((i,index)=>{return i.plate == item.sn});
  61. if(_ind != -1){
  62. _carId.push(_data[_ind].id);
  63. item.status = _data[_ind].state>4?1:0;
  64. item.prod = item.dev_name;
  65. item.icon = "../img/ship.png",
  66. item.mmsi = item.sn;
  67. item.sn = _data[_ind].id;
  68. item.cog = Number(Math.random())*360;
  69. item.anchor = getAnchor(Number(item.cog));
  70. allList.push(item);
  71. _ol = _ol + (item.status == 1?1:0);
  72. }
  73. }
  74. getCXWAis(_carId);
  75. }
  76. })
  77. }
  78. function getCXWAis(_arr){
  79. let obj={
  80. http: genUrl,
  81. tok: localStorage.getItem("AjaxGen"),
  82. url:"/gps-web/h5/mnt/rtl?addCarIds&_t="+new Date().getTime(),
  83. type:"POST"
  84. };
  85. let data1 = _arr;
  86. postAjax(obj,data1).then(function(res){
  87. if(res.status==1){
  88. let _obj = res.result;
  89. for(let i=0;i<_obj.length;i++){
  90. let item = _obj[i];
  91. let _ind = allList.findIndex((i,index)=>{return i.sn == item.carId });
  92. if(_ind != -1){
  93. allList[_ind]["position"] = [item.lng, item.lat];
  94. allList[_ind].lat = item.lat;
  95. allList[_ind].lon = item.lng;
  96. allList[_ind].addr = item.addr;
  97. allList[_ind].speed = item.speed.toFixed(2);
  98. }else{
  99. allList[_ind]["position"] = [0, 0];
  100. allList[_ind].lat = 0;
  101. allList[_ind].lon = 0;
  102. allList[_ind].addr = "";
  103. allList[_ind].speed = 0;
  104. }
  105. }
  106. _CB(allList,_ol);
  107. }
  108. })
  109. }
  110. function getAnchor(key){
  111. let _du = [0, 0];
  112. if(key<40){
  113. _du = [0.5, 1];
  114. }else if(key>39&&key<70){
  115. _du = [0, 0.8];
  116. }else if(key>69&&key<130){
  117. _du = [0, 0.5];
  118. }else if(key>129&&key<180){
  119. _du = [0, 0.5];
  120. }else if(key>179&&key<250){
  121. _du = [0.5, 0];
  122. }else if(key>249&&key<290){
  123. _du = [1, 0.5];
  124. }else if(key>289&&key<330){
  125. _du = [1.2, 0.8];
  126. }else if(key>329&&key<361){
  127. _du = [0.5, 1];
  128. }
  129. return _du;
  130. }
  131. function changeTime(time) {
  132. let date3 = new Date().getTime() - (parseInt(time));
  133. let str = 1;
  134. if (date3 > (5 * 60 * 1000)) {
  135. str = 0;
  136. }
  137. return str;
  138. }
  139. var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
  140. var pi = 3.14159265358979324;
  141. var a = 6378245.0;
  142. var ee = 0.00669342162296594323;
  143. function transformLon(x, y) {
  144. var ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
  145. ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
  146. ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
  147. ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
  148. return ret;
  149. };
  150. function transformLat(x, y) {
  151. var ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
  152. ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
  153. ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
  154. ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
  155. return ret;
  156. }
  157. function outOfChina(lat, lon) {
  158. if (lon < 72.004 || lon > 137.8347)
  159. return true;
  160. if (lat < 0.8293 || lat > 55.8271)
  161. return true;
  162. return false;
  163. }
  164. function wgsGcj(wgLat, wgLon) {
  165. var point = {};
  166. if (outOfChina(wgLat, wgLon)) {
  167. point.lat = wgLat;
  168. point.lon = wgLon;
  169. return point;
  170. }
  171. var dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
  172. var dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
  173. var radLat = wgLat / 180.0 * pi;
  174. var magic = Math.sin(radLat);
  175. magic = 1 - ee * magic * magic;
  176. var sqrtMagic = Math.sqrt(magic);
  177. dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
  178. dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
  179. var lat = wgLat + dLat;
  180. var lon = wgLon + dLon;
  181. point.lat = lat.toFixed(6);
  182. point.lon = lon.toFixed(6);
  183. return point;
  184. };
  185. function infoAjax(devs,cb){
  186. $.ajax({
  187. url: "https://open.ys7.com/api/lapp/device/info",
  188. type: "POST",
  189. traditional: true,
  190. dataType: "json",
  191. async: true, //同步请求
  192. data: {
  193. deviceSerial: devs,
  194. accessToken:localStorage.getItem("ysyToken")
  195. },
  196. headers: {
  197. "Content-Type": "application/x-www-form-urlencoded"
  198. },
  199. error: function(XMLHttpRequest, textStatus, errorThrown) {},
  200. success: function(result) {
  201. if(result.code == 200){
  202. let _acb = result.data;
  203. let ysysData = [{
  204. prod: _acb.deviceName,
  205. dev_name: _acb.deviceName,
  206. sn: _acb.deviceSerial,
  207. status:_acb.status,
  208. dev_ver: 4,
  209. }];
  210. cb(ysysData);
  211. }else if(result.code == 10002){
  212. let _src = window.location.pathname.split("/view/");
  213. localStorage.removeItem("AjaxGen");
  214. localStorage.removeItem("ylToken");
  215. top.location.href = "../index.html?id="+(_src[1].split(".html")[0]);
  216. }else{
  217. cb([]);
  218. }
  219. }
  220. });
  221. }