⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pantool.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
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;

public class PanTool extends com.esri.adf.web.faces.event.PanToolAction {
	private static final Logger _logger = LogManager.getLogger(PanTool.class);
	private static final long serialVersionUID = 2290440123550117754L;

	public void pan(MapEvent event) throws Exception {
		_logger.debug("Pan tool invoked");
		
		try {
			WebMap webMap = event.getWebContext().getWebMap();
			
			WebExtent currExtent = webMap.getCurrentExtent();
			WebExtent fullExtent = webMap.getFullExtent();		
			
			WebGeometry webGeo = event.getWebGeometry();
			webGeo = webGeo.toMapGeometry(webMap);
			WebPoint centerPoint = (WebPoint) webGeo;	
			WebExtent newExtent = getExtent(currExtent, centerPoint);
	
			if (GeometryUtil.inside(newExtent, fullExtent)) {
				_logger.debug("Next extent " + newExtent + " within full extent " + fullExtent+ ", zooming to new extent");
				super.execute(event);
			} else {
				_logger.debug("Next extent " + newExtent + " NOT within full extent " + currExtent+ ", zooming to current extent");
				webMap.setCurrentExtent(currExtent);
			}
			
			event.getWebContext().refresh();
		} catch (Exception ex) {
			_logger.error("Could not pan map", ex);
		}
	}

	public void execute(MapEvent mapEvent) throws Exception {
		pan(mapEvent);
	}
	
	protected final WebExtent getExtent(WebExtent currentExtent, WebPoint webExtentCenterPoint) {
		double deltaX = currentExtent.getWidth() / 2d;
		double deltaY = currentExtent.getHeight() / 2d;
		
		WebPoint upperLeft = new WebPoint(
				webExtentCenterPoint.getX() - deltaX,
				webExtentCenterPoint.getY() - deltaY);
		WebPoint lowerRight = new WebPoint(
				webExtentCenterPoint.getX() + deltaX, 
				webExtentCenterPoint.getY() + deltaY);

		return new WebExtent(upperLeft, lowerRight);
	}	
}

⌨️ 快捷键说明

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