fixedzoomouttool.java

来自「esri的ArcGIS Server超级学习模板程序(for java)」· Java 代码 · 共 54 行

JAVA
54
字号
package com.esri.solutions.jitk.tools;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.esri.adf.web.data.WebMap;
import com.esri.adf.web.data.geometry.GeometryUtil;
import com.esri.adf.web.data.geometry.WebExtent;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPoint;
import com.esri.adf.web.faces.event.MapEvent;
import com.esri.adf.web.faces.event.MapToolAction;
import com.esri.solutions.jitk.commands.FixedZoomAction;

/**
 * Fixed zoom out tool.
 * 
 */
public class FixedZoomOutTool extends FixedZoomAction implements MapToolAction {
	private static final long serialVersionUID = 1960168071579576532L;
	private static final Logger _logger = LogManager.getLogger(FixedZoomOutTool.class);
	
	/**
	 * Zooms out at the passed center point
	 */
	public void zoomOutAtPoint(MapEvent event) {
		_logger.debug("Zoom out at center point initiated by user");
		WebMap webMap = getWebContext().getWebMap();

		WebGeometry webGeo = event.getWebGeometry();
		webGeo = webGeo.toMapGeometry(webMap);
		WebPoint webExtentCenterPoint = (WebPoint) webGeo;
		
		WebExtent currExtent = webMap.getCurrentExtent();
		double zoomFactor = getZoomFactor();
		WebExtent newExtent = getScaledExtent(currExtent, 1d / zoomFactor, webExtentCenterPoint);
		WebExtent fullExtent = webMap.getFullExtent();
		
		if (GeometryUtil.inside(newExtent, fullExtent)) {
			_logger.debug("Next extent " + newExtent + " with full extent " + fullExtent+ ", zooming");
			webMap.setCurrentExtent(newExtent);
		} else {
			_logger.debug("Next extent " + newExtent + " with full extent " + fullExtent+ ", zooming");
			webMap.setCurrentExtent(fullExtent);
		}		
		
		getWebContext().refresh(webMap);
	}

	public void execute(MapEvent mapEvent) throws Exception {
		zoomOutAtPoint(mapEvent);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?