WME Export Trajet

Export GPS point of your drives.

  1. // ==UserScript==
  2. // @name WME Export Trajet
  3. // @name:fr WME Export Trajet
  4. // @version 1.9
  5. // @description Export GPS point of your drives.
  6. // @description:fr Export des coordonées GPS de vos trajets.
  7. // @include https://www.waze.com/editor*
  8. // @include https://www.waze.com/*/editor*
  9. // @include https://beta.waze.com/editor*
  10. // @include https://beta.waze.com/*/editor*
  11. // @exclude https://www.waze.com/user*
  12. // @exclude https://www.waze.com/*/user*
  13. // @namespace https://gf.qytechs.cn/scripts/14832-wme-export-trajet
  14. // @icon data:image/png;base64,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
  15. // @author seb-d59
  16. // @copyright seb-d59 - 2015
  17. // ==/UserScript==
  18. var WMEExpT_Version = 1.9;
  19. var WMEExpT_Name = "WME Export Trajet";
  20. var WMEExpT = {};
  21. var icon_export="iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3wgBFAggT+iJkgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAADUklEQVR42u2dTWsTURSGn5lOrEoJVYsff0AqUhHEreBW40IR/FiJKze6cV2NuhFdiFgQXLgQf0ARXIk7t3UhLYp/QBTFEksbmibjYk4kxHSMucn96JwXhtAmTU6fOfecc++cuYmwoxIQ459aQMPkDSILRk4CN4EZDwEuAQ+BZTxVCbgH/ACaHh4/gUdykr3UODAvxqaeHkYQY1STwBXg9iAQEwcG14AFYMXBZ1c2ifttiAB3/icmugC4AFwWI1OLoeRlF7waUDaF6ALgihhXd1CydOo5cNUUoqsYmDr63E6I0wKxZhITi5xEGsB9U4hFz8LLMlQHhqhljCFEBWgIUQEaQlSAhhAVoCHEpMCgJoBdspjQrTUpccgptleBapEBHpPpXd6cvJQzYzkMxEUGWAZO9vG6U3klYJEBDpIDWt1/U5Qk0iJbvq8N+42L4oENsmsfMNi1mRjYAM4UFWC7PKkOOOrGgRdF9sBOT3QaRFUKUAEqQAWoUoAKUAH2rW3ADux0km05gBGwBzgnj5ECHGwadR64AUz5BjEEgBGwl2xR87pvEENJIjFwwEeIIWVhLyGOejVmA7jI8DqxOiECPAG+465ZaeQA273Io/JE5xCTnMA9JsZGjkfIPmB7DsQImAO+uYDYC+AYWe9cBTgC7HQIMQH2AwdzPPGaQL4FfLUNMenhedPAXeAE2fVP14km/sdzU8AF+XnWticmPbyvIvCmAsrQZeCseOBjiYlOzm4sw2UiwHn9buAScBqL13q6AbaAz7i5BcFU68Ai8H4Emb9vgE3gNfBOhsFGIPDqwBuJ3R9dxsBUDJjtysKuEsmYZNhDYkcevCrwwfZJTzYpfpeAT/IPuJ4pzQBPgaO+wcsrpFMxxvUQXpfMWvcRXmiLCd7BswGw1+2ur+T3wcML0QO9gmdjNWaYWgXe+gQvJIBrHXWeN/BCAdiUwn7eN3ghAEzJGiOfAV9sTtG2kgf+kiP10bgQAKY+G6e9MQpQASpABahSgApQASpAlQJUgApQAaoUoAIMSC7WA/M2vPFVk2zSseYCYD8b3vimCeB4rxHrAmC/G94EEe4Sn4zRJPK3RrbhjWPVyJo5W6P2QNMNb3zVIvAAaNi6faHE1iqZ/nyNxm/UEhZ+/DhJcwAAAABJRU5ErkJggg==";
  22. var lang={};
  23. WMEExpT.Trajets = {'list': {},'objects':{}};
  24. WMEExpT.typeExport= "" ;
  25. var resultRequest={};
  26. var debug=false;
  27. var WME_FixUI_run = false;
  28. // *********************
  29. // ** HELPER FUNCTION **
  30. // *********************
  31. function log(msg, obj)
  32. {
  33. if (obj === undefined)
  34. console.log(WMEExpT_Name + " v" + WMEExpT_Version + " - " + msg);
  35. else if (debug)
  36. console.debug(WMEExpT_Name + " v" + WMEExpT_Version + " - " + msg + " " ,obj);
  37. }
  38. function getId(node) {
  39. return document.getElementById(node);
  40. }
  41. function getElementsByClassName(classname, node) {
  42. node || (node = document.getElementsByTagName("body")[0]);
  43. for (var a = [], re = new RegExp("\\b" + classname + "\\b"), els = node.getElementsByTagName("*"), i = 0, j = els.length;i < j;i++) {
  44. re.test(els[i].className) && a.push(els[i]);
  45. }
  46. return a;
  47. }
  48. function getFunctionWithArgs(func, args) {
  49. return (
  50. function () {
  51. var json_args = JSON.stringify(args);
  52. return function() {
  53. var args = JSON.parse(json_args);
  54. func.apply(this, args);
  55. };
  56. }
  57. )();
  58. }
  59. function getMonthNumber(mName){
  60. var n;
  61. for (n=1; n<=12; n++){
  62. if (mName === I18n.translations[I18n.locale].date.month_names[n])
  63. return n;
  64. }
  65. }
  66. // *************
  67. // ** INIT **
  68. // *************
  69. function WMEExpT_bootstrap() {
  70. if (typeof unsafeWindow === "undefined") {
  71. unsafeWindow = ( function () {
  72. var dummyElem = document.createElement('p');
  73. dummyElem.setAttribute('onclick', 'return window;');
  74. return dummyElem.onclick();
  75. }) ();
  76. }
  77. /* begin running the code! */
  78. log("starting");
  79. WMEExpT_init();
  80. }
  81. function WMEExpT_init(){
  82. // Waze object needed
  83. WMEExpTWaze = unsafeWindow.W;
  84. if(typeof WMEExpTWaze == "undefined" || WMEExpTWaze == null){
  85. if (debug) { console.error("WME Export Trajet - WMEExpTWaze : NOK"); }
  86. window.setTimeout(WMEExpT_init, 500);
  87. return;
  88. }
  89. WMEExpTLoginManager = unsafeWindow.W.loginManager;
  90. if(typeof WMEExpTLoginManager == "undefined" || WMEExpTLoginManager == null){
  91. if (debug) { console.error("WME Export Trajet - WMEExpTLoginManager : NOK"); }
  92. window.setTimeout(WMEExpT_init, 500);
  93. return;
  94. }
  95. WMEExpTUser = unsafeWindow.W.loginManager.user;
  96. if(typeof WMEExpTUser == "undefined" || WMEExpTUser == null){
  97. if (debug) { console.error("WME Export Trajet - WMEExpTUser : NOK"); }
  98. window.setTimeout(WMEExpT_init, 500);
  99. return;
  100. }
  101. userName = unsafeWindow.W.loginManager.user.userName;
  102. if(typeof userName == "undefined" || userName == null ){
  103. if (debug) { console.error("WME Export Trajet - userName : NOK"); }
  104. window.setTimeout(WMEExpT_init, 500);
  105. return;
  106. }
  107. // Traductions
  108. WMEExpTI18n = unsafeWindow.I18n.locale;
  109. if(typeof(WMEExpTI18n) === 'undefined'){
  110. if (debug) { console.error("WME Export Trajet - WMEExpTI18n : NOK"); }
  111. setTimeout(WMEExpT_init, 500);
  112. return;
  113. }
  114. // Waze GUI needed
  115. WMEExpT_userInfo = getId("user-info");
  116. if(typeof(WMEExpT_userInfo) === 'undefined'){
  117. if (debug) { console.error("WME Export Trajet - WMEExpT_userInfo : NOK"); }
  118. setTimeout(WMEExpT_init, 500);
  119. return;
  120. }
  121. WMEExpT_navTabs = getElementsByClassName("nav-tabs", WMEExpT_userInfo)[0];
  122. if(typeof(WMEExpT_navTabs) === 'undefined'){
  123. if (debug) { console.error("WME Export Trajet - WMEExpT_navTabs : NOK"); }
  124. setTimeout(WMEExpT_init, 500);
  125. return;
  126. }
  127. WMEExpT_tabContent = getElementsByClassName("tab-content", WMEExpT_userInfo)[0];
  128. if(typeof(WMEExpT_tabContent) === 'undefined'){
  129. if (debug) { console.error("WME Export Trajet - WMEExpT_tabContent : NOK"); }
  130. setTimeout(WMEExpT_init, 500);
  131. return;
  132. }
  133. WMEExpTDrives = getId("sidepanel-drives");
  134. if(typeof(WMEExpTDrives) === 'undefined'){
  135. if (debug) { console.error("WME Export Trajet - WMEExpTDrives : NOK"); }
  136. setTimeout(WMEExpT_Main, 1000);
  137. return;
  138. }
  139. //======================================================
  140. // Translation
  141. if (WMEExpTI18n == "fr") {
  142. lang = new Array("Export","Selectionnez le trajet","Heure","Vitesse");
  143. }
  144. else {
  145. lang = new Array("Export","Select the Drive","Time","Speed");
  146. }
  147. log("init ok");
  148. // MTE mode event
  149. /*
  150. W.app.modeController.model.bind('change:mode', function(){
  151. if (W.app.modeController.getState() === undefined){
  152. WMEExpT_html();
  153. }
  154. });
  155. */
  156. // reload after changing WME units
  157. W.prefs.on('change:isImperial', function(){
  158. WMEExpT_html();
  159. });
  160. // Then running
  161. WMEExpT_css();
  162. }
  163. // *************
  164. // ** HTML **
  165. // *************
  166. function WMEExpT_css() {
  167. var Scss = document.createElement("style");
  168. Scss.type = "text/css";
  169. var css =".CSETcontent {width:auto; height:100px; box-shadow: 1px 4px 10px #40A497; border:2px solid #40A497;}";
  170. css +=".divl {float:left; height:20px; text-align:center;}";
  171. css +=".divr {float:right; height:20px; text-align:center;}";
  172. css +="#export {width:35px; height:22px;}";
  173. Scss.innerHTML = css;
  174. document.body.appendChild(Scss);
  175. log('CSS Ok');
  176. WMEExpT_html();
  177. }
  178. function WMEExpT_html() {
  179. WMEExpTDrives = getId("sidepanel-drives");
  180. var addon= document.createElement('div', "ExpT-cotent");
  181. var content = "<div class='CSETcontent'>";
  182. content += "<div style='float:left; margin-left:5px; margin-top:5px;'><b><a href='https://www.waze.com/forum/viewtopic.php?f=1316&t=170293' target='_blank'><u>"+ WMEExpT_Name +"</u></a></b> v"+ WMEExpT_Version +"</div><br>";
  183. content += "<div class='divl' style='width:240px; height:32px; margin-left:10px; margin-top:5px; text-align:left;'><select id='selectTrajet'>";// style='width:200px;'>";
  184. content += "<option value='0' id='0'>"+lang[1]+"</option>";
  185. content += "</select></div><br>";
  186. content += "<div id='selTypeExport' style='height:30px; margin-left:10px; margin-top:5px; clear:both; padding-top:10px;'>";
  187. content += "<div class='divl' style='width:60px;'><input type='radio' id='gpx' value='GPX' checked>&nbspGPX</div>";
  188. content += "<div class='divl' style='width:60px;'><input type='radio' id='kml' value='KML'>&nbspKML</div>";
  189. content += "<div class='divl' style='width:20px;'><a href='#' id='exportTrajet'><img style='width:20px;' title='"+ lang[0] +"' src='data:image/png;base64,"+ icon_export +"' /></a></div></div></div>";
  190. addon.innerHTML = content;
  191. WMEExpTDrives.appendChild(addon);
  192. getId('selectTrajet').onfocus = updateTrajetsList;
  193. getId('selectTrajet').onchange = ExpTrajet;
  194. getId('gpx').onclick = function(){if (getId('kml').checked) getId('kml').checked=false;generateTypeExport();};
  195. getId('kml').onclick = function(){if (getId('gpx').checked) getId('gpx').checked=false;generateTypeExport();};
  196. generateTypeExport();
  197. log('html Ok');
  198. }
  199. function generateTypeExport(){
  200. var typeGpx = getId('gpx').checked;
  201. var typeKml = getId('kml').checked;
  202. WMEExpT.typeExport = (typeKml && !typeGpx) ? "kml" : "gpx";
  203. log('WMEExpT.typeExport',WMEExpT.typeExport);
  204. ExpTrajet();
  205. }
  206. function updateTrajetsList()
  207. {
  208. WME_FixUI_run = (getId("sidepanel-FixUI") != null ? true : false);
  209. log("WME_FixUI_run",WME_FixUI_run);
  210. var available_Trajets = getElementsByClassName('result session session-available');
  211. if(typeof(available_Trajets) === 'undefined'){
  212. if (debug) { console.error("WME Export Trajet - available_Trajets : NOK"); }
  213. return;
  214. }
  215. log('available_Trajets',available_Trajets);
  216. var selectTrajet = getId('selectTrajet');
  217. selectTrajet.options.length = 1;
  218. for (var i=0;i<available_Trajets.length;i++){
  219. var trajetID = available_Trajets[i].dataset.id;
  220. var trajetDetail = {};
  221. var d;
  222. WMEExpT.Trajets.list[trajetID] = {"text": "", "startDate": "", "endDate": "", "startTime": "", "endTime": ""};
  223. if (WME_FixUI_run){
  224. trajetDetail.DateTime = new Date(available_Trajets[i].childNodes[0].childNodes[0].textContent);
  225. d = new Date(trajetDetail.DateTime);
  226. trajetDetail.Date = d.getFullYear() + "-" + (parseInt(d.getMonth() + 1) > 9 ? parseInt(d.getMonth() + 1) : "0" + parseInt(d.getMonth() + 1)) + "-" + (d.getDate()>9 ? d.getDate() : "0"+d.getDate());
  227. trajetDetail.Time = (d.getHours() > 9 ? d.getHours() : "0" + d.getHours()) + "h" + (d.getMinutes()>9 ? d.getMinutes() : "0"+d.getMinutes());
  228. }else{
  229. trajetDetail.DateTime = available_Trajets[i].childNodes[0].childNodes[0].textContent;
  230. trajetDetail.DateTime = trajetDetail.DateTime.split(",");
  231. trajetDetail.Date = trajetDetail.DateTime[1].trim() + "-" + getMonthNumber(trajetDetail.DateTime[0].trim().split(" ")[0]) + "-" + trajetDetail.DateTime[0].trim().split(" ")[1];
  232. trajetDetail.Time = trajetDetail.DateTime[2].replace(/\:/g,'h').trim();
  233. d = new Date(trajetDetail.Date);
  234. d.setHours(trajetDetail.Time.split("h")[0],trajetDetail.Time.split("h")[1],0);
  235. }
  236. log('trajetDetail.DateTime',trajetDetail.DateTime);
  237. //trajetDetail.Time = available_Trajets[i].childNodes[1].childNodes[0].textContent;
  238. //trajetDetail.Time = trajetDetail.Time.substr(trajetDetail.DateTime.indexOf(":")-2).trim().replace(/\:/g,'h');
  239. trajetDetail.dst = available_Trajets[i].childNodes[1].childNodes[0].textContent;
  240. trajetDetail.tps = available_Trajets[i].childNodes[1].childNodes[1].textContent;
  241. log("trajetDetail.tps", trajetDetail.tps);
  242. log('trajetDetail',trajetDetail);
  243. //var d = new Date(W.model.archives.objects[trajetID].startTime);
  244. //var d = new Date(trajetDetail.Date);
  245. //d.setHours(trajetDetail.Time.split("h")[0],trajetDetail.Time.split("h")[1],0);
  246. log('startTime d',d);
  247. WMEExpT.Trajets.list[trajetID].startDate = d.getFullYear() + "-" + (parseInt(d.getMonth() + 1) > 9 ? parseInt(d.getMonth() + 1) : "0" + parseInt(d.getMonth() + 1)) + "-" + (d.getDate()>9 ? d.getDate() : "0"+d.getDate());
  248. WMEExpT.Trajets.list[trajetID].startTime = (d.getHours() > 9 ? d.getHours() : "0" + d.getHours()) + ":" + (d.getMinutes()>9 ? d.getMinutes() : "0"+d.getMinutes()) + ":" + (d.getSeconds()>9 ? d.getSeconds() : "0"+d.getSeconds());
  249. //trajetDetail.tps = trajetDetail.tps.replace(" min",'').replace(" h ",':').split(":");
  250. var temp = trajetDetail.tps.split(" ");
  251. log("trajetDetail.tps.split", temp);
  252. var tps= [];
  253. for (var l=0;l<temp.length;l++){
  254. if (temp[l].match(/^[0-9]{1,10}/g) != null)
  255. tps.push(temp[l]);
  256. }
  257. trajetDetail.tps = trajetDetail.tps.replace(/\s/g,"")
  258. log("trajetDetail.tps", trajetDetail.tps);
  259. var ms;
  260. if (tps.length ==1){
  261. ms = tps[0] * 60000;
  262. }else{
  263. ms = tps[0] * 3600000 + tps[1] * 60000;
  264. }
  265. var d2 = new Date(d.getTime() + ms);
  266. log('tps d2',d2);
  267. WMEExpT.Trajets.list[trajetID].endDate = d2.getFullYear() + "-" + (parseInt(d2.getMonth() + 1) > 9 ? parseInt(d2.getMonth() + 1) : "0" + parseInt(d2.getMonth() + 1)) + "-" + (d2.getDate()>9 ? d2.getDate() : "0"+d2.getDate());
  268. WMEExpT.Trajets.list[trajetID].endTime = (d2.getHours() > 9 ? d2.getHours() : "0" + d2.getHours()) + ":" + (d2.getMinutes()>9 ? d2.getMinutes() : "0"+d2.getMinutes()) + ":" + (d2.getSeconds()>9 ? d2.getSeconds() : "0"+d2.getSeconds());
  269. //WMEExpT.Trajets.list[trajetID].text = WMEExpT.Trajets.list[trajetID].startDate + " - " + trajetDetail.Time + " - " + trajetDetail.dst + " - " + trajetDetail.tps;
  270. WMEExpT.Trajets.list[trajetID].text = trajetDetail.Date + " - " + trajetDetail.Time + " - " + trajetDetail.dst + " - " + trajetDetail.tps;
  271. log("WMEExpT.Trajets.list[trajetID]",WMEExpT.Trajets.list[trajetID]);
  272. var expTrOption = document.createElement('option');
  273. var expTrText = document.createTextNode(WMEExpT.Trajets.list[trajetID].text);
  274. expTrOption.setAttribute('value','0');
  275. expTrOption.setAttribute('id', trajetID);
  276. expTrOption.appendChild(expTrText);
  277. selectTrajet.appendChild(expTrOption);
  278. }
  279. log('updateTrajetsList Ok');
  280. log("WMEExpT",WMEExpT);
  281. }
  282. function ExpTrajet() {
  283. log('ExpTrajet');
  284. var selectTrajet = getId('selectTrajet');
  285. if (selectTrajet.selectedIndex <= 0)
  286. return;
  287. var id = selectTrajet.options[selectTrajet.selectedIndex].id;
  288. if (id <= 0)
  289. return;
  290. if (!WMEExpT.Trajets.objects.hasOwnProperty(id)){
  291. var url = document.location.origin;
  292. if (url.search("beta") != -1){
  293. url += "/row-Descartes/app/Archive/SessionGPS?id="+id;
  294. }else{
  295. url += "/row-Descartes-live/app/Archive/SessionGPS?id="+id;
  296. }
  297. RequestObject = window.ActiveXObject ? new ActiveXObject("Msxml2.XMLHTTP") : new XMLHttpRequest();
  298. RequestObject.onreadystatechange = function(){
  299. if(RequestObject.readyState == 4) {
  300. resultRequest={};
  301. resultRequest = JSON.parse(RequestObject.responseText);
  302. WMEExpT.Trajets.objects[id] = resultRequest.archiveSessions.objects[0];
  303. log('New data download link ok: '+ WMEExpT.Trajets.list[id].text+'; id= '+ id);
  304. if (WMEExpT.typeExport == "gpx") generateGpxFile(id);
  305. if (WMEExpT.typeExport == "kml") generateKmlFile(id);
  306. }
  307. };
  308. RequestObject.open("GET", url,false);
  309. RequestObject.send(null);
  310. }else if (WMEExpT.Trajets.objects.hasOwnProperty(id)){
  311. if (WMEExpT.typeExport == "gpx"){
  312. if (!WMEExpT.Trajets.objects[id].hasOwnProperty("gpx")){
  313. generateGpxFile(id);
  314. }else if (WMEExpT.Trajets.objects[id].hasOwnProperty("gpx")){
  315. log('data download link ok: '+ WMEExpT.Trajets.list[id].text+'.gpx '+'; id= '+ id);
  316. getId('exportTrajet').setAttribute('download', userName + " - " + WMEExpT.Trajets.list[id].text+ '.gpx');
  317. getId('exportTrajet').href='data:Application/octet-stream,' + encodeURIComponent(WMEExpT.Trajets.objects[id].gpx);
  318. }
  319. }else if (WMEExpT.typeExport == "kml"){
  320. if (!WMEExpT.Trajets.objects[id].hasOwnProperty("kml")){
  321. generateKmlFile(id);
  322. }else if (WMEExpT.Trajets.objects[id].hasOwnProperty("kml")){
  323. log('data download link ok: '+ WMEExpT.Trajets.list[id].text+'.kml '+'; id= '+ id);
  324. getId('exportTrajet').setAttribute('download', userName + " - " + WMEExpT.Trajets.list[id].text+ '.kml');
  325. getId('exportTrajet').href='data:Application/octet-stream,' + encodeURIComponent(WMEExpT.Trajets.objects[id].kml);
  326. }
  327. }
  328. }
  329. }
  330. function generateGpxFile(id){
  331. log('generateGpxFile');
  332. //************************************************//
  333. // Format du Fichier:
  334. //
  335. // <gpx .......>
  336. // <trk>
  337. // <name>Test Traces</name>
  338. // <trkseg>
  339. // <trkpt lat="..." lon="..."></trkpt>
  340. // .....
  341. // <trkpt lat="..." lon="..."></trkpt>
  342. // </trkseg>
  343. // </trk>
  344. // </gpx>
  345. //
  346. //***********************************************//
  347. var entete = '<?xml version="1.0" encoding="UTF-8"?>\n<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="seb-d59" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n';
  348. entete += '<trk>\n';
  349. /*
  350. WMEExpT.Trajets.objects[id].driveParts: [{matchType: "MATCHED", geometry: {type: "LineString",…}}]
  351. WMEExpT.Trajets.objects[id].fromLocation: {street: "....", city: "....", country: "...."}
  352. WMEExpT.Trajets.objects[id].toLocation: {street: "....", city: "....", country: "...."}
  353. */
  354. var temp="";
  355. var roadName=[];
  356. var traitementlonlat=[];
  357. temp = (WMEExpT.Trajets.objects[id].fromLocation != null) ? String(WMEExpT.Trajets.objects[id].fromLocation.street)+', '+String(WMEExpT.Trajets.objects[id].fromLocation.city)+', '+String(WMEExpT.Trajets.objects[id].fromLocation.country) : String(I18n.translations[I18n.locale].segment.address.none);
  358. roadName.push(temp);
  359. temp = (WMEExpT.Trajets.objects[id].toLocation != null) ? String(WMEExpT.Trajets.objects[id].toLocation.street)+', '+String(WMEExpT.Trajets.objects[id].toLocation.city)+', '+String(WMEExpT.Trajets.objects[id].toLocation.country) : String(I18n.translations[I18n.locale].segment.address.none);
  360. roadName.push(temp);
  361. log('roadName', roadName );
  362. log(roadName[0] +' vers '+ roadName[1]);
  363. var nameIti = '<name>'+ roadName[0] +' vers '+ roadName[1] +'</name>\n<trkseg>\n';
  364. var lonlat=[];
  365. traitementlonlat=WMEExpT.Trajets.objects[id].driveParts;
  366. for (i=0; i < traitementlonlat.length; i++){
  367. for (j=0; j < traitementlonlat[i].geometry.coordinates.length; j++){
  368. if (i==0 & j==0){
  369. lonlat.push(traitementlonlat[i].geometry.coordinates[j]);
  370. }else if (!((lonlat[lonlat.length-1][0] == traitementlonlat[i].geometry.coordinates[j][0]) && (lonlat[lonlat.length-1][1] == traitementlonlat[i].geometry.coordinates[j][1]))) {
  371. lonlat.push(traitementlonlat[i].geometry.coordinates[j]);
  372. }
  373. }
  374. }
  375. var lonlatText = "";
  376. for (i=0; i<lonlat.length;i++){
  377. lonlatText += '<trkpt lon="' + lonlat[i][0] +'" lat="'+ lonlat[i][1] +'"></trkpt>\n';
  378. }
  379. var end = '</trkseg>\n</trk>\n</gpx>';
  380. WMEExpT.Trajets.objects[id].gpx = entete + nameIti + lonlatText + end;
  381. log('WMEExpT.Trajets.objects[id].gpx',WMEExpT.Trajets.objects[id].gpx);
  382. getId('exportTrajet').setAttribute('download', userName + " - " + WMEExpT.Trajets.list[id].text+ '.gpx');
  383. getId('exportTrajet').href='data:Application/octet-stream,' + encodeURIComponent(WMEExpT.Trajets.objects[id].gpx);
  384. }
  385. function generateKmlFile(id){
  386. log('generateKmlFile');
  387. var entete = '<?xml version="1.0" encoding="UTF-8"?>\n<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">\n';
  388. entete += '<Document>\n';
  389. entete += '<name>' + userName + " - " + WMEExpT.Trajets.list[id].text +'.kml</name>\n';
  390. entete += '<Style id="lineStyle">\n<LineStyle>\n<color>e5f00014</color>\n<width>3</width>\n</LineStyle>\n</Style>\n<StyleMap id="route">\n<Pair>\n<key>normal</key>\n<styleUrl>#route_n</styleUrl>\n</Pair>\n<Pair>\n<key>highlight</key>\n<styleUrl>#route_h</styleUrl>\n</Pair>\n</StyleMap>\n<Style id="route_n">\n<IconStyle>\n<Icon><href>http://earth.google.com/images/kml-icons/track-directional/track-none.png</href></Icon>\n</IconStyle>\n</Style>\n<Style id="route_h">\n<IconStyle>\n<scale>1.2</scale>\n<Icon><href>http://earth.google.com/images/kml-icons/track-directional/track-none.png</href></Icon>\n</IconStyle>\n</Style>\n';
  391. var temp="";
  392. var roadName=[];
  393. var time=[];
  394. var speed=[];
  395. var traitementlonlat=[];
  396. temp = (WMEExpT.Trajets.objects[id].fromLocation != null) ? String(WMEExpT.Trajets.objects[id].fromLocation.street)+', '+String(WMEExpT.Trajets.objects[id].fromLocation.city)+', '+String(WMEExpT.Trajets.objects[id].fromLocation.country) : String(I18n.translations[I18n.locale].segment.address.none);
  397. roadName.push(temp);
  398. temp = (WMEExpT.Trajets.objects[id].toLocation != null) ? String(WMEExpT.Trajets.objects[id].toLocation.street)+', '+String(WMEExpT.Trajets.objects[id].toLocation.city)+', '+String(WMEExpT.Trajets.objects[id].toLocation.country) : String(I18n.translations[I18n.locale].segment.address.none);
  399. roadName.push(temp);
  400. log('roadName', roadName );
  401. log(roadName[0] +' vers '+ roadName[1]);
  402. var nameIti = '<Folder><name>'+ roadName[0] +' vers '+ roadName[1] +'</name>\n';
  403. //log('traitementlonlat',traitementlonlat);
  404. traitementlonlat=WMEExpT.Trajets.objects[id].driveParts;
  405. var lonlat=[];
  406. var itiWay = '<Folder>\n<name>Points</name>\n';
  407. for (i=0; i < traitementlonlat.length; i++){
  408. for (j=0; j < traitementlonlat[i].geometry.coordinates.length; j++){
  409. if (i==0 & j==0){
  410. lonlat.push(traitementlonlat[i].geometry.coordinates[j]);
  411. itiWay += '<Placemark>\n<name>'+ roadName[0] +'</name>\n<snippet></snippet>\n<description><![CDATA[<table>\n<tr><td>Longitude: '+lonlat[0][0]+' </td></tr>\n<tr><td>Latitude: '+ lonlat[0][1] +' </td></tr>\n<tr><td>'+ lang[2] +': '+ WMEExpT.Trajets.list[id].startTime +'</td></tr>\n</table>]]></description>\n<LookAt>\n<longitude>'+lonlat[0][0]+'</longitude>\n<latitude>'+ lonlat[0][1] +'</latitude>\n<altitude>0</altitude>\n<heading>0</heading>\n<tilt>66</tilt>\n<range>0</range>\n</LookAt>\n<TimeStamp><when>'+WMEExpT.Trajets.list[id].startDate+'T'+WMEExpT.Trajets.list[id].startTime+'Z</when></TimeStamp>\n\n<styleUrl>#route</styleUrl>\n<Point>\n<coordinates>'+lonlat[0][0] +','+ lonlat[0][1] +',0</coordinates>\n</Point>\n</Placemark>\n';
  412. } else if (!((lonlat[lonlat.length-1][0] == traitementlonlat[i].geometry.coordinates[j][0]) && (lonlat[lonlat.length-1][1] == traitementlonlat[i].geometry.coordinates[j][1]))) {
  413. lonlat.push(traitementlonlat[i].geometry.coordinates[j]);
  414. if ((i==traitementlonlat.length-1) & (j==traitementlonlat[i].geometry.coordinates.length-1))
  415. itiWay += '<Placemark>\n<name>'+ roadName[1] +'</name>\n<snippet></snippet>\n<description><![CDATA[<table>\n<tr><td>Longitude: '+lonlat[lonlat.length-1][0]+' </td></tr>\n<tr><td>Latitude: '+ lonlat[lonlat.length-1][1] +' </td></tr>\n<tr><td>'+ lang[2] +': '+ WMEExpT.Trajets.list[id].endTime +'</td></tr>\n</table>]]></description>\n<LookAt>\n<longitude>'+lonlat[lonlat.length-1][0]+'</longitude>\n<latitude>'+ lonlat[lonlat.length-1][1] +'</latitude>\n<altitude>0</altitude>\n<heading>0</heading>\n<tilt>66</tilt>\n<range>0</range>\n</LookAt>\n<TimeStamp><when>'+WMEExpT.Trajets.list[id].endDate+'T'+WMEExpT.Trajets.list[id].endTime+'Z</when></TimeStamp>\n\n<styleUrl>#route</styleUrl>\n<Point>\n<coordinates>'+lonlat[lonlat.length-1][0] +','+ lonlat[lonlat.length-1][1] +',0</coordinates>\n</Point>\n</Placemark>\n';
  416. else
  417. itiWay += '<Placemark>\n<name></name>\n<snippet></snippet>\n<description><![CDATA[<table>\n<tr><td>Longitude: '+lonlat[lonlat.length-1][0]+' </td></tr>\n<tr><td>Latitude: '+ lonlat[lonlat.length-1][1] +' </td></tr>\n</table>]]></description>\n<LookAt>\n<longitude>'+lonlat[lonlat.length-1][0]+'</longitude>\n<latitude>'+ lonlat[lonlat.length-1][1] +'</latitude>\n<altitude>0</altitude>\n<heading>0</heading>\n<tilt>66</tilt>\n<range>0</range>\n</LookAt>\n<styleUrl>#route</styleUrl>\n<Point>\n<coordinates>'+lonlat[lonlat.length-1][0] +','+ lonlat[lonlat.length-1][1] +',0</coordinates>\n</Point>\n</Placemark>\n';
  418. }
  419. }
  420. }
  421. itiWay += '</Folder>\n';
  422. var lonlatText = '<Placemark>\n<name>Path</name>\n<styleUrl>#lineStyle</styleUrl>\n<LineString>\n<tessellate>1</tessellate>\n<coordinates>';
  423. log('lonlat',lonlat);
  424. for (i=0; i<lonlat.length;i++){
  425. lonlatText += lonlat[i][0] +','+ lonlat[i][1] +',0 ';
  426. }
  427. lonlatText += '</coordinates>\n</LineString>\n</Placemark>\n</Folder>\n';
  428. var end = '</Document>\n</kml>';
  429. WMEExpT.Trajets.objects[id].kml = entete + nameIti + itiWay + lonlatText + end;
  430. //WMEExpT.Trajets.objects[id].kml = entete + nameIti + lonlatText + end;
  431. log('WMEExpT.Trajets.objects[id].kml',WMEExpT.Trajets.objects[id].kml);
  432. getId('exportTrajet').setAttribute('download', userName + " - " + WMEExpT.Trajets.list[id].text+ '.kml');
  433. getId('exportTrajet').href='data:Application/octet-stream,' + encodeURIComponent(WMEExpT.Trajets.objects[id].kml);
  434. }
  435. /* begin running the code! */
  436. WMEExpT_bootstrap();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址