﻿	
	//====================================地图漫游类==========================================
	
	/*
	 * 定义地图漫游类
	 */
	function KMoveControl()
    {
        this.loaded = false;
    }
    
    /*
	 * 初始化
	 */
    var KMoveControl_initialize = function(mapObject)
    {
        var controlObject = this;
        if (controlObject.Map && mapObject == controlObject.Map)
        {
            return;
        }
        controlObject.Map = mapObject;
        controlObject.loaded = true;
    }
    
    /*
	 * 开始
	 */
    var KMoveControl_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();							//响应鼠标滚动
		KBase.setCursorStyle(controlObject.Map.mapsDiv, "hand.cur");		
        controlObject.mapMouseDownListener = KEvent.addListener(controlObject.Map, "mousedown", controlObject, this.onMapMouseDown);
        controlObject.mapClickListener = KEvent.addListener(controlObject.Map, "click", controlObject, this.onMapClick);    
         
        
    }
    
    /*
	 * 响应鼠标点击事件
	 */
    var KMoveControl_onMapMouseDown = function(position, eventButton)
    {
        var controlObject = this;
        controlObject.startPosition = position;
        controlObject.mapMouseDragListener = KEvent.addListener(controlObject.Map, "mousedrag", controlObject, this.onMapMouseDrag);
        controlObject.mapMouseUpListener = KEvent.addListener(controlObject.Map, "mouseup", controlObject, this.onMapMouseUp);
    }
    
    /**
	 * 地图鼠标拖动事件
	 */
    var KMoveControl_onMapMouseDrag = function(position)
    {
        var controlObject = this;
        controlObject.endPosition = position;
        var move=[controlObject.endPosition[0]-controlObject.startPosition[0],controlObject.endPosition[1] - controlObject.startPosition[1]];
		KBase.setPosition(controlObject.Map.mapImg,move);
		KBase.setPosition(controlObject.Map.overlaysDiv,move);
    }
    
    /**
	 * 地图鼠标释放事件
	 */
    var KMoveControl_onMapMouseUp = function(position)
    {
        var controlObject = this;
        controlObject.endPosition = position;      
        
        controlObject.Map.move(controlObject.startPosition[0]-controlObject.endPosition[0],controlObject.startPosition[1]-controlObject.endPosition[1]);
		
        KEvent.removeListener(controlObject.mapMouseDragListener);
        controlObject.mapMouseDragListener = null;
        KEvent.removeListener(controlObject.mapMouseUpListener);
        controlObject.mapMouseUpListener = null;
    }
    
    /**
	 * 地图鼠标单击事件
	 */
    var KMoveControl_onMapClick = function(position,eventBotton)
    {
        var controlObject = this;
        
        if (eventBotton==1)
			controlObject.Map.zoomIn(position[0],position[1],position[0],position[1]);
		else if (eventBotton==2)
			controlObject.Map.zoomOut(position[0],position[1]);
			

        KEvent.removeListener(controlObject.mapMouseDragListener);
        controlObject.mapMouseDragListener = null;
        KEvent.removeListener(controlObject.mapMouseUpListener);
        controlObject.mapMouseUpListener = null;
    }
    
    
	
	
	/**
	 * 获取HTML控件
	 */	
	var KMoveControl_getObject = function()
    {
        var controlObject = this;
        return controlObject.div;
    }
    /**
	 * 释放
	 */	
    var KMoveControl_depose = function()
    {
        var controlObject = this;        
        if (controlObject.mapMouseDownListener)
        {
            KEvent.removeListener(controlObject.mapMouseDownListener);
            controlObject.mapMouseDownListener = null;
        }
        if (controlObject.mapClickListener)
        {
            KEvent.removeListener(controlObject.mapClickListener);
            controlObject.mapClickListener = null;
        }
        
        if (controlObject.mapMouseDragListener)
        {
            KEvent.removeListener(controlObject.mapMouseDragListener);
            controlObject.mapMouseDragListener = null;
        }
        if (controlObject.mapMouseUpListener)
        {
            KEvent.removeListener(controlObject.mapMouseUpListener);
            controlObject.mapMouseUpListener = null;
        }
    }

    KConfig.defineClass("KMoveControl", KMoveControl);
    
    KConfig.defineFunction(KMoveControl, "startup", KMoveControl_startup);
    KConfig.defineFunction(KMoveControl, "onMapMouseDown", KMoveControl_onMapMouseDown);
    KConfig.defineFunction(KMoveControl, "onMapMouseDrag", KMoveControl_onMapMouseDrag);
    KConfig.defineFunction(KMoveControl, "onMapMouseUp", KMoveControl_onMapMouseUp);
    KConfig.defineFunction(KMoveControl, "onMapClick", KMoveControl_onMapClick);
    KConfig.defineFunction(KMoveControl, "initialize", KMoveControl_initialize);
    KConfig.defineFunction(KMoveControl, "getObject", KMoveControl_getObject);
    KConfig.defineFunction(KMoveControl, "depose", KMoveControl_depose);  
    
    //=================================地图漫游类[END]==========================================
