📄 mapzoomphaselistener.java
字号:
/*
* Copyright (c) 2008 ESRI
*
* All rights reserved under the copyright laws of the United States
* and applicable international laws, treaties, and conventions.
*
* You may freely redistribute and use this sample code, with or
* without modification, provided you include the original copyright
* notice and use restrictions.
*
* See use restrictions at <install>/ArcGIS/java/samples/userestrictions.
*/
package com.esri.adf.sample.attribute;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebMap;
import com.esri.adf.web.data.geometry.WebExtent;
import com.esri.adf.web.faces.component.MapControl;
import com.esri.adf.web.faces.renderkit.xml.ajax.AJAXResponseRenderer;
import com.esri.adf.web.faces.renderkit.xml.ajax.AJAXUtil;
import java.util.Map;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import org.w3c.dom.Document;
/*
* PhaseListener that sets the current map extent to the extent parameters in the incoming request.
*/
public class MapZoomPhaseListener implements PhaseListener {
private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(com.esri.adf.sample.attribute.MapZoomPhaseListener.class.getName());
// parameter names expected in request
private static final String MAP_ZOOM = "mapZoom";
private static final String FORM_ID = "formId";
private static final String MAP_ID = "mapId";
// implementation: This PhaseListener must be executed in the JSF's APPLY_REQUEST_VALUES phase
public PhaseId getPhaseId() {
return PhaseId.APPLY_REQUEST_VALUES;
}
// implementation: No processing
public void beforePhase(@SuppressWarnings("unused") PhaseEvent phaseEvent) {
// do nothing
}
public void afterPhase(PhaseEvent phaseEvent) {
// Zooms the map to a certain extent based on the input extent values.
FacesContext facesContext = phaseEvent.getFacesContext();
ExternalContext externalContext = facesContext.getExternalContext();
Map<?, ?> paramMap = externalContext.getRequestParameterMap();
// verify if request is to be processed by this PhaseListener
if (!MAP_ZOOM.equals(paramMap.get(MAP_ZOOM)))
return;
try {
// get Form from view
UIComponent form = facesContext.getViewRoot().findComponent((String) paramMap.get(FORM_ID));
// get MapControl
MapControl mapControl = (MapControl) form.findComponent((String) paramMap.get(MAP_ID));
// get Map extent
double minX = Double.parseDouble((String) paramMap.get("minX"));
double minY = Double.parseDouble((String) paramMap.get("minY"));
double maxX = Double.parseDouble((String) paramMap.get("maxX"));
double maxY = Double.parseDouble((String) paramMap.get("maxY"));
// get WebMap
WebMap webMap = mapControl.getWebMap();
// get WebContext
WebContext webContext = webMap.getWebContext();
// set event source as map, since operation is to be performed on the map
Vector<String> eventSources = new Vector<String>();
eventSources.add(mapControl.getId());
AJAXResponseRenderer ajaxRenderer = new AJAXResponseRenderer(facesContext, eventSources, form);
// set map's extent
WebExtent extent = new WebExtent(minX, minY, maxX, maxY, webContext.getSpatialReference());
webMap.setCurrentExtent(extent);
// refresh context to update all controls
webContext.refresh();
// render and get AJAX response Document
Document doc = ajaxRenderer.renderResponse(facesContext);
// write the response
AJAXUtil.writeResponse(facesContext, doc);
} catch (Exception e) {
e.printStackTrace();
logger.log(Level.SEVERE, "Unable to render xml", e);
} finally {
// notify Faces Lifecycle
facesContext.responseComplete();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -