📄 mapinformationrenderer.java
字号:
package com.esri.solutions.jitk.web.faces.renderkit.xml.ajax;
import java.text.DecimalFormat;
import org.apache.log4j.Logger;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.w3c.dom.Element;
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebMap;
import com.esri.adf.web.faces.component.MapControl;
import com.esri.adf.web.faces.renderkit.xml.ajax.AJAXRenderer;
import com.esri.adf.web.util.XMLUtil;
/**
* AJAXRenderer to render current extent & scale of map
*/
public class MapInformationRenderer implements AJAXRenderer {
private static Logger _logger = Logger.getLogger(MapInformationRenderer.class.getName());
@SuppressWarnings("unchecked")
public Class getControlClass() {
return MapControl.class;
}
public Object getOriginalState(UIComponent component) {
MapControl mapControl = (MapControl) component;
WebMap webMap = mapControl.getWebMap();
return webMap.getCurrentExtent();
}
private String convertScale(double scale){
DecimalFormat df = new DecimalFormat("###,###,###,###");
String str = df.format(scale);
String scaleStr = "1:" + str;
if ((scale < 1) && (scale != 0.0)) {
scale = 1 / scale;
str = df.format(scale);
scaleStr = df.format(str) + ":1";
} else if (scale == 0.0) {
_logger.error("Map scale reported as zero");
}
return scaleStr;
}
private String getDescription(String disp){
try {
String vstart = "\"";
String[] vs = disp.split(vstart);
return vs[1];
} catch(Exception e) {
_logger.error("Not a jitk task element", e);
}
return null;
}
public void renderAjaxResponse(FacesContext facesContext, UIComponent component, Object state, boolean isEventSource, Element parentElement) {
MapControl mapControl = (MapControl) component;
WebMap webMap = mapControl.getWebMap();
try {
WebContext webContext = webMap.getWebContext();
//render jitk-map-information tag
Element rootElement = XMLUtil.createElement("jitk-map-information", null, parentElement);
//render information about map's extent
String def = webContext.getSpatialReferenceDefinitionString().replaceAll("_", " ");
String desc = getDescription(def);
XMLUtil.createElement("map-id", mapControl.getClientId(facesContext), rootElement);
XMLUtil.createElement("map-projection", def, rootElement);
XMLUtil.createElement("map-projection-name", desc, rootElement);
XMLUtil.createElement("map-scale", convertScale(webMap.getMapScale()), rootElement);
} catch (Exception e) {
_logger.warn("Unable to encode xml.", e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -