Live User View Overlay Colors backported RZ

Shows LiveUser current view

当前为 2015-04-02 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Live User View Overlay Colors backported RZ
  3. // @namespace com.supermedic.liveuserviewoverlay
  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.2
  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.  
  35. }
  36.  
  37. function AddRaidPolygon(raidLayer,groupPoints,groupColor,groupNumber){
  38.  
  39. var mro_Map = unsafeWindow.Waze.map;
  40. var mro_OL = unsafeWindow.OpenLayers;
  41. var raidGroupLabel = groupNumber;
  42. var groupName = groupNumber;
  43.  
  44. var style = {
  45. strokeColor: "black",
  46. strokeOpacity: .8,
  47. strokeWidth: 3,
  48. fillColor: groupColor,
  49. fillOpacity: 0.15,
  50. label: raidGroupLabel,
  51. labelOutlineColor: "black",
  52. labelOutlineWidth: 3,
  53. fontSize: 14,
  54. fontColor: groupColor,
  55. fontOpacity: .85,
  56. fontWeight: "bold"
  57. };
  58.  
  59. var attributes = {
  60. name: groupName
  61. };
  62.  
  63. var pnt= [];
  64. for(i=0;i<groupPoints.length;i++){
  65. convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon,groupPoints[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), mro_Map.getProjectionObject());
  66. //console.log('MapRaid: ' + JSON.stringify(groupPoints[i]) + ', ' + groupPoints[i].lon + ', ' + groupPoints[i].lat);
  67. pnt.push(convPoint);
  68. }
  69.  
  70. var ring = new mro_OL.Geometry.LinearRing(pnt);
  71. var polygon = new mro_OL.Geometry.Polygon([ring]);
  72.  
  73. var feature = new mro_OL.Feature.Vector(polygon,attributes,style);
  74. raidLayer.addFeatures([feature]);
  75.  
  76. }
  77.  
  78. function CurrentRaidLocation(raid_mapLayer){
  79. var mro_Map = unsafeWindow.Waze.map;
  80.  
  81. for(i=0;i<raid_mapLayer.features.length;i++){
  82. var raidMapCenter = mro_Map.getCenter();
  83. var raidCenterPoint = new OpenLayers.Geometry.Point(raidMapCenter.lon,raidMapCenter.lat);
  84. var raidCenterCheck = raid_mapLayer.features[i].geometry.components[0].containsPoint(raidCenterPoint);
  85. //console.log('MapRaid: ' + raid_mapLayer.features[i].attributes.number + ': ' + raidCenterCheck);
  86. if(raidCenterCheck === true){
  87. var raidLocationLabel = 'Raid Group ' + raid_mapLayer.features[i].attributes.number + ' - ' + $('.WazeControlLocationInfo').text();
  88. setTimeout(function(){$('.WazeControlLocationInfo').text(raidLocationLabel)},200);
  89. }
  90. }
  91. }
  92.  
  93. unsafeWindow.mapLayers = new unsafeWindow.OpenLayers.Layer.Vector("Live User View Overlay", {
  94. displayInLayerSwitcher: true,
  95. uniqueName: "__LiveUserViewOverlay"
  96. });
  97. unsafeWindow.Waze.map.addLayer(unsafeWindow.mapLayers);
  98. unsafeWindow.mapLayers.setVisibility(true);
  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.  
  125. 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}];
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132. AddRaidPolygon(mapLayers,viewPoints,color,name);
  133. console.info('############# userview addded');
  134. }
  135.  
  136. setTimeout(function(){InitMapRaidOverlay()},1000);
  137. //mro_Map.events.register("moveend", Waze.map, function(){InitMapRaidOverlay()});
  138. //mro_Map.events.register("zoomend", Waze.map, function(){InitMapRaidOverlay()});
  139. //Waze.model.liveUsers.users.models[0]._events.register("change:showLayer", null, function(){console.info('change:showLayer');});
  140.  
  141. }
  142.  
  143. function newLiveUser() {
  144. console.info('########### add');
  145. console.info(this);
  146. for(var i=0;i<this.models.length;i++) {
  147. var userObj = this.models[i];
  148. userObj._events.register("change:center", null, function(){console.info('change:center');});
  149. userObj._events.register("move", null, function(){console.info('move');});
  150. userObj._events.register("moved", null, function(){console.info('move');});
  151. }
  152. }
  153.  
  154. bootstrap_MapRaidOverlay();