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

📄 mapzoomphaselistener.java

📁 采用java实现的arcgis server程序
💻 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 + -