0cb48f8942e21c1af0fa59e9b434783d1bccdcdf.svn-base 7.04 KB
var isFFCheck = false;

var vecLayerFF = null, vLayerFF = null; //矢量要素图层
var selFeatureCtrlFlash = null; //矢量要素选择控件
var selectFlashFea;
var numFlashFea = 0;
var kFlashFea = 0;
var timerFlashFea;
var style_greenFF;

function DrawFF() {
	if (!isFFCheck) {

		if ($("#FFdialog").attr("id") == undefined)
			BuildFFAlert();
		else {
			$.parser.parse($("#FFdialog")); //局部重新渲染
			$("#FFdialog").dialog("open");
		}
		initFFCtrl();
		isFFCheck = true;
	} else {
		//  clearFlashFea();
		// isFFCheck = false;
		$("#FFdialog").dialog("close");
	}
}

function BuildFFAlert() {
	var sb = '<div id="FFdialog" class="easyui-dialog" title="框选要素闪烁" style="left:900px;top:320px;width:210px; height: 200px;padding: 5px" resizable="true">'
			+ '<div id="toolspanelFF" style= "border:1px dashed gray;">'
			+ '  <input class="functionButton" type="button" id="disp" value="生成要素"   onclick=\'randFeatures()\'/>'
			+ '<input class="functionButton" type="button" id="Button1" value="框选要素"  onclick=\'boxSelect()\'/>'
			+ ' <input class="functionButton" type="button" id="Button3" value="开始闪烁"  onclick=\'startFlashFhFea()\'/>'
			+ ' <input class="functionButton" type="button" id="Button2" value="停止闪烁"  onclick=\'stopFlashFhFea()\'/>'
			+ ' <input class="functionButton" type="button" id="Button4" value="停止拉框"  onclick=\'stopBoxFlashFea()\'/>'
			+ ' <input class="functionButton" type="button" id="Button5" value="清除"  onclick=\'clearFlashFea()\'/>'
			+ '</div>' + '   </div>';
	$("#main").append(sb);
	$("#FFdialog").dialog({
		closed : false,
		onClose : function() {
			closeFFea();
		}
	});
	document.getElementById('disp').disabled = false;
	document.getElementById('Button1').disabled = true;
	document.getElementById('Button4').disabled = true;
	document.getElementById('Button3').disabled = true;
	document.getElementById('Button2').disabled = true;
}

function initFFCtrl() {
	vecLayerFF = new OpenLayers.Layer.Vector("矢量图层KXYS");
	selectFlashFea = new OpenLayers.Layer.Vector("SelectionKXYS");
	map.addLayers([ vecLayerFF, selectFlashFea ]);
	map.setCenter(new OpenLayers.LonLat(-4.5142085028902, 10.743816236882), 3);
	numFlashFea = 20;
	kFlashFea = 0;
	style_green = {
		fillColor : "#ff0000",
		fillOpacity : 1,
		hoverFillColor : "white",
		hoverFillOpacity : 0.8,
		strokeColor : "#ff0000",
		strokeOpacity : 1,
		strokeLinecap : "round",
		strokeWidth : 2,
		strokeDashstyle : "solid",
		hoverStrokeColor : "red",
		hoverStrokeOpacity : 1,
		hoverStrokeWidth : 0.2,
		pointRadius : 6,
		hoverPointRadius : 1,
		hoverPointUnit : "%",
		pointerEvents : "visiblePainted",
		cursor : "inherit"
	};

	//图层要素选择控件
	selFeatureCtrlFlash = new OpenLayers.Control.SelectFeature(vecLayerFF, {
		highlightOnly : false,
		box : true
	});

	//图层要素选择事件
	vecLayerFF.events.on({
		'featureselected' : function(e) {
			if (e.feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Point") {
				var pnt = new OpenLayers.Feature.Vector(
						new OpenLayers.Geometry.Point(e.feature.geometry.x,
								e.feature.geometry.y), null, style_green);
				selectFlashFea.addFeatures([ pnt ]);
			}
		},
		'featureunselected' : function(e) {
			selectFlashFea.removeAllFeatures();
		}
	});

	map.addControl(selFeatureCtrlFlash);

}

function toggleLayerFlashFea() {
	if (selectFlashFea != null) {
		if (selectFlashFea.visibility) {
			selectFlashFea.setVisibility(false);
		} else {
			selectFlashFea.setVisibility(true);
		}
	}
}

function startFlashFhFea() {
	var getSelectKXYS = selectFlashFea.features;
	if (getSelectKXYS == null || getSelectKXYS.length <= 0) {
		$.messager.alert("提示", "当前没有框选任何要素,请重新选择!", "info");
		return;
	}
	document.getElementById('disp').disabled = true;
	document.getElementById('Button1').disabled = true;
	document.getElementById('Button4').disabled = true;
	document.getElementById('Button3').disabled = true;
	document.getElementById('Button2').disabled = false;
	timerFlashFea = setInterval(toggleLayerFlashFea, 500);
}

function stopFlashFhFea() {
	clearInterval(timerFlashFea);
	selectFlashFea.redraw();
	vecLayerFF.redraw();
	selectFlashFea.setVisibility(false);
	document.getElementById('disp').disabled = true;
	document.getElementById('Button3').disabled = false;
	document.getElementById('Button2').disabled = true;
	document.getElementById('Button1').disabled = true;
	document.getElementById('Button4').disabled = false;

	//  selectFlashFea.removeAllFeatures();

}

//随机生成矢量要素
function randomCreateFeatureFhFea(vLayer, numFlashFea) {
	var curMapBound = map.getExtent();
	var w = curMapBound.right - curMapBound.left;
	var h = curMapBound.top - curMapBound.bottom;

	if (vLayer == null) {
		vLayer = new OpenLayers.Layer.Vector("矢量图层");
		map.addLayers([ vLayer ]);
	} else {
		vLayer.removeAllFeatures();
	}
	var curResolution = map.getResolution();
	for ( var i = 0; i < numFlashFea; i++) {
		var x = Math.random() * w + curMapBound.left;
		var y = Math.random() * h + curMapBound.bottom;
		var newPoint = new OpenLayers.Geometry.Point(x, y);
		var pntFeature = new OpenLayers.Feature.Vector(newPoint, null, null);
		vLayer.addFeatures([ pntFeature ]);
	}
}

function randFeatures() {
	randomCreateFeatureFhFea(vecLayerFF, 50);
	document.getElementById('disp').disabled = true;
	document.getElementById('Button1').disabled = false;
	document.getElementById('Button4').disabled = true;
	document.getElementById('Button3').disabled = true;
	document.getElementById('Button2').disabled = true;
}

function boxSelect() {
	selectFlashFea.setVisibility(false);
	selFeatureCtrlFlash.activate();
	document.getElementById('disp').disabled = true;
	document.getElementById('Button1').disabled = true;
	document.getElementById('Button2').disabled = true;
	document.getElementById('Button3').disabled = false;
	document.getElementById('Button4').disabled = true;

}

function stopBoxFlashFea() {
	document.getElementById('disp').disabled = true;
	document.getElementById('Button1').disabled = false;
	document.getElementById('Button2').disabled = true;
	document.getElementById('Button3').disabled = true;
	document.getElementById('Button4').disabled = false;

	selFeatureCtrlFlash.unselectAll();
	selFeatureCtrlFlash.deactivate();
	vecLayerFF.redraw();
	selectFlashFea.removeAllFeatures();
	selectFlashFea.setVisibility(false);

}

function closeFFea() {
	if (timerFlashFea) {
		clearInterval(timerFlashFea);
	}
	document.getElementById('disp').disabled = false;
	document.getElementById('Button1').disabled = true;
	document.getElementById('Button2').disabled = true;
	document.getElementById('Button3').disabled = true;
	document.getElementById('Button4').disabled = true;
	if (selFeatureCtrlFlash) {
		selFeatureCtrlFlash.deactivate();
	}
	map.removeLayer(vecLayerFF);
	map.removeLayer(selectFlashFea);
	map.removeControl(selFeatureCtrlFlash);
	vecLayerFF = null;
	selectFlashFea = null;
	selFeatureCtrlFlash = null;
	numFlashFea = 0;
	kFlashFea = 0;
	timerFlashFea = null;
	style_green = null;
	isFFCheck = false;
}

function clearFlashFea() {
	closeFFea();
	isFFCheck = true;
	initFFCtrl();
}