WME Bookmarks

Bookmark your places on the map

目前为 2014-08-26 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name WME Bookmarks
  3. // @version 0.16
  4. // @description Bookmark your places on the map
  5. // @namespace Sebiseba
  6. // @include https://www.waze.com/editor/*
  7. // @include https://www.waze.com/*/editor/*
  8. // @include https://editor-beta.waze.com/*
  9. // @icon data:image/png;base64,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
  10. // @URL https://gf.qytechs.cn/scripts/4515-wme-bookmarks
  11. // @grant none
  12. // @copyright Sebiseba 2014
  13. // ==/UserScript==
  14.  
  15. // icon from ©iconza (https://www.iconfinder.com/iconsets/iconza)
  16.  
  17. var WMEF_Version = GM_info.script.version;
  18. var icon_signet ="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";
  19. var icon_addlink ="iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAB0UlEQVR4XqVVgW3CQAz8RB0g3YBOUBALlAlKJ0iYgHQCYALoBDQThA2SBRB0AtiAbEDvpUN52WBQOOn0L7+Vi517J3IdMBwOEyw5mII9hmvwZ7vdbtwVRB1E+ljKVkDhF2ITGYw7iFRCRCJD3lgJdRBJgvACfAXfwH0Qn0qhlydEJmjRL/cNcr6wHnj2oSu6L+LbNOMbN0qE4JnE40J44JEt+sbet2lAEYk82B+VkGVhcA2eENh5cj/1ZyI3Y9UXFErIcNcOzMR3SRirhMhaVLMyhEwLN+QF/VBE5H2htep7RffcxW+z4nlO627AvysiI+TS5krItjD4znYthODSFNFC9j3B2fmKhRNbRCOmg0rjMoYPSETeUYkYNp6D54DZLZsHOSfGEuZkYHU55z6TQocgYX7T7lw9xUvsKKDIs4T2bm2s/E8LB5d16cmx5FHR6rdAgwGibT0pIs5PQXW5rMARMg5mfnrXwbQtOYUbzq6Z4a5P9zjSiD+p0s7TFg4rQDwS+Son5j9eTWPbwjbMycDKUnAcCBTgSs4u5ldty9vKZCVE/eIIVgY+jEIImbmRewL+ntDCFvYoYhC75zAC95YIc1z3ivSlToNW1mAR/vL/Acg9BLVmh/IBAAAAAElFTkSuQmCC";
  20. var icon_delete ="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3ggaDwcglEfa9wAAAftJREFUOMvNks1qFEEUhb+q7uqedNMdTJwJdjBRdBYG/4MEsgiGBAIuBBF8D8GXcO/LuHAjQkQJoglOFiN0YH4MKBomM3a6a6rcTOvEyQNYUHA5de5368CF/+Z0CABoU6m3qdRL7a/u19v49XEvgBiHdJ0okUo1AExRXLsw7HUAuipOpF9p4EjMcf+PDiDLooVXla67X1tdiWqrK5FwZKOFWmghF6TyGrUnj6PaveVIuu5+C686ARDIEPDRQ0x/IKp3bsfKD7dVOLtdfbAVm88NQZ4D+CPvZISOCNek6748f+tGBUAIgaxfZdhsgrF8+7ibGa23Ett/PQHoEJAwoE1l2VH+q9mb16etMWAtwnH4/mnvaFicbMyT7ZTeUxESBnQImCfbkWHYtkWBLQqs1litAdr/Np8ClA+HYbU7u762NMwyjLVYaxme5Exfubz01Y275aCJCCl4U9HcQe3Rw7nB23cCY+ilBz8sEF9aPAcglbJHzeZhURwvXsTkp36g8BLhyJlf73cQ1tpemmZG5xtW5xu9NM2EENZqDZYZiZ+cuY2pCO533TjrunG2J4LN0QC5K4LNUv8igvXxnjKCkDBlIHqBt55h1TOKD4A38uTPUXc9hH5K/kbAwMJPoBBjIAVEgA+4o+YyogX02O0DA0CLM5KIs5ZsBJmofwPkNtFJWyXQAQAAAABJRU5ErkJggg==";
  21. var icon_comment ="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3ggaDwYCWDyqUgAAAV5JREFUOMvFkrtKA2EQhb/5s7kZxcYLgtraWIhaqO9g4yNIHivY2foUAUWCoo2doEYEQYVNdpPN7s7YbMLGy1r6w4GBM3Nm5vwD//1kHKwen2/Xq16nWilJUUEUpzYYJrvdk/0rAG9M1KteZ39zRcLY4QokwiiWu/vXDuCmBKqVkvRHgh8mfAQJv2mICIZMaC9POoG33ggnYH9v/V3AzNBUKdzhi7Q3zRlqClrgughm9l3ALIMqVjBBvpixkwDBIG6/fgSTpDxUFVXFzIiiEWmatqccWW9eiIjU0lTPRFjINVDn3MbsbGNeVQmC8M7MHkTkCBg+tvZM/rq0tebFjhNpNxozNd/vbXVPDm5+XCGbxgGlzJsKUHlq7V2ng/fDXq9vJIN6ljNpXMoV14AlYPkLVvzbU99rLF4Ony81ernSrC4GVHICZWAuEypnU7jc5yc5BEAIJFJwalJwQZP4E5TjnzLm35jJAAAAAElFTkSuQmCC";
  22. var icon_nocomment ="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3ggaDwY14IEPXQAAAW1JREFUOMvFk71KA0EUhb872SwrKhIUxdLK1r9afQEbHyHqW6mtna21kkqCP4WKpYWNAYUYN+tm514LN3FXklg6cODCnXvmnJkz8N9L+sXh4flaFFWbYRjIuIE0zSxJehv7+1tXAEG/EUXV5urqkoAiMpxDBOI4lfv75ybgSgRhGIiZkiQp3W7KCA5EBOfcoBv8dtTpJDgnmI0z8tMsEZgZ3iuqo69BhBJ5iUBVyTIdKb9vwWyIArNveK8ULJaFG4iUvbl+EcefjVbrHTNQtRKyTPFeMTM6nU96Pd8o5eD4+EJEJPLen4LMFV0FgVuenZ2a8V55ff14MLMn52TXjKRe3zT5K2lHRxfrlYo0arXJ6OWlvXJwsH071EKuxgGV/G5CINzb27xut992Wq13S9PuRL5ncHClMBwB88DCLyyenZ20a7W5y7u7pj4+3mg+1wMGDy5AFZjOiaq5CldITlbABxADmYz5YDIyfoX6C0s3pa+Fu7UfAAAAAElFTkSuQmCC";
  23. var icon_valid ="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";
  24.  
  25. /* helper function */
  26.  
  27. function getId(node) {
  28. return document.getElementById(node);
  29. }
  30.  
  31. function getElementsByClassName(classname, node) {
  32. node || (node = document.getElementsByTagName("body")[0]);
  33. for (var a = [], re = new RegExp("\\b" + classname + "\\b"), els = node.getElementsByTagName("*"), i = 0, j = els.length;i < j;i++) {
  34. re.test(els[i].className) && a.push(els[i]);
  35. }
  36. return a;
  37. }
  38. function getFunctionWithArgs(func, args) {
  39. return (
  40. function () {
  41. var json_args = JSON.stringify(args);
  42. return function() {
  43. var args = JSON.parse(json_args);
  44. func.apply(this, args);
  45. }
  46. }
  47. )();
  48. }
  49.  
  50. /* Bootstrap */
  51.  
  52. function BKM_bootstrap() {
  53. if (typeof unsafeWindow === "undefined") {
  54. unsafeWindow = ( function () {
  55. var dummyElem = document.createElement('p');
  56. dummyElem.setAttribute('onclick', 'return window;');
  57. return dummyElem.onclick();
  58. }) ();
  59. }
  60.  
  61. /* begin running the code! */
  62. console.log("WME Bookmarks: " + WMEF_Version + " starting");
  63. BKMinit();
  64. }
  65.  
  66. /* Verif */
  67.  
  68. function BKMinit(){
  69. // Verify localStorage
  70. if ("undefined" === typeof localStorage.WMEBookmarks) {
  71. localStorage.setItem('WMEBookmarks', "");
  72. }
  73. // Waze object needed
  74. BKMWaze = unsafeWindow.Waze;
  75. if(typeof(BKMWaze) === 'undefined'){
  76. console.error("WME Bookmarks - BKMWaze : NOK");
  77. window.setTimeout(BKMinit, 500);
  78. return;
  79. }
  80. BKMlocation = BKMWaze.location;
  81. if(typeof(BKMlocation) == 'undefined'){
  82. console.error("WME Bookmarks - BKMlocation : NOK");
  83. window.setTimeout(BKMinit, 500);
  84. return;
  85. }
  86. BKMcountry = BKMWaze.model.countries.top;
  87. if(typeof(BKMcountry) == 'undefined'){
  88. //console.error("WME Bookmarks - BKMcountry DOM : NOK");
  89. window.setTimeout(BKMinit, 500);
  90. return;
  91. }
  92. // Traductions
  93. BKMI18n = unsafeWindow.I18n;
  94. if(typeof(BKMI18n) === 'undefined'){
  95. console.error("WME Bookmarks - BKMI18n : NOK");
  96. setTimeout(BKMinit, 500);
  97. return;
  98. }
  99. // Waze GUI needed
  100. BKMhandle = getId("user-info");
  101. if(typeof(BKMhandle) === 'undefined'){
  102. console.error("WME Bookmarks - BKMhandle : NOK");
  103. setTimeout(BKMinit, 500);
  104. return;
  105. }
  106. BKMhandleClass = getElementsByClassName("nav-tabs", BKMhandle)[0];
  107. if(typeof(BKMhandleClass) === 'undefined'){
  108. //console.error("WME Bookmarks - BKMhandleClass : NOK");
  109. setTimeout(BKMinit, 500);
  110. return;
  111. }
  112. BKMhandleClass2 = getElementsByClassName("tab-content", BKMhandle)[0];
  113. if(typeof(BKMhandleClass2) === 'undefined'){
  114. //console.error("WME Bookmarks - BKMhandleClass2 : NOK");
  115. setTimeout(BKMinit, 500);
  116. return;
  117. }
  118. // Translation
  119. var BKMLang = BKMI18n.locale;
  120. if (BKMLang == "fr") { lang = new Array("Favoris","Noms","Nom","Supprimer ","Commentaire","Sans Nom"); }
  121. else { lang = new Array("Bookmarks","Names","Name","Delete ","Comment","Unnamed"); }
  122.  
  123. // Then running
  124. console.log("WME Bookmarks - Ready to start");
  125. BKMcountryActive = BKMWaze.model.countries.top.name;
  126. BKMCheckCountry();
  127. BKMcss();
  128. BKMhtml();
  129. }
  130.  
  131. function BKMhtml() {
  132. //Create content in favorite's tab
  133. var newtab = document.createElement('li');
  134. newtab.innerHTML = "<a href='#sidepanel-favorites' data-toggle='tab'><img style='height:16px;' title='"+ lang[0] +"' src='data:image/png;base64,"+ icon_signet +"' /> "+ lang[0] +"</a>";
  135. BKMhandleClass.appendChild(newtab);
  136. var addon = document.createElement('section');
  137. addon.id = "favorites-addon";
  138. // Bookmarks list
  139. var content="<div style='float:left;'><b><a href='https://gf.qytechs.cn/scripts/4515-wme-bookmarks' target='_blank'><u>WME Bookmarks</u></a></b> " + WMEF_Version + "</div>";
  140. content += "<div id='addBKMButton' style='float:right; height:34px;'></div>";
  141. content += "<div class='divEntete'><div id='divEnteteNom'><b>"+ lang[1] +"</b></div><div id ='divEntetePays'>"+ BKMcountryActive +"</div></div>";
  142. // Bookmarks container
  143. content += "<div id='BKMcontent'></div>";
  144. // Comment container
  145. content += "<div id='BKMcomment'></div>";
  146. // Editing infos
  147. content += "<div id='BKMEdit'></div>";
  148. addon.innerHTML = content;
  149. addon.id = "sidepanel-favorites";
  150. addon.className = "tab-pane";
  151. BKMhandleClass2.appendChild(addon);
  152.  
  153. console.info("WME Bookmarks HTML loaded");
  154. BKMLoad();
  155. BKMTestLoad();
  156. }
  157.  
  158. function BKMInsertPermalink() {
  159. //Get link
  160. var link="";
  161. var a = getElementsByClassName("WazeControlPermalink")[0].innerHTML;
  162. var b = a.substring(a.indexOf("https")).split('?');
  163. var c = b[1].split(/"/g);
  164. var d = c[0].split('&amp;');
  165.  
  166. for (i=0; d[i]; i++) {
  167. if (d[i].substring(0,3)=="lon" || d[i].substring(0,3)=="lat") { link = link + d[i].substring(4) +"&"; }
  168. if (d[i].substring(0,4)=="zoom") { link = link + d[i].substring(5,6) +"&"; }
  169. }
  170. link = link.substring(0,link.length-1);
  171.  
  172. //Get name
  173. var town = getElementsByClassName("WazeControlLocationInfo")[0];
  174. var name = town.innerHTML.split(",");
  175. name = name[0].substring(6);
  176. if (!name) { name = lang[5]; }
  177. //console.info("WME Bookmarks Add link: "+name+"/"+BKMcountry);
  178. //Add in HTML table
  179. var id = new Date().getTime();
  180. BKMTableHTML(name,link,"");
  181. //Add in memory
  182. var newbkm = BKMcountryActive +"|"+ name +"|"+ link +"|,";
  183. var tosave = localStorage.getItem("WMEBookmarks") + newbkm;
  184. localStorage.setItem("WMEBookmarks", tosave);
  185. //console.info("WME Bookmarks Save Memory: "+ tosave);
  186. }
  187.  
  188. function BKMLoad() {
  189. var listfav= localStorage.getItem("WMEBookmarks");
  190. if (listfav) {
  191. var a = listfav.split(',');
  192. for (var i = 0; a[i]; i++) {
  193. var b = a[i].split('|');
  194. if (b[0] == BKMcountryActive) { BKMTableHTML(b[1],b[2],b[3]); }
  195. }
  196. console.info("WME Bookmarks all ID loaded, script ready");
  197. } else {
  198. console.info("WME Bookmarks no ID to load, script ready");
  199. }
  200. }
  201.  
  202. function BKMTableHTML(name,link,comment) {
  203. var div = document.createElement('div');
  204. div.className="divBKM";
  205. var divname = document.createElement('div');
  206. divname.className="divName";
  207. var divnamea = document.createElement('a');
  208. divnamea.innerHTML="<b>"+name.substring(0,36)+"</b>";
  209. divnamea.href = "#";
  210. divnamea.onclick = getFunctionWithArgs(BKMJump, [link]);
  211. divname.appendChild(divnamea);
  212. div.appendChild(divname);
  213. var divsuppr = document.createElement('div');
  214. divsuppr.className="divSuppr";
  215.  
  216. var divsuppra = document.createElement('a');
  217. divsuppra.innerHTML="<img style='width: 16px;' title='Suppr' src='data:image/png;base64," +icon_delete +"' />";
  218. divsuppra.href = "#";
  219. divsuppra.onclick = getFunctionWithArgs(BKMSuppr, [name,link]);
  220. divsuppr.appendChild(divsuppra);
  221. div.appendChild(divsuppr);
  222. var divcomment = document.createElement('div');
  223. divcomment.className="divSuppr";
  224.  
  225. var divcommenta = document.createElement('a');
  226. if (comment == "") { divcommenta.innerHTML="<img style='width: 16px;' title='+' src='data:image/png;base64," +icon_nocomment +"' />"; }
  227. else { divcommenta.innerHTML="<img style='width: 16px;' title='"+comment.replace(/\'/g,'&#39;').replace(/"/g,'&quot;')+"' src='data:image/png;base64," +icon_comment +"' />"; }
  228. divcommenta.href = "#";
  229. divcommenta.onclick = getFunctionWithArgs(BKMAddEdit, [name,link,comment]);
  230. divcommenta.onmouseover = getFunctionWithArgs(BKMTooltip, [comment]);
  231. divcommenta.onmouseout = (function(){ getId('BKMcomment').innerHTML=""; });
  232. divcomment.appendChild(divcommenta);
  233. div.appendChild(divcomment);
  234.  
  235. getId('BKMcontent').appendChild(div);
  236. }
  237.  
  238. function BKMAddEdit(name,link,comment) {
  239. getId('BKMEdit').style.display = "block";
  240. var content1 = "<div id='divEditTitre'><div id='divEdit'>"+ lang[2] +"</div><input type='text' id='divEditName' value='"+name.replace(/\'/g,'&#39;').replace(/"/g,'&quot;')+"' />";
  241. content1 += "<div class='divSuppr'><a href='#'><img id='EditValid' style='width: 16px; margin-top:3px;' title='Valid' src='data:image/png;base64," +icon_valid +"' /></a></div>";
  242. content1 += "</div><div><div id='divComm'>"+ lang[4] +"</div><textarea id='divCommEdit'>";
  243. if (comment == "") { content1 += ""; } else { content1 += comment; }
  244. content1 += "</textarea></div>";
  245. getId('BKMEdit').innerHTML=content1;
  246. getId('EditValid').onclick = getFunctionWithArgs(BKMEditLink, [link]);
  247. }
  248.  
  249. function BKMcss() {
  250. var cssElt = document.createElement("style");
  251. cssElt.type = "text/css";
  252. var css = "img { vertical-align:top;}";
  253. css += ".divEntete { clear:both; line-height:22px; height:26px; padding-left:5px; border:2px solid #3d3d3d; background-color:#BEDCE5;}";
  254. css += "#divEnteteNom { float:left; text-align:left; border-right:2px solid #3d3d3d; width:80px; }";
  255. css += "#divEntetePays { float:right; text-align:right; padding-right:10px; font-weight:bold; }";
  256. css += ".divBKM { clear:both; line-height:16px; height: 24px; padding:3px; border: 1px solid #3d3d3d; border-top:0; }";
  257. css += ".divName { float:left; text-align:left; padding-left:5px; width:230px; }";
  258. css += ".divSuppr { width:20px; float:right; }";
  259. css += "#BKMEdit { display:none; height:135px; margin-top:10px; border:2px solid #3d3d3d; }";
  260. css += "#divEditTitre { line-height:24px; height:24px; border-bottom:1px solid #3d3d3d; }";
  261. css += "#divEdit { float:left; width: 50px; height:23px; text-align:left; padding-left:5px; font-weight:bold; background-color:#BEDCE5; }";
  262. css += "#divEditName { float:left; width:195px; height:23px; padding:0; padding-left:5px; border:0; margin:0; }";
  263. css += "#divComm { float:left; width:100%; line-height:24px; height:23px; padding-left:5px; text-align:left; font-weight:bold; background-color:#BEDCE5; border-bottom:1px solid #3d3d3d; }";
  264. css += "#divCommEdit { float:left; width:275px; height:81px; border:0; margin:0; padding:2px; resize:none; }";
  265. css += "#divComment { margin-top:10px; padding-left:20px; background: url(data:image/png;base64," +icon_comment +") no-repeat left top; border:2px solid #3d3d3d; }";
  266. cssElt.innerHTML = css;
  267. document.body.appendChild(cssElt);
  268. console.info("WME Bookmarks CSS loaded");
  269. }
  270.  
  271. function BKMSuppr(name,id) {
  272. var answer = window.confirm(lang[3]+name+" ?");
  273. if (answer){
  274. //console.info("WME Bookmarks Suppr: "+id);
  275. var listfav= localStorage.getItem("WMEBookmarks");
  276. var a = listfav.split(','), tosave="";
  277. for (var i = 0; a[i]; i++) {
  278. var b = a[i].indexOf(id);
  279. if (b == -1) { tosave = tosave + a[i] + ","; }
  280. }
  281. localStorage.setItem("WMEBookmarks", tosave);
  282. getId('BKMcontent').innerHTML="";
  283. BKMLoad();
  284. }
  285. }
  286.  
  287. function BKMEditLink(link) {
  288.  
  289. var newname = getId('divEditName').value;
  290. var newcomment = getId('divCommEdit').value.replace(/,/g,'&#044;');
  291. getId('BKMEdit').style.display = "none";
  292. // console.info("WME Bookmarks New Values: "+newname+" "+newcomment);
  293. var listfav= localStorage.getItem("WMEBookmarks");
  294. console.info("WME Bookmarks localStorage: "+ listfav);
  295. var a = listfav.split(','), tosave="";
  296. for (var i = 0; a[i]; i++) {
  297. var b = a[i].indexOf(link);
  298. if (b == -1) { tosave = tosave + a[i] + ","; }
  299. else {
  300. var c = listfav.split('|');
  301. tosave = tosave + BKMcountryActive +"|"+ newname +"|"+ link +"|"+ newcomment +",";
  302. }
  303. }
  304. localStorage.setItem("WMEBookmarks", tosave);
  305. getId('BKMcontent').innerHTML="";
  306. BKMLoad();
  307. }
  308.  
  309. function BKMTooltip(comment) {
  310. if (comment) {
  311. getId('BKMcomment').innerHTML="<div id='divComment'>"+comment+"</div>";
  312. }
  313. }
  314. function BKMJump(xy) {
  315. var coord=xy.split('&');
  316. //console.log("WME Bookmarks Move to: "+ coord[0] +" / "+ coord[1] +" / Zoom: "+ coord[2]);
  317. var xy = OpenLayers.Layer.SphericalMercator.forwardMercator(parseFloat(coord[0]), parseFloat(coord[1]));
  318. unsafeWindow.Waze.map.setCenter(xy);
  319. unsafeWindow.Waze.map.zoomTo(coord[2]);
  320. BKMTestLoad();
  321. }
  322.  
  323. function BKMTestLoad() {
  324. var loaded = Waze.map.controls[5].pending;
  325. //console.error("WME Bookmarks Scan Map Loaded : "+ loaded.length);
  326. if(loaded.length != 0){
  327. getId('addBKMButton').innerHTML="";
  328. setTimeout(BKMTestLoad, 500);
  329. return;
  330. }
  331. getId('addBKMButton').innerHTML="<a href='#'><img style='height:24px; border:1px solid #93C4D3; padding:3px; margin-bottom:10px;' id='AddIcon' title='Add' src='data:image/png;base64," + icon_addlink + "' /></a>";
  332. getId('AddIcon').onclick = BKMInsertPermalink;
  333. setTimeout(BKMTestLoad, 2000);
  334. }
  335.  
  336. function BKMCheckCountry() {
  337. var BKMcountryActive2 = BKMWaze.model.countries.top.name;
  338. if (BKMcountryActive != BKMcountryActive2) {
  339. console.log("WME Bookmarks Country changed : "+ BKMcountryActive+" / "+BKMcountryActive2);
  340. BKMcountryActive = BKMcountryActive2;
  341. getId('BKMcontent').innerHTML="";
  342. getId('divEntetePays').innerHTML=BKMcountryActive;
  343. BKMLoad();
  344. }
  345. setTimeout(BKMCheckCountry, 2000);
  346. }
  347. /* begin running the code! */
  348.  
  349. BKM_bootstrap();

QingJ © 2025

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