gis.map.drawboat.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. gis.script.drawFillMarker = function (layer,ship){
  2. if(layer&&ship){
  3. //x:LON;y:LAT;c:COURSE;l:LENGTH;w:WIDTH;s:SPEED;
  4. var x = ship.LON||parseFloat(ship.lon);
  5. var y = ship.LAT||parseFloat(ship.lat);
  6. var c = ship.COURSE||parseFloat(ship.course)||90.0;
  7. var l = ship.LENGTH||parseFloat(ship.length);
  8. var w = ship.WIDTH||parseFloat(ship.width);
  9. var s = ship.SPEED||parseFloat(ship.speed);
  10. //先以中心点为原点
  11. var jd = parseInt(c); //后期考虑转换异常,异常方向取0度
  12. jd = -(jd/180) * Math.PI;//弧度 顺时针旋转
  13. //20公里:1厘米比例尺
  14. var c_x=0.000075;//船舶单位长度,按照长、宽系数同比例缩放,150米长度
  15. //if(w>1)
  16. //c_x=c_x*w/100;
  17. var c_y=0.00015;//船舶单位长度,按照长、宽系数同比例缩放,300米长度
  18. //if(l>1)
  19. //c_y=c_y*l/100;
  20. var _o_x=0;//船舶顶点
  21. var _o_y=c_y*2;
  22. var v_o_x=x+_o_x*Math.cos(jd)-_o_y*Math.sin(jd);
  23. var v_o_y=y+_o_x*Math.sin(jd)+_o_y*Math.cos(jd);
  24. var _1_x=c_x;//船舶角点1
  25. var _1_y=c_y;
  26. var v_1_x=x+_1_x*Math.cos(jd)-_1_y*Math.sin(jd);
  27. var v_1_y=y+_1_x*Math.sin(jd)+_1_y*Math.cos(jd);
  28. var _2_x=c_x;//船舶角点2
  29. var _2_y=-c_y;
  30. var v_2_x=x+_2_x*Math.cos(jd)-_2_y*Math.sin(jd);
  31. var v_2_y=y+_2_x*Math.sin(jd)+_2_y*Math.cos(jd);
  32. var _3_x=-c_x;//船舶角点3
  33. var _3_y=-c_y;
  34. var v_3_x=x+_3_x*Math.cos(jd)-_3_y*Math.sin(jd);
  35. var v_3_y=y+_3_x*Math.sin(jd)+_3_y*Math.cos(jd);
  36. var _4_x=-c_x;//船舶角点4
  37. var _4_y=c_y;
  38. var v_4_x=x+_4_x*Math.cos(jd)-_4_y*Math.sin(jd);
  39. var v_4_y=y+_4_x*Math.sin(jd)+_4_y*Math.cos(jd);
  40. var points =[new SuperMap.Geometry.Point(v_o_x,v_o_y),
  41. new SuperMap.Geometry.Point(v_1_x,v_1_y),
  42. new SuperMap.Geometry.Point(v_2_x,v_2_y),
  43. new SuperMap.Geometry.Point(v_3_x,v_3_y),
  44. new SuperMap.Geometry.Point(v_4_x,v_4_y)];
  45. linearRings = new SuperMap.Geometry.LinearRing(points);
  46. region = new SuperMap.Geometry.Polygon([linearRings]);
  47. var pointFeature = new SuperMap.Feature.Vector(region);
  48. var colerStyle = shipColor(ship);
  49. /*
  50. pointFeature.style={
  51. fillColor:colerStyle,
  52. strokeColor:"yellow",
  53. pointRadius:7
  54. };
  55. */
  56. pointFeature.attributes.onSelectOpenPopkey="openPop_Boat";
  57. pointFeature.attributes.onID=ship.name;
  58. pointFeature.attributes.onMMSI=ship.mmsi;
  59. layer.addFeatures(pointFeature);
  60. }
  61. }
  62. /**
  63. * 返还船只颜色
  64. * */
  65. function shipColor(ship){
  66. if(this.currentState=="danger"){
  67. return getColorByDanger(ship);
  68. }else if(this.currentState=="shiptype"){
  69. return getColorByShipType(ship);
  70. }else if(this.currentState=="sailstate"){
  71. return getColorBySailState(ship);
  72. }
  73. //return '#ffffff' ;
  74. return '#0004FF' ;
  75. }
  76. function getColorByDanger(ship){
  77. var fc='#00FF00';//默认绿色
  78. if(ship.DANGER=="1")
  79. fc='#FF0000';//危险船舶显示红色
  80. return fc ;
  81. }
  82. function getColorByShipType(ship){
  83. var allShiptype = ship.SHIP_TYPE;
  84. var shiptype = allShiptype.charAt(0);
  85. if(shiptype=="8")
  86. return '#ff0012' ;
  87. if(shiptype=="7")
  88. return '#00FF00' ;
  89. if(shiptype=="3")
  90. return '#00FFFE';
  91. if(shiptype=="6")
  92. return '#0004FF' ;
  93. return '#C0C0C0' ;
  94. }
  95. function getColorBySailState(ship){
  96. if(ship.STATUS=="5")
  97. return '#FC010A';
  98. if(ship.STATUS=="1")
  99. return '#595E40';
  100. if(ship.STATUS=="0"||ship.STATUS=="8")
  101. return '#00FF00';
  102. if(ship.STATUS=="6")
  103. return '#F29554';
  104. //其它
  105. return '#C0C0C0' ;
  106. }
  107. gis.script.loadboatLayer2=function(layer,o){
  108. if(layer&&
  109. o&&o.length){
  110. for(var i=0;i<o.length;i++){
  111. var obj=o[i];
  112. var point= new SuperMap.Geometry.Point(obj.lon,obj.lat);
  113. point.arrt=obj;
  114. gis.script.cbpointInfo.push(point);
  115. var pointFeature = new SuperMap.Feature.Vector(point);
  116. pointFeature.style={
  117. fillColor:"red",
  118. strokeColor:"yellow",
  119. pointRadius:7
  120. };
  121. pointFeature.attributes.onSelectOpenPopkey="openPop_Boat";
  122. pointFeature.attributes.onID=obj.id;
  123. layer.addFeatures(pointFeature);
  124. /*
  125. var geoText = new SuperMap.Geometry.GeoText(obj.lon,obj.lat,"中华人民共和国");
  126. var geotextFeature = new SuperMap.Feature.Vector(geoText);
  127. layer.addFeatures(geotextFeature);
  128. */
  129. }
  130. //x:LON;y:LAT;c:COURSE;l:LENGTH;w:WIDTH;s:SPEED
  131. gis.script.drawFillMarker(layer,{DANGER:'1',LON:119.66,LAT:32.97,COURSE:'90',LENGTH:1,WIDTH:1,SPEED:0});
  132. // var points =[new SuperMap.Geometry.Point(119.66,32.97),
  133. // new SuperMap.Geometry.Point(119.56,32.97),
  134. // new SuperMap.Geometry.Point(119.56,32.87),
  135. // new SuperMap.Geometry.Point(119.66,32.87),
  136. // new SuperMap.Geometry.Point(119.76,32.92)
  137. // ],
  138. // linearRings = new SuperMap.Geometry.LinearRing(points),
  139. // region = new SuperMap.Geometry.Polygon([linearRings]);
  140. // gis.script.cbpointInfo.push(region);
  141. // var pointFeature = new SuperMap.Feature.Vector(region);
  142. // pointFeature.style={
  143. // fillColor:"blue",
  144. // strokeColor:"yellow",
  145. // pointRadius:7
  146. // };
  147. //
  148. // pointFeature.attributes.onSelectOpenPopkey="openPop_Boat";
  149. // pointFeature.attributes.onID='333';
  150. //
  151. // layer.addFeatures(pointFeature);
  152. }
  153. /*
  154. */
  155. }