Live User View Overlay Colors backported RZ

Shows LiveUser current view

  1. // ==UserScript==
  2. // @name Live User View Overlay Colors backported RZ
  3. // @namespace https://gf.qytechs.cn/en/users/5920-rickzabel
  4. // @description Shows LiveUser current view
  5. // @include https://www.waze.com/editor*
  6. // @include https://www.waze.com/*/editor*
  7. // @include https://editor-beta.waze.com/*
  8. // @version 0.0.8
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12.  
  13. //---------------------------------------------------------------------------------------
  14. function bootstrap_MapRaidOverlay()
  15. {
  16.  
  17. setTimeout(InitMapRaidOverlay, 1000);
  18.  
  19. //W.model.liveUsers.users._events.register("add", null, newLiveUser);
  20. mapLayers = new OpenLayers.Layer.Vector("Live User View Overlay", {
  21. displayInLayerSwitcher: true,
  22. uniqueName: "__LiveUserViewOverlay"
  23. });
  24. W.map.addLayer(mapLayers);
  25. mapLayers.setVisibility(true);
  26. }
  27.  
  28. function AddRaidPolygon(raidLayer,groupPoints,groupColor,groupNumber, editing){
  29.  
  30. var mro_Map = W.map;
  31. var mro_OL = OpenLayers;
  32. var raidGroupLabel = "";
  33. var groupName = groupNumber;
  34.  
  35.  
  36.  
  37. //ranklock
  38. var EditingColor = groupColor;
  39. var thisUser = W.loginManager.user;
  40. var usrRank = thisUser.normalizedLevel;
  41. var thisUserID = thisUser.id;
  42.  
  43. if (usrRank >= 4 || thisUserID == "103267873") {
  44. if(editing === true){
  45. EditingColor = "#ff1aff";
  46. groupColor = "#ff1aff";
  47. }
  48. }
  49.  
  50. var style = {
  51. strokeColor: EditingColor,
  52. strokeOpacity: .8,
  53. strokeWidth: 3,
  54. fillColor: groupColor,
  55. fillOpacity: 0.15,
  56. label: raidGroupLabel,
  57. labelOutlineColor: "black",
  58. labelOutlineWidth: 3,
  59. fontSize: 14,
  60. fontColor: EditingColor,
  61. fontOpacity: .85,
  62. fontWeight: "bold"
  63. };
  64.  
  65.  
  66.  
  67. var attributes = {
  68. name: groupName
  69. };
  70.  
  71. var pnt= [];
  72. for(i=0;i<groupPoints.length;i++){
  73. convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon,groupPoints[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), mro_Map.getProjectionObject());
  74. //console.log('MapRaid: ' + JSON.stringify(groupPoints[i]) + ', ' + groupPoints[i].lon + ', ' + groupPoints[i].lat);
  75. pnt.push(convPoint);
  76. }
  77.  
  78. var ring = new mro_OL.Geometry.LinearRing(pnt);
  79. var polygon = new mro_OL.Geometry.Polygon([ring]);
  80.  
  81. var feature = new mro_OL.Feature.Vector(polygon,attributes,style);
  82. raidLayer.addFeatures([feature]);
  83.  
  84. }
  85.  
  86. function CurrentRaidLocation(raid_mapLayer){
  87. var mro_Map = W.map;
  88.  
  89. for(i=0;i<raid_mapLayer.features.length;i++){
  90. var raidMapCenter = mro_Map.getCenter();
  91. var raidCenterPoint = new OpenLayers.Geometry.Point(raidMapCenter.lon,raidMapCenter.lat);
  92. var raidCenterCheck = raid_mapLayer.features[i].geometry.components[0].containsPoint(raidCenterPoint);
  93. //console.log('MapRaid: ' + raid_mapLayer.features[i].attributes.number + ': ' + raidCenterCheck);
  94. if(raidCenterCheck === true){
  95. var raidLocationLabel = 'Raid Group ' + raid_mapLayer.features[i].attributes.number + ' - ' + $('.WazeControlLocationInfo').text();
  96. setTimeout(function(){$('.WazeControlLocationInfo').text(raidLocationLabel)},200);
  97. }
  98. }
  99. }
  100.  
  101.  
  102. function InitMapRaidOverlay(){
  103.  
  104. var mro_Map = W.map;
  105. var mro_OL = OpenLayers;
  106.  
  107. if (mro_Map == null) return;
  108. if (mro_OL == null) return;
  109.  
  110. mapLayers.removeAllFeatures();
  111.  
  112. for(var i=0;i<W.model.liveUsers.users.models.length;i++) {
  113. var name = W.model.liveUsers.users.models[i].attributes.name;
  114. var point = W.model.liveUsers.users.models[i].attributes.viewArea;
  115. var editing = W.model.liveUsers.users.models[i].attributes.editing;
  116.  
  117.  
  118. //point.left //lon
  119. //point.right
  120. //point.top //lat
  121. //point.bottom
  122.  
  123. var rank = W.model.liveUsers.users.models[i].attributes.rank;
  124. var rankAray = ['#11911D',
  125. '#119DB3',
  126. '#FF8F1A',
  127. '#744112',
  128. '#6973B7',
  129. '#AE3341'];
  130. var color = rankAray[rank];
  131.  
  132. var viewPoints = [{lon:point.left,lat:point.top},{lon:point.left,lat:point.bottom},{lon:point.right,lat:point.bottom},{lon:point.right,lat:point.top},{lon:point.left,lat:point.top}];
  133.  
  134. //AddRaidPolygon(mapLayers,viewPoints,"#F4EB37",name);
  135. AddRaidPolygon(mapLayers, viewPoints, color, name, editing);
  136. //console.info('############# userview addded');
  137. }
  138.  
  139. setTimeout(function(){InitMapRaidOverlay()},1000);
  140. //mro_Map.events.register("moveend", W.map, function(){InitMapRaidOverlay()});
  141. //mro_Map.events.register("zoomend", W.map, function(){InitMapRaidOverlay()});
  142. //W.model.liveUsers.users.models[0]._events.register("change:showLayer", null, function(){console.info('change:showLayer');});
  143.  
  144. }
  145.  
  146. function newLiveUser() {
  147. //console.info('########### add');
  148. //console.info(this);
  149. for(var i=0;i<this.models.length;i++) {
  150. var userObj = this.models[i];
  151. userObj._events.register("change:center", null, function(){console.info('change:center');});
  152. userObj._events.register("move", null, function(){console.info('move');});
  153. userObj._events.register("moved", null, function(){console.info('move');});
  154. }
  155. }
  156.  
  157. //bootstrap_MapRaidOverlay();
  158. setTimeout(bootstrap_MapRaidOverlay, 3000);

QingJ © 2025

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