////////////////////
// entityopr.js
// 2D Simple
// 实体操作
// 王磊 2008-09-16
////////////////////

//添加点操作
var strAddPoint;
function initStrAddPoint()
{

	strAddPoint = "oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddPoint += "centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddPoint += "centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddPoint += "curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddPoint += "scale = curScale*0.0000001;" + "\n";
	strAddPoint += "\n";
	strAddPoint += "var blueColor = oClassFactory.createColorAdvance(0, 0, 255, 0.7);" + "\n";
	strAddPoint += "var oLayerUser = oMapViewer.dynamicLayers.addLayer('NewPointLayer');" + "\n";
	strAddPoint += "oLayerUser.selectable = true;" + "\n";
	strAddPoint += "var pointLegend = oClassFactory.createLegend();" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "var fontColor= oClassFactory.createColor(128, 128, 255);" + "\n";
	strAddPoint += "var pointFont = oClassFactory.createFont();" + "\n";
	strAddPoint += "pointFont.initAdvance('宋体', 5.0, pointFont.Style_BoldItalic);" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "for(var i=0; i<3; i++)" + "\n";
	strAddPoint += "{" + "\n";
	strAddPoint += "	addPoint(centerX+i*scale, centerY+i*scale, blueColor, fontColor, pointFont, '点实例 '+i);" + "\n";
	strAddPoint += "}" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "function addPoint(x, y, pointColor, fontColor, pointFont, text)" + "\n";
	strAddPoint += "{" + "\n";
	strAddPoint += "	pointLegend.initSimplePoint(3, pointColor, true);" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "	var pointObject = oLayerUser.addPointObject(x, y+scale);" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "	pointObject.text = text;" + "\n";
	strAddPoint += "	pointObject.textPosition = 1;" + "\n";
	strAddPoint += "	pointObject.legend = pointLegend" + "\n";
	strAddPoint += "	pointObject.font = pointFont;" + "\n";
	strAddPoint += "	pointObject.fontColor = fontColor;" + "\n";
	strAddPoint += "}" + "\n";
	strAddPoint += "" + "\n";
	strAddPoint += "oMapViewer.redraw();" + "\n";


	return strAddPoint;
}

function addPointLink()
{
	displayCode(initStrAddPoint());
}

function runAddPoint()
{
	displayCode(initStrAddPoint());
	//window.execScript(initStrAddPoint());
	runCodeEntityOpr(initStrAddPoint());
}

//添加椭圆
var strAddEllipse;
function initStrAddEllipse()
{
	strAddEllipse = "oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddEllipse += "centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddEllipse += "centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddEllipse += "curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddEllipse += "scale = curScale*0.0000001;" + "\n";
	strAddEllipse += "\n";
	strAddEllipse += "var greenColor = oClassFactory.createColorAdvance(0, 255, 0, 0.5);" + "\n";
	strAddEllipse += "var legend = oClassFactory.createLegend();" + "\n";
	strAddEllipse += "var layer = oMapViewer.dynamicLayers.addLayer('NewEllipsePoint');" + "\n";
	strAddEllipse += "layer.selectable = true;" + "\n";
	strAddEllipse += "" + "\n";
	strAddEllipse += "for(var i=0; i<3; i++)" + "\n";
	strAddEllipse += "{" + "\n";
	strAddEllipse += "	addEllipse(centerX - i * scale, centerY + 1.5 * i * scale, scale, greenColor, '圆实例 '+i);" + "\n";
	strAddEllipse += "}" + "\n";
	strAddEllipse += "" + "\n";
	strAddEllipse += "function addEllipse(x, y, radius, color, annotate)" + "\n";
	strAddEllipse += "{" + "\n";
	strAddEllipse += "	var ellipse = layer.addEllipseObject(x, y, radius + scale, radius);" + "\n";
	strAddEllipse += "	legend.initSimplePoly(color);" + "\n";
	strAddEllipse += "	ellipse.fillLegend = legend;" + "\n";
	strAddEllipse += "	ellipse.text = annotate;" + "\n";
	strAddEllipse += "}" + "\n";
	strAddEllipse += "" + "\n";
	strAddEllipse += "oMapViewer.redraw();" + "\n";

	return strAddEllipse;
}

function addEllipseLink()
{
	displayCode(initStrAddEllipse());
}

function runAddEllipse()
{
	displayCode(initStrAddEllipse());
	//window.execScript(initStrAddEllipse());
	runCodeEntityOpr(initStrAddEllipse());
}

//添加线操作
var strAddLine;
function initStrAddLine()
{
	strAddLine = "oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddLine += "centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddLine += "centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddLine += "curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddLine += "scale = curScale*0.0000001;" + "\n";
	strAddLine += "\n";
	strAddLine += "var ptArray1 = oClassFactory.createPointArray();" + "\n";
	strAddLine += "var ptArray2 = oClassFactory.createPointArray();" + "\n";
	strAddLine += "var ptArray3 = oClassFactory.createPointArray();" + "\n";
	strAddLine += "var ptArray4 = oClassFactory.createPointArray();" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "ptArray1.add(centerX, centerY);" + "\n";
	strAddLine += "ptArray1.add(centerX+1*scale, centerY+2*scale);" + "\n";
	strAddLine += "ptArray2.add(centerX+1*scale, centerY+2*scale);" + "\n";
	strAddLine += "ptArray2.add(centerX+2*scale, centerY);" + "\n";
	strAddLine += "ptArray3.add(centerX, centerY);" + "\n";
	strAddLine += "ptArray3.add(centerX-1*scale, centerY+2*scale);" + "\n";
	strAddLine += "ptArray4.add(centerX-1*scale, centerY+2*scale);" + "\n";
	strAddLine += "ptArray4.add(centerX-2*scale, centerY);" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "var layer = oMapViewer.dynamicLayers.addLayer('NewLineLayer');" + "\n";
	strAddLine += "layer.selectable = true;" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "var lineObject1 = layer.addLineObject(ptArray1);" + "\n";
	strAddLine += "var lineObject2 = layer.addLineObject(ptArray2);" + "\n";
	strAddLine += "var lineObject3 = layer.addLineObject(ptArray3);" + "\n";
	strAddLine += "var lineObject4 = layer.addLineObject(ptArray4);" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "var legend1 = oClassFactory.createLegend();" + "\n";
	strAddLine += "var legend2 = oClassFactory.createLegend();" + "\n";
	strAddLine += "var legend3 = oClassFactory.createLegend();" + "\n";
	strAddLine += "var legend4 = oClassFactory.createLegend();" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "var color1 = oClassFactory.createColorAdvance(128, 0, 0, 0.5);" + "\n";
	strAddLine += "var color2 = oClassFactory.createColorAdvance(0, 128, 0, 0.6);" + "\n";
	strAddLine += "var color3 = oClassFactory.createColorAdvance(0, 0, 128, 0.7);" + "\n";
	strAddLine += "var color4 = oClassFactory.createColorAdvance(64, 64, 64, 0.8);" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "legend1.initSimpleLine(2.0, color1);" + "\n";
	strAddLine += "legend2.initSimpleLine(1.5, color2);" + "\n";
	strAddLine += "legend3.initSimpleLine(1.0, color3);" + "\n";
	strAddLine += "legend4.initSimpleLine(0.5, color4);" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "lineObject1.legend = legend1;" + "\n";
	strAddLine += "lineObject2.legend = legend2;" + "\n";
	strAddLine += "lineObject3.legend = legend3;" + "\n";
	strAddLine += "lineObject4.legend = legend3;" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "lineObject1.text = '线实例1'" + "\n";
	strAddLine += "lineObject2.text = '线实例2'" + "\n";
	strAddLine += "lineObject3.text = '线实例3'" + "\n";
	strAddLine += "lineObject4.text = '线实例4'" + "\n";
	strAddLine += "" + "\n";
	strAddLine += "oMapViewer.redraw();" + "\n";

	return strAddLine;
}

function addLineLink()
{
	displayCode(initStrAddLine());
}

function runAddLine()
{
	displayCode(initStrAddLine());
	//window.execScript(initStrAddLine());
	runCodeEntityOpr(initStrAddLine());
}

//多边形
var strAddPoly;
function initStrAddPoly()
{
	strAddPoly = "oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddPoly += "centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddPoly += "centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddPoly += "curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddPoly += "scale = curScale*0.0000001;" + "\n";
	strAddPoly += "\n";
	strAddPoly += "var x, y;" + "\n";
	strAddPoly += "var count = 7;" + "\n";
	strAddPoly += "var angleStep = 2 * Math.PI / count;" + "\n";
	strAddPoly += "" + "\n";
	strAddPoly += "var points = oClassFactory.createPointArray();" + "\n";
	strAddPoly += "var color = oClassFactory.createColorAdvance(256, 64, 256, 0.5);" + "\n";
	strAddPoly += "var legend = oClassFactory.createLegend();" + "\n";
	strAddPoly += "var layer = oMapViewer.dynamicLayers.addLayer('NewPolyLayer');" + "\n";
	strAddPoly += "layer.selectable = true;" + "\n";
	strAddPoly += "" + "\n";
	strAddPoly += "for(var i=0; i<count; i++)" + "\n";
	strAddPoly += "{" + "\n";
	strAddPoly += "	x = centerX + scale * Math.cos(angleStep * i);" + "\n";
	strAddPoly += "	y = centerY + scale * Math.sin(angleStep * i);" + "\n";
	strAddPoly += "	points.add(x, y);" + "\n";
	strAddPoly += "}" + "\n";
	strAddPoly += "" + "\n";
	strAddPoly += "var polyObject = layer.addPolyObject(points);" + "\n";
	strAddPoly += "polyObject.text = '多边形';" + "\n";
	strAddPoly += "legend.initSimplePoly(color);" + "\n";
	strAddPoly += "polyObject.fillLegend = legend;" + "\n";
	strAddPoly += "" + "\n";
	strAddPoly += "oMapViewer.redraw();" + "\n";

	return strAddPoly;
}

function addPolyLink()
{
	displayCode(initStrAddPoly());
}

function runAddPoly()
{
	displayCode(initStrAddPoly());
	//window.execScript(initStrAddPoly());
	runCodeEntityOpr(initStrAddPoly());
}

//矩形
var strAddRect;
function initStrAddRect()
{
	strAddRect = "oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddRect += "centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddRect += "centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddRect += "curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddRect += "scale = curScale*0.0000001;" + "\n";
	strAddRect += "\n";
	strAddRect += "var color = oClassFactory.createColorAdvance(255, 0, 0, 0.3);" + "\n";
	strAddRect += "	var layer = oMapViewer.dynamicLayers.addlayer('NewRectLayer');" + "\n";
	strAddRect += "	layer.selectable = true;" + "\n";
	strAddRect += "	var legend = oClassFactory.createLegend();" + "\n";
	strAddRect += "" + "\n";
	strAddRect += "for(var i=1; i<4; i++)" + "\n";
	strAddRect += "{" + "\n";
	strAddRect += "	addRect(centerX-2*i*scale, centerY-2*i*scale, i*scale, i*scale, color, '矩形 '+i);" + "\n";
	strAddRect += "}" + "\n";
	strAddRect += "" + "\n";
	strAddRect += "function addRect(x, y, width, height, color, annotate)" + "\n";
	strAddRect += "{" + "\n";
	strAddRect += "	var rectObject = layer.addRectObject(x, y, width, height);" + "\n";
	strAddRect += "	rectObject.text = annotate;" + "\n";
	strAddRect += "	legend.initSimplePoly(color);" + "\n";
	strAddRect += "	rectObject.fillLegend = legend;" + "\n";
	strAddRect += "}" + "\n";
	strAddRect += "" + "\n";
	strAddRect += "oMapViewer.redraw();" + "\n";

	return strAddRect;
}

function addRectLink()
{
	displayCode(initStrAddRect());
}

function runAddRect()
{
	displayCode(initStrAddRect());
	//window.execScript(initStrAddRect());
	runCodeEntityOpr(initStrAddRect());
}

//添加图片实例
var strAddImageGeo;

function initStrAddImageGeo()
{
	strAddImageGeo = "oClassFactory = oMapViewer.classFactory;" + "\n";
	strAddImageGeo += "centerX = oMapViewer.renderContext.coordSystem.centerPoint.x; " + "\n";
	strAddImageGeo += "centerY = oMapViewer.renderContext.coordSystem.centerPoint.y;" + "\n";
	strAddImageGeo += "curScale = oMapViewer.renderContext.coordSystem.curScale;" + "\n";
	strAddImageGeo += "scale = curScale*0.0000001;" + "\n";
	strAddImageGeo += "\n";
	strAddImageGeo += "var image = 'http://www.drawsee.com/drawsee/images/add.gif';" + "\n";
	strAddImageGeo += "var layer = oMapViewer.dynamiclayers.addLayer('NewImageLayer');" + "\n";
	strAddImageGeo += "layer.selectable = true;" + "\n";
	strAddImageGeo += "" + "\n";
	strAddImageGeo += "for(var i=0; i<3; i++)" + "\n";
	strAddImageGeo += "{" + "\n";
	strAddImageGeo += "	addImagePoint(centerX+i*scale, centerY-i*scale, image, '图片实例 '+i);" + "\n";
	strAddImageGeo += "}" + "\n";
	strAddImageGeo += "" + "\n";
	strAddImageGeo += "function addImagePoint(x, y, image, annotate)" + "\n";
	strAddImageGeo += "{" + "\n";
	strAddImageGeo += "	var imageLegend = oClassFactory.createLegend();" + "\n";
	strAddImageGeo += "	imageLegend.initImagePoint(image);" + "\n";
	strAddImageGeo += "	var imagePoint = layer.addPointObject(x, y);" + "\n";
	strAddImageGeo += "" + "\n";
	strAddImageGeo += "	imagePoint.legend = imageLegend;" + "\n";
	strAddImageGeo += "	imagePoint.text = annotate;" + "\n";
	strAddImageGeo += "}" + "\n";
	strAddImageGeo += "oMapViewer.redraw();" + "\n";

	return strAddImageGeo;
}

function AddImageGeoLink()
{
	displayCode(initStrAddImageGeo());
}

function runAddImageGeoLink()
{
	displayCode(initStrAddImageGeo());
	//window.execScript(initStrAddImageGeo());
	runCodeEntityOpr(initStrAddImageGeo());
}

//实体个数
var strGetGeoCount;
function initStrGetGeoCount()
{
	strGetGeoCount = "var layerCount = oMapViewer.dynamiclayers.getCount();" + "\n";
	strGetGeoCount += "var count = 0;" + "\n";
	strGetGeoCount += "for(i=0; i<layerCount; i++) {" + "\n";
	strGetGeoCount += "    var layer = oMapViewer.dynamiclayers.getLayer(i);" + "\n";
	strGetGeoCount += "    count += layer.getGeoObjectCount();" + "\n";
	strGetGeoCount += "}" + "\n";
	strGetGeoCount += "alert('实体个数: ' + count);" + "\n";

	return strGetGeoCount;
}

function getGeoCountLink()
{
	displayCode(initStrGetGeoCount());
}

function runGetGeoCount()
{
	displayCode(initStrGetGeoCount());
	//window.execScript(initStrGetGeoCount());
	runCodeEntityOpr(initStrGetGeoCount());
}

//清楚所有实体
var strRemoveAllGeo;
function initStrRemoveAllGeo()
{
	strRemoveAllGeo = "var layerCount = oMapViewer.dynamiclayers.getCount();" + "\n";
	strRemoveAllGeo += "for(i=0; i<layerCount; i++) {" + "\n";
	strRemoveAllGeo += "    var layer = oMapViewer.dynamiclayers.getLayer(i);" + "\n";
	strRemoveAllGeo += "    layer.removeAllFocusObjects();" + "\n";
	strRemoveAllGeo += "    layer.removeAllGeoObjects();" + "\n";
	strRemoveAllGeo += "}" + "\n";
	strRemoveAllGeo += "oMapViewer.redraw();" + "\n";

	return strRemoveAllGeo;
}

function removeAllGeoLink()
{
	displayCode(initStrRemoveAllGeo());
}

function runRemoveAllGeo()
{
	displayCode(initStrRemoveAllGeo());
	//window.execScript(initStrRemoveAllGeo());
	runCodeEntityOpr(initStrRemoveAllGeo());
}

///////
function displayCode(strCode)
{
	document.getElementById("code").innerHTML = "";
	document.getElementById("code").value = strCode;
	
	//window.execScript("initMapValue();"); //初始化变量
	//window.execScript("oMapViewer.setCurrentTool(3);");
}

function runCodeEntityOpr(info)
{
	window.execScript(info);
	commonView();
}
