123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- gis.script.clickDrawFillMarker = function (treeNode){
- boatLayer.removeAllFeatures();
- gis.script.drawFillMarker(boatLayer,treeNode);
- }
- /*
- * 绘画船舶
- */
- gis.script.drawFillMarker = function (layer,ship){
-
- if(layer&&ship){
- //x:LON;y:LAT;c:COURSE;l:LENGTH;w:WIDTH;s:SPEED;
- var x = ship.LON||parseFloat(ship.lon);
- var y = ship.LAT||parseFloat(ship.lat);
- var c = ship.COURSE||parseFloat(ship.course)||90.0;
- var l = ship.LENGTH||parseFloat(ship.length);
- var w = ship.WIDTH||parseFloat(ship.width);
- var s = ship.SPEED||parseFloat(ship.speed);
- //先以中心点为原点
- var jd = parseInt(c); //后期考虑转换异常,异常方向取0度
- jd = -(jd/180) * Math.PI;//弧度 顺时针旋转
-
- //20公里:1厘米比例尺
- var c_x=0.000075;//船舶单位长度,按照长、宽系数同比例缩放,150米长度
- //if(w>1)
- //c_x=c_x*w/100;
- var c_y=0.00015;//船舶单位长度,按照长、宽系数同比例缩放,300米长度
- //if(l>1)
- //c_y=c_y*l/100;
-
- var _o_x=0;//船舶顶点
- var _o_y=c_y*2;
- var v_o_x=x+_o_x*Math.cos(jd)-_o_y*Math.sin(jd);
- var v_o_y=y+_o_x*Math.sin(jd)+_o_y*Math.cos(jd);
- var _1_x=c_x;//船舶角点1
- var _1_y=c_y;
- var v_1_x=x+_1_x*Math.cos(jd)-_1_y*Math.sin(jd);
- var v_1_y=y+_1_x*Math.sin(jd)+_1_y*Math.cos(jd);
- var _2_x=c_x;//船舶角点2
- var _2_y=-c_y;
- var v_2_x=x+_2_x*Math.cos(jd)-_2_y*Math.sin(jd);
- var v_2_y=y+_2_x*Math.sin(jd)+_2_y*Math.cos(jd);
- var _3_x=-c_x;//船舶角点3
- var _3_y=-c_y;
- var v_3_x=x+_3_x*Math.cos(jd)-_3_y*Math.sin(jd);
- var v_3_y=y+_3_x*Math.sin(jd)+_3_y*Math.cos(jd);
- var _4_x=-c_x;//船舶角点4
- var _4_y=c_y;
- var v_4_x=x+_4_x*Math.cos(jd)-_4_y*Math.sin(jd);
- var v_4_y=y+_4_x*Math.sin(jd)+_4_y*Math.cos(jd);
-
- var points =[new SuperMap.Geometry.Point(v_o_x,v_o_y),
- new SuperMap.Geometry.Point(v_1_x,v_1_y),
- new SuperMap.Geometry.Point(v_2_x,v_2_y),
- new SuperMap.Geometry.Point(v_3_x,v_3_y),
- new SuperMap.Geometry.Point(v_4_x,v_4_y)];
-
- linearRings = new SuperMap.Geometry.LinearRing(points);
- region = new SuperMap.Geometry.Polygon([linearRings]);
-
- //船首线与船速成正比
- if(gis.script.isNum(s)&&s>0)
- {
- //console.log('>1>ship:',ship);
- var c_j = 0.0004500;
- c_j=c_j*s/10+0.0003000;
- var v_j_x=x+0*Math.cos(jd)-c_j*Math.sin(jd);
- var v_j_y=y+0*Math.sin(jd)+c_j*Math.cos(jd);
-
- var pointst =[new SuperMap.Geometry.Point(v_o_x,v_o_y),
- new SuperMap.Geometry.Point(v_j_x,v_j_y),
- new SuperMap.Geometry.Point(v_o_x,v_o_y),
- ];
- //console.log('>1>pointst:',pointst);
- var linearRingst = new SuperMap.Geometry.LinearRing(pointst);
- region = new SuperMap.Geometry.Polygon([linearRingst,linearRings]);
- }
- var pointFeature = new SuperMap.Feature.Vector(region);
- var colerStyle = shipColor(ship);
- /*
- pointFeature.style={
- fillColor:colerStyle,
- strokeColor:"yellow",
- pointRadius:7
- };
- */
- pointFeature.attributes.onSelectOpenPopkey="openPop_Boat";
- pointFeature.attributes.onID=ship.name;
- pointFeature.attributes.onMMSI=ship.mmsi;
- pointFeature.attributes.onCname=ship.hscname;
- pointFeature.attributes.shipLON=x;
- pointFeature.attributes.shipLAT=y;
-
- layer.addFeatures(pointFeature);
-
- }
-
- }
- gis.script.drawFillMarkerToMultiPolygon = function (layer,ship){
-
- if(ship){
- //x:LON;y:LAT;c:COURSE;l:LENGTH;w:WIDTH;s:SPEED;
- var x = ship.LON||parseFloat(ship.lon);
- var y = ship.LAT||parseFloat(ship.lat);
- var c = ship.COURSE||parseFloat(ship.course)||90.0;
- var l = ship.LENGTH||parseFloat(ship.length);
- var w = ship.WIDTH||parseFloat(ship.width);
- var s = ship.SPEED||parseFloat(ship.speed);
- //先以中心点为原点
- var jd = parseInt(c); //后期考虑转换异常,异常方向取0度
- jd = -(jd/180) * Math.PI;//弧度 顺时针旋转
-
- //20公里:1厘米比例尺
- var c_x=0.000075;//船舶单位长度,按照长、宽系数同比例缩放,150米长度
- //if(w>1)
- //c_x=c_x*w/100;
- var c_y=0.00015;//船舶单位长度,按照长、宽系数同比例缩放,300米长度
- //if(l>1)
- //c_y=c_y*l/100;
-
- var _o_x=0;//船舶顶点
- var _o_y=c_y*2;
- var v_o_x=x+_o_x*Math.cos(jd)-_o_y*Math.sin(jd);
- var v_o_y=y+_o_x*Math.sin(jd)+_o_y*Math.cos(jd);
- var _1_x=c_x;//船舶角点1
- var _1_y=c_y;
- var v_1_x=x+_1_x*Math.cos(jd)-_1_y*Math.sin(jd);
- var v_1_y=y+_1_x*Math.sin(jd)+_1_y*Math.cos(jd);
- var _2_x=c_x;//船舶角点2
- var _2_y=-c_y;
- var v_2_x=x+_2_x*Math.cos(jd)-_2_y*Math.sin(jd);
- var v_2_y=y+_2_x*Math.sin(jd)+_2_y*Math.cos(jd);
- var _3_x=-c_x;//船舶角点3
- var _3_y=-c_y;
- var v_3_x=x+_3_x*Math.cos(jd)-_3_y*Math.sin(jd);
- var v_3_y=y+_3_x*Math.sin(jd)+_3_y*Math.cos(jd);
- var _4_x=-c_x;//船舶角点4
- var _4_y=c_y;
- var v_4_x=x+_4_x*Math.cos(jd)-_4_y*Math.sin(jd);
- var v_4_y=y+_4_x*Math.sin(jd)+_4_y*Math.cos(jd);
-
- var points =[new SuperMap.Geometry.Point(v_o_x,v_o_y),
- new SuperMap.Geometry.Point(v_1_x,v_1_y),
- new SuperMap.Geometry.Point(v_2_x,v_2_y),
- new SuperMap.Geometry.Point(v_3_x,v_3_y),
- new SuperMap.Geometry.Point(v_4_x,v_4_y)];
-
- linearRings = new SuperMap.Geometry.LinearRing(points);
- region = new SuperMap.Geometry.Polygon([linearRings]);
-
- return region;
- }
- return null;
- }
- /**
- * 返还船只颜色
- * */
- function shipColor(ship){
- if(this.currentState=="danger"){
- return getColorByDanger(ship);
- }else if(this.currentState=="shiptype"){
- return getColorByShipType(ship);
- }else if(this.currentState=="sailstate"){
- return getColorBySailState(ship);
- }
- //return '#ffffff' ;
- return '#0004FF' ;
- }
- function getColorByDanger(ship){
- var fc='#00FF00';//默认绿色
- if(ship.DANGER=="1")
- fc='#FF0000';//危险船舶显示红色
- return fc ;
- }
- function getColorByShipType(ship){
- var allShiptype = ship.SHIP_TYPE;
- var shiptype = allShiptype.charAt(0);
- if(shiptype=="8")
- return '#ff0012' ;
- if(shiptype=="7")
- return '#00FF00' ;
- if(shiptype=="3")
- return '#00FFFE';
- if(shiptype=="6")
- return '#0004FF' ;
-
- return '#C0C0C0' ;
- }
- function getColorBySailState(ship){
- if(ship.STATUS=="5")
- return '#FC010A';
- if(ship.STATUS=="1")
- return '#595E40';
- if(ship.STATUS=="0"||ship.STATUS=="8")
- return '#00FF00';
- if(ship.STATUS=="6")
- return '#F29554';
-
- //其它
- return '#C0C0C0' ;
- }
-
- gis.script.loadboatLayer2=function(layer,o){
-
- if(layer&&
- o&&o.length){
- for(var i=0;i<o.length;i++){
- var obj=o[i];
- var point= new SuperMap.Geometry.Point(obj.lon,obj.lat);
- point.arrt=obj;
- gis.script.cbpointInfo.push(point);
- var pointFeature = new SuperMap.Feature.Vector(point);
- pointFeature.style={
- fillColor:"red",
- strokeColor:"yellow",
- pointRadius:7
- };
- pointFeature.attributes.onSelectOpenPopkey="openPop_Boat";
- pointFeature.attributes.onID=obj.id;
-
- layer.addFeatures(pointFeature);
-
- /*
- var geoText = new SuperMap.Geometry.GeoText(obj.lon,obj.lat,"中华人民共和国");
- var geotextFeature = new SuperMap.Feature.Vector(geoText);
- layer.addFeatures(geotextFeature);
- */
- }
- //x:LON;y:LAT;c:COURSE;l:LENGTH;w:WIDTH;s:SPEED
- gis.script.drawFillMarker(layer,{DANGER:'1',LON:119.66,LAT:32.97,COURSE:'90',LENGTH:1,WIDTH:1,SPEED:0});
-
- // var points =[new SuperMap.Geometry.Point(119.66,32.97),
- // new SuperMap.Geometry.Point(119.56,32.97),
- // new SuperMap.Geometry.Point(119.56,32.87),
- // new SuperMap.Geometry.Point(119.66,32.87),
- // new SuperMap.Geometry.Point(119.76,32.92)
- // ],
- // linearRings = new SuperMap.Geometry.LinearRing(points),
- // region = new SuperMap.Geometry.Polygon([linearRings]);
- // gis.script.cbpointInfo.push(region);
- // var pointFeature = new SuperMap.Feature.Vector(region);
- // pointFeature.style={
- // fillColor:"blue",
- // strokeColor:"yellow",
- // pointRadius:7
- // };
- //
- // pointFeature.attributes.onSelectOpenPopkey="openPop_Boat";
- // pointFeature.attributes.onID='333';
- //
- // layer.addFeatures(pointFeature);
- }
- /*
- */
- }
|