﻿
	
	//====================================手工自画圆查找控件类==========================================
	
	/*
	 * 定义自画圆控件类
	 */
	function KSearchOvalControl()
    {
        this.loaded = false;
        this.lineOpacity=0.5;					//线透明度
        this.lineColor="blue";					//线颜色
        this.lineWidth=2;						//线宽度
        this.textBackgroundColor="#FFFFD7";		//文本背景色
        this.textBorderLine=1;					//文本边框宽度
        this.textBorderColor="#ADAEAC";			//文本边框颜色
        this.textFontSize=12;					//文本字体大小
        this.textFontColor="#993300";			//文本字体颜色
        this.textOpacity=1;						//文本透明度
        
        this.ovalCenter="default.gif";
        this.startPoint=null;					//客户端起点坐标
        this.endPoint=null;						//客户段终点坐标
        this.radius=null;						//客户端半径
        
        this.mapS=null;							//起点直角坐标
        this.mapE=null;							//终点直角坐标
    }    
    /*
	 * 初始化
	 */
    var KSearchOvalControl_initialize = function(mapObject)
    {
        var controlObject = this;
        if (controlObject.Map && mapObject == controlObject.Map)
        {
            return;
        }
        controlObject.Map = mapObject;
        controlObject.loaded = true;
    }
    
    /*
	 * 开始画圆
	 */
    var KSearchOvalControl_startup = function()
    {
         var controlObject = this;        
        controlObject.Map.clearOverLays();  
        
        if (!controlObject.loaded) return;
        
		if (controlObject.Map.currTool!=null)		
        {
			controlObject.Map.currTool.depose();				 
		}
				
		controlObject.Map.currTool=this;	
		controlObject.Map.clearMouseScroll();	//清除鼠标滚动
		
		KBase.setCursorStyle(controlObject.Map.mapsDiv, "add.cur");
        		
		// 初始化属性 
		controlObject.startPoint=null;
        controlObject.endPoint=null;
        
        //鼠标点击事件
        controlObject.mapMouseDownListener = KEvent.addListener(controlObject.Map, "mousedown", controlObject, this.onMapMouseDown);        
        //地图变化事件--重新开始
        //controlObject.mapChangeListener = KEvent.addListener(controlObject.Map, "mapload", controlObject, this.startup);        
        
    }
    
    /*
	 * 响应鼠标点击事件
	 */
    var KSearchOvalControl_onMapMouseDown = function(position, eventButton)
    {
        var controlObject = this;
                         
        if (eventButton == 1)//左键
        {
			controlObject.Map.clearOverLays();  
            controlObject.startPoint=position;    
            //设置圆心
			//var marker=new KMarker(position,controlObject.ovalCenter);					
			//map.addOverLay(marker);	  
			
			
			
			       
			if (!controlObject.mapMouseMoveListener)
			{               
				//增加地图容器鼠标移动侦听
				controlObject.mapMouseMoveListener = KEvent.addListener(controlObject.Map.container, "mousemove", controlObject, this.onMapMouseMove);        
			}
			 //删除提示信息
			if (controlObject.marker)
			{
				controlObject.Map.removeOverLay(controlObject.marker);
				controlObject.marker = null;
			}
			controlObject.deleteObject();
        }      
		else		
		{
            //移除提示框显示
            if (controlObject.tipText)
			{
				controlObject.Map.removeOverLay(controlObject.tipText);
            }
            //删除鼠标移动侦听
            if (controlObject.mapMouseMoveListener)
			{
				KEvent.removeListener(controlObject.mapMouseMoveListener);
				controlObject.mapMouseMoveListener=null;
			}
			var S=controlObject.startPoint;
			
			if(S!=null)
			{
				controlObject.mapS=controlObject.Map.clientToMap(S[0]+","+S[1]);
				KEvent.trigger(controlObject.Map, "searchoval", [controlObject.mapS[0].x,controlObject.mapS[0].y,controlObject.radius,1]);
				//KEvent.trigger(controlObject.Map, "searchoval", [S[0].x,S[0].y,controlObject.radius]);
			}
        }
    }
    /*
	 * 响应鼠标移动事件
	 */
    var KSearchOvalControl_onMapMouseMove = function(x)
    {        
        var controlObject = this;  
        controlObject.deleteObject();
          
         
		controlObject.endPoint=[x.x,x.y];
		var S=controlObject.startPoint;
		var E=controlObject.endPoint;
		
		controlObject.mapE=controlObject.Map.clientToMap(E[0]+","+E[1]);
		
		//计算半径
		var radius=2*Math.sqrt((S[0]-E[0])*(S[0]-E[0])+(S[1]-E[1])*(S[1]-E[1]));
		
		 //画圆
        controlObject.polyOval=new KPolyOval(S,true, "blue","blue",1,radius, 0.3)
		controlObject.Map.addOverLay(controlObject.polyOval);
		
		//设置圆心
		if(!controlObject.marker)
		{
			//controlObject.marker=new KMarker(S,controlObject.ovalCenter);					
			//controlObject.Map.addOverLay(controlObject.marker);
			controlObject.marker=new KPolyOval(S,true, "red","red",1,6, 0.8)
			controlObject.Map.addOverLay(controlObject.marker);
				 
		}
			
		//显示半径
		radius=map.getPoints2MapRadius(S[0],S[1],E[0],E[1]);	
		controlObject.radius=radius;
		
		
        var message="半径:"+radius+"米";
        controlObject.messageText = new KMapText([S[0]+6,S[1]]);
        controlObject.messageText.setBgColor("#D2F0FF");
        controlObject.messageText.setFontSize(12);                    
        controlObject.messageText.setNoWrap(true);                    
		controlObject.messageText.setText(message);
		controlObject.Map.addOverLay(controlObject.messageText);
	
		//设置提示文字
        controlObject.tipText = new KMapText(E);
        controlObject.tipText.setBgColor("#D2F0FF");
        controlObject.tipText.setFontSize(12);                    
        controlObject.tipText.setNoWrap(true);                    
		controlObject.tipText.setText("点击右键结束");
        controlObject.Map.addOverLay(controlObject.tipText);
    }   
	
	/**
     * 设置响应函数
     */
    var KSearchOvalControl_setResponseFunction  = function(functionName)
    {
		var controlObject = this;
		if (controlObject.searchOvalListener)KEvent.removeListener(controlObject.searchOvalListener);
		controlObject.searchOvalListener=KEvent.addListener(controlObject.Map, "searchoval",functionName);
    }
    
	/**
	 * 获取HTML控件
	 */	
	var KSearchOvalControl_getObject = function()
    {
        var controlObject = this;
        return controlObject.div;
    }
    /**
	 * 删除提示信息
	 */	
    var KSearchOvalControl_deleteObject = function()
    {
		var controlObject = this;  
		if (controlObject.polyOval)
        {
            controlObject.Map.removeOverLay(controlObject.polyOval);
            controlObject.polyOval = null;
        }
        
        if (controlObject.tipText)
        {
            controlObject.Map.removeOverLay(controlObject.tipText);
            controlObject.tipText = null;
        }
        if (controlObject.messageText)
        {
            controlObject.Map.removeOverLay(controlObject.messageText);
            controlObject.messageText = null;
        }
    }
    /**
	 * 释放
	 */	
    var KSearchOvalControl_depose = function()
    {
        var controlObject = this;        
        if (controlObject.mapMouseDownListener)
        {
            KEvent.removeListener(controlObject.mapMouseDownListener);
            controlObject.mapMouseDownListener=null;
        }
        if (controlObject.mapMouseMoveListener)
        {
            KEvent.removeListener(controlObject.mapMouseMoveListener);
            controlObject.mapMouseMoveListener=null;
        }
        if (controlObject.searchOvalListener)
        {
            KEvent.removeListener(controlObject.searchOvalListener);
            controlObject.searchOvalListener = null;
        }  
        /*
        if (controlObject.mapChangeListener)
        {
			KEvent.removeListener(controlObject.mapChangeListener);
			controlObject.mapChangeListener=null;
        }
        */
       
        
        //删除提示信息
        if (controlObject.marker)
        {
            controlObject.Map.removeOverLay(controlObject.marker);
            controlObject.marker = null;
        }
        controlObject.deleteObject();
    }    
    
    /**
	 * 设置圆心图片
	 */	
    var KSearchOvalControl_setOvalCenter = function(value)
    {
		this.ovalCenter=value;
    }
    
    /**
	 * 设置线透明度
	 */	
    var KSearchOvalControl_setLineOpacity = function(value)
    {
		this.lineOpacity=value;
    }
    
    /**
	 * 设置线颜色
	 */	
    var KSearchOvalControl_setLineColor = function(value)
    {
		this.lineColor=value;
    }
    
    /**
	 * 设置线宽度
	 */	
    var KSearchOvalControl_setLineWidth = function(value)
    {
		this.lineWidth=value;
    }
    
    /**
	 * 设置文本背景色
	 */	
    var KSearchOvalControl_setTextBgColor = function(value)
    {
		this.textBackgroundColor=value;
    }    
    
    
    /**
	 * 设置文本边框宽度
	 */	
    var KSearchOvalControl_setTextBorderLine = function(value)
    {
		this.textBorderLine=value;
    }
    
    /**
	 * 设置文本边框颜色
	 */	
    var KSearchOvalControl_setTextBorderColor = function(value)
    {
		this.textBorderColor=value;
    }
    
    /**
	 * 设置文本字体大小
	 */	
    var KSearchOvalControl_setTextFontSize = function(value)
    {
		this.textFontSize=value;
    }
    
    /**
	 * 设置文本字体颜色
	 */	
    var KSearchOvalControl_setTextFontColor = function(value)
    {
		this.textFontColor=value;
    }
    
    /**
	 * 设置文本透明度
	 */	
    var KSearchOvalControl_setTextOpacity = function(value)
    {
		this.textOpacity=value;
    }   
    

    KConfig.defineClass("KSearchOvalControl", KSearchOvalControl);
    
    KConfig.defineFunction(KSearchOvalControl, "startup", KSearchOvalControl_startup);
    KConfig.defineFunction(KSearchOvalControl, "onMapMouseDown", KSearchOvalControl_onMapMouseDown);
    KConfig.defineFunction(KSearchOvalControl, "onMapMouseMove", KSearchOvalControl_onMapMouseMove);
    KConfig.defineFunction(KSearchOvalControl, "initialize", KSearchOvalControl_initialize);
    KConfig.defineFunction(KSearchOvalControl, "getObject", KSearchOvalControl_getObject);
    KConfig.defineFunction(KSearchOvalControl, "depose", KSearchOvalControl_depose);  
    KConfig.defineFunction(KSearchOvalControl, "deleteObject", KSearchOvalControl_deleteObject);  
    KConfig.defineFunction(KSearchOvalControl, "setResponseFunction", KSearchOvalControl_setResponseFunction);  
    
        
    KConfig.defineFunction(KSearchOvalControl, "setLineOpacity", KSearchOvalControl_setLineOpacity); 
    KConfig.defineFunction(KSearchOvalControl, "setLineColor", KSearchOvalControl_setLineColor); 
    KConfig.defineFunction(KSearchOvalControl, "setLineWidth", KSearchOvalControl_setLineWidth); 
    KConfig.defineFunction(KSearchOvalControl, "setTextBgColor", KSearchOvalControl_setTextBgColor); 
    KConfig.defineFunction(KSearchOvalControl, "setTextBorderLine", KSearchOvalControl_setTextBorderLine); 
    KConfig.defineFunction(KSearchOvalControl, "setTextBorderColor", KSearchOvalControl_setTextBorderColor);
    KConfig.defineFunction(KSearchOvalControl, "setTextFontSize", KSearchOvalControl_setTextFontSize); 
    KConfig.defineFunction(KSearchOvalControl, "setTextFontColor", KSearchOvalControl_setTextFontColor);
    KConfig.defineFunction(KSearchOvalControl, "setTextOpacity", KSearchOvalControl_setTextOpacity);
    KConfig.defineFunction(KSearchOvalControl, "setOvalCenter", KSearchOvalControl_setOvalCenter);
    
    
    //=================================自画圆控件类[END]==========================================