📄 agstoclayercontent.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 + -