﻿
	//=================================地图拉框放大类[START]=============================================
	
	/**
     * 创建一个可以拉框放大地图的控件    
     */
    function KZoomInControl()
    { 
        this.loaded = false;        

        //创建框选层
        this.zoomInObj = KBase.createDiv(1, null, 900);
        this.zoomInObj.ID = "zoomInObjDiv";
        KBase.setSize(this.zoomInObj, [1, 1]);
        KBase.setUnSelectable(this.zoomInObj);

        //设置透明性
        KBase.setOpacity(this.zoomInObj, 0.5);

        KBase.getStyle(this.zoomInObj)["backgroundColor"] = "#99FFff";
        KBase.getStyle(this.zoomInObj)["border"] = "#003366 solid 1px";
        KBase.getStyle(this.zoomInObj)["fontSize"] = "0px";
        KBase.getStyle(this.zoomInObj)["visibility"] = "hidden";
        
    }

    /**
     * 拉框放大对象初始化
     */
    var KZoomInControl_initialize = function(mapObject)
    {
        var controlObject = this;
        if (controlObject.Map && mapObject == controlObject.Map)
        {
            return;
        }
        controlObject.Map = mapObject;
        controlObject.loaded = true;
    }

	/**
	 * 启动拉框工具
	 */
    var KZoomInControl_startup= function()
    {
        var controlObject = this;        
        if (!controlObject.loaded) return;
        
		if (controlObject.Map.currTool!=null)		
        {
			controlObject.Map.currTool.depose();				 
		}
				
		controlObject.Map.currTool=this;		
		controlObject.Map.handleMouseScroll("UP");							//响应鼠标向上滚动
		KBase.setCursorStyle(controlObject.Map.mapsDiv, "zoomIn.cur");
        
        controlObject.mapMouseDownListener = KEvent.addListener(controlObject.Map, "mousedown", controlObject, this.onMapMouseDown);
        controlObject.mapClickListener = KEvent.addListener(controlObject.Map, "click", controlObject, this.onMapClick);        
    }
    
    /**
	 * 地图鼠标按下事件
	 */
    var KZoomInControl_onMapMouseDown = function(position)
    {    
        var controlObject = this;
        controlObject.startPosition = position;
        KBase.getStyle(controlObject.zoomInObj)["visibility"] = "visible";
        controlObject.mapMouseDragListener = KEvent.addListener(controlObject.Map, "mousedrag", controlObject, this.onMapMouseDrag);
        controlObject.mapMouseUpListener = KEvent.addListener(controlObject.Map, "mouseup", controlObject, this.onMapMouseUp);
    }
    
    /**
	 * 地图鼠标拖动事件
	 */
    var KZoomInControl_onMapMouseDrag = function(position)
    {
        var controlObject = this;
        controlObject.endPosition = position;
        KBase.setPosition(controlObject.zoomInObj, [Math.min(controlObject.startPosition[0], controlObject.endPosition[0]), Math.min(controlObject.startPosition[1], controlObject.endPosition[1])]);
        KBase.setSize(controlObject.zoomInObj, [Math.abs(controlObject.startPosition[0] - controlObject.endPosition[0]),
                          Math.abs(controlObject.startPosition[1] - controlObject.endPosition[1])]);
    }
    
    /**
	 * 地图鼠标释放事件
	 */    
    var KZoomInControl_onMapMouseUp = function(position)
    {
        var controlObject = this;
        controlObject.endPosition = position;
                
        //地图放大
        controlObject.Map.zoomIn(controlObject.startPosition[0],controlObject.startPosition[1],controlObject.endPosition[0],controlObject.endPosition[1]);
        
        KBase.getStyle(controlObject.zoomInObj)["visibility"] = "hidden";
        KBase.setSize(controlObject.zoomInObj, [1,1]);
        KEvent.removeListener(controlObject.mapMouseDragListener);
        controlObject.mapMouseDragListener = null;
        KEvent.removeListener(controlObject.mapMouseUpListener);
        controlObject.mapMouseUpListener = null;
    }
    
    /**
	 * 地图鼠标单击事件
	 */
    var KZoomInControl_onMapClick = function(position)
    {
        var controlObject = this;     
                
        //地图放大
        controlObject.Map.zoomIn(position[0],position[1],position[0],position[1]);
        
        KBase.getStyle(controlObject.zoomInObj)["visibility"] = "hidden";
        KBase.setSize(controlObject.zoomInObj, [1,1]);
        KEvent.removeListener(controlObject.mapMouseDragListener);
        controlObject.mapMouseDragListener = null;
        KEvent.removeListener(controlObject.mapMouseUpListener);
        controlObject.mapMouseUpListener = null;
        
        
    }
    
    /**
	 * 获取控件对象
	 */
    var KZoomInControl_getObject = function()
    {
        return this.zoomInObj;
    }
    
    /**
	 * 设置拉框层透明度比例(0-1之间)，值越大越不透明
	 */
    var KZoomInControl_setOpacity = function(opacity)
    {
		KBase.setOpacity(this.zoomInObj, opacity);
    }
    
    /**
	 * 设置拉框层背景色
	 */
    var KZoomInControl_setBgColor = function(color)
    {
		KBase.getStyle(this.zoomInObj)["backgroundColor"] = color;
    }
    
    /**
	 * 设置拉框层边框样式
	 */
    var KZoomInControl_setBorderStyle = function(style)
    {
		KBase.getStyle(this.zoomInObj)["border"] = style;
    }
    
    
    
    /**
	 * 控件释放
	 */
    var KZoomInControl_depose = function()
    {
        var controlObject = this;        
        if (controlObject.mapMouseDownListener)
        {
            KEvent.removeListener(controlObject.mapMouseDownListener);
            controlObject.mapMouseDownListener = null;
        }
        if (controlObject.mapMouseDragListener)
        {
            KEvent.removeListener(controlObject.mapMouseDragListener);
            controlObject.mapMouseDragListener = null;
        }
        if (controlObject.mapMouseUpListener)
        {
            KEvent.removeListener(controlObject.mapMouseUpListener);
            controlObject.mapMouseUpListener = null;
        }
        if (controlObject.mapClickListener)
        {
            KEvent.removeListener(controlObject.mapClickListener);
            controlObject.mapClickListener = null;
        }
        
        if(controlObject.Map.isLogout)controlObject.zoomInObj = null;
    }

	
    KConfig.defineClass("KZoomInControl", KZoomInControl);
    KConfig.defineFunction(KZoomInControl, "initialize", KZoomInControl_initialize);
    KConfig.defineFunction(KZoomInControl, "startup", KZoomInControl_startup);
    KConfig.defineFunction(KZoomInControl, "onMapMouseDown", KZoomInControl_onMapMouseDown);
    KConfig.defineFunction(KZoomInControl, "onMapMouseDrag", KZoomInControl_onMapMouseDrag);
    KConfig.defineFunction(KZoomInControl, "onMapMouseUp", KZoomInControl_onMapMouseUp);  
    KConfig.defineFunction(KZoomInControl, "onMapClick", KZoomInControl_onMapClick);  
    KConfig.defineFunction(KZoomInControl, "getObject", KZoomInControl_getObject);
	KConfig.defineFunction(KZoomInControl, "depose", KZoomInControl_depose);
	KConfig.defineFunction(KZoomInControl, "setOpacity", KZoomInControl_setOpacity);
	KConfig.defineFunction(KZoomInControl, "setBgColor", KZoomInControl_setBgColor);
	KConfig.defineFunction(KZoomInControl, "setBorderStyle", KZoomInControl_setBorderStyle);
	
	//=================================地图拉框放大类[END]=============================================
	