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