Live User View Overlay Colors backported RZ

Shows LiveUser current view

当前为 2015-12-10 提交的版本,查看 最新版本

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