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

📄 agstoclayercontent.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.web.ags.data;

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

import com.esri.adf.web.ags.data.AGSMapResource;
import com.esri.adf.web.ags.util.AGSUtil;
import com.esri.adf.web.data.WebContext;
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.faces.event.TocEvent;
import com.esri.arcgisws.EnvelopeN;
import com.esri.solutions.jitk.common.contextmenus.ExtendedAGSTocLayerContent;

public class AGSTocLayerContent extends ExtendedAGSTocLayerContent {
	private static final long serialVersionUID = -7685893237291392747L;
	private static final Logger _logger = LogManager.getLogger(AGSTocLayerContent.class);
	
	@Override
	public void handleContextMenuEvent(String contextMenuItemValue, TocEvent args) throws Exception {
		if (AGSTocLayerContent.ZOOM_TO_LAYER_CONTEXT_MENU_ITEM.equals(contextMenuItemValue)) {
			if (_logger.isDebugEnabled()) {
				_logger.debug("User TOC Action Zoom To Layer context menu, calculating extent");
			}			
			
			AGSMapResource agssrc = tocFunc.getResource();
		    EnvelopeN layerExtent = (EnvelopeN) tocFunc.getMapFunctionality().getLayerInfo(layerDesc.getLayerID()).getExtent();
		    
		    if (_logger.isDebugEnabled()) {
		    	_logger.debug("Layer Extent: " + layerExtent);
		    }
		    
		    WebContext wContext = agssrc.getWebContext();
		    
		    if (isExtentInHorizon(wContext, layerExtent)){
		    	_logger.debug("Layer extent is within full extent");
		    	super.handleContextMenuEvent(contextMenuItemValue, args);
		    } else {
		    	_logger.debug("Layer extent is NOT full extent");
		    	WebMap wMap = wContext.getWebMap();
		        
		  		//Calculate new current extent given map aspect ratio so that
	    		//full extent is not exceeded by ADF when adjusting current extent
	    		//to map.
				com.esri.solutions.jitk.web.data.geometry.WebExtent newExt = 
					new com.esri.solutions.jitk.web.data.geometry.WebExtent(wMap.getFullExtent());
				newExt = newExt.getAdjustedExtent(wMap.getWidth(), wMap.getHeight());		        
		        
		        if (_logger.isDebugEnabled()) {
		        	_logger.debug("Setting re-aspected extent to: " + newExt);
		        }
				
		        wMap.setCurrentExtent(newExt);
		        agssrc.getWebContext().refresh();   	
		    }
		     
		} else {
			if (_logger.isDebugEnabled()) {
				_logger.debug("User TOC Action NOT Zoom To Layer context menu, delegating action to ADF");
			}
			
			super.handleContextMenuEvent(contextMenuItemValue, args);
		}
	}
	
	protected boolean isExtentInHorizon(WebContext wContext, EnvelopeN agsExtent) {
		WebGeometry wGeo = AGSUtil.fromAGSGeometry(agsExtent);
		WebGeometry wProjectedGeo = wGeo.project(wContext.getSpatialReference());
		WebExtent wFullExtent = wContext.getWebMap().getFullExtent();
		
		if (_logger.isDebugEnabled()) {
			_logger.debug("Layer Extent Coordinate System: " + wGeo.getSpatialReference());
			_logger.debug("Layer Extent (Projected): " + wProjectedGeo);
			_logger.debug("Full Extent Coordinate System: " + wFullExtent.getSpatialReference());			
			_logger.debug("Full Extent: " + wFullExtent);
		}
		
		return GeometryUtil.inside(wProjectedGeo, wFullExtent);
	}
}

⌨️ 快捷键说明

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