| 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); 		}		/*	    */	}
 |