📄 graphicsresourcegecollection.java
字号:
package com.esri.solutions.jitk.data.svg.exporter;
import java.util.List;
import java.util.Map;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import com.esri.adf.web.data.GraphicElement;
import com.esri.adf.web.data.graphics.GraphicFeature;
import com.esri.adf.web.data.graphics.GraphicsResource;
import com.esri.adf.web.data.renderer.WebClassBreakInfo;
import com.esri.adf.web.data.renderer.WebClassBreaksRenderer;
import com.esri.adf.web.data.renderer.WebRenderer;
import com.esri.adf.web.data.renderer.WebSimpleRenderer;
import com.esri.adf.web.data.renderer.WebUniqueValueInfo;
import com.esri.adf.web.data.renderer.WebUniqueValueRenderer;
import com.esri.adf.web.data.symbol.WebSymbol;
import com.esri.solutions.jitk.web.data.graphics.MultiGeometryGraphicsLayer;
import com.esri.solutions.jitk.web.data.graphics.MultiGeometryGraphicsResource;
public class GraphicsResourceGECollection extends WebGraphicsGECollection {
private static final Logger _logger = LogManager.getLogger(GraphicsResourceGECollection.class);
protected MultiGeometryGraphicsResource graphicsResource = null;
protected MultiGeometryGraphicsLayer graphicsLayer = null;
public void setGraphicsResourceKey(String resourceKey) {
if(getContext() == null) {
_logger.error("Setting GraphicsResource key failed in GraphicsResourceGECollection. WebContext is not set...");
} else {
try {
graphicsResource = new MultiGeometryGraphicsResource((GraphicsResource) this.getContext().getResourceById(resourceKey));
} catch(NullPointerException ex) {
_logger.error("Setting GraphicsResource key failed in GraphicsResourceGECollection class. See log for more detailes...");
}
}
}
private static WebSymbol getSymbol(WebClassBreaksRenderer wcbr, Map<String, String> attributes) {
try {
if (wcbr == null || attributes == null) return null;
double minRange = wcbr.getMinimumValue();
List<WebClassBreakInfo> infos = wcbr.getClassBreakInfos();
double value = 0D;
String classificationFieldName = wcbr.getField();
String sValue = attributes.get(classificationFieldName).toString();
try {
value = Double.parseDouble(sValue);
} catch (NumberFormatException e) {
return null;
}
double maxRange = 0D;
boolean firstTime = true;
for (WebClassBreakInfo info : infos) {
if (info == null) continue;
maxRange = info.getValue();
if (firstTime && value >= minRange && value <= maxRange)
return info.getSymbol();
else if (value > minRange && value <= maxRange)
return info.getSymbol();
minRange = maxRange;
}
} catch (Exception e) {}
return null;
}
private static WebSymbol getSymbol(WebUniqueValueRenderer wuvr, Map<String, String> attributes) {
try {
if (wuvr == null || attributes == null) return null;
String delimiter = wuvr.getFieldDelimiter();
if (delimiter == null) delimiter = "";
String field1 = wuvr.getField1();
String field2 = wuvr.getField2();
String field3 = wuvr.getField3();
String value1 = attributes.get(field1);
String value2 = attributes.get(field2);
String value3 = attributes.get(field3);
String values = null;
if(value1 != null)
values = value1;
if(value2 != null) {
if(values != null)
values = values + delimiter + value2;
else
values = value2;
}
if(value3 != null) {
if(values != null)
values = values + delimiter + value3;
else
values = value3;
}
if(values == null) return null;
WebSymbol symbol = null;
List<WebUniqueValueInfo> wuvis = wuvr.getUniqueValueInfos();
for(WebUniqueValueInfo info : wuvis) {
if(values.equals(info.getValue())) {
symbol = info.getSymbol();
break;
}
}
return symbol;
} catch (Exception e) {}
return null;
}
private WebSymbol getSymbol(GraphicFeature feature) {
WebSymbol symbol = null;
WebRenderer renderer = graphicsLayer.getRenderer();
if(renderer instanceof WebSimpleRenderer)
symbol = ((WebSimpleRenderer) renderer).getSymbol();
else if (renderer instanceof WebClassBreaksRenderer) {
WebClassBreaksRenderer wcbr = (WebClassBreaksRenderer) renderer;
symbol = getSymbol(wcbr, feature.getAttributes());
if (symbol == null)
symbol = wcbr.getDefaultSymbol();
} else if (renderer instanceof WebUniqueValueRenderer) {
WebUniqueValueRenderer wuvr = (WebUniqueValueRenderer) renderer;
symbol = getSymbol(wuvr, feature.getAttributes());
if (symbol == null)
symbol = wuvr.getDefaultSymbol();
}
return symbol;
}
public GraphicElement get(int i) {
if(graphicsLayer == null)
graphicsLayer = graphicsResource.addLayer(graphicsLayerName);
if(graphicsLayer != null) {
GraphicFeature feature = graphicsLayer.getGraphicsFeatures().get(i);
if(feature != null) {
GraphicElement element = new GraphicElement();
element.setGeometry(feature.getGeometry());
element.setSymbol(getSymbol(feature));
return element;
}
}
return null;
}
public int size() {
if(graphicsLayer == null)
graphicsLayer = graphicsResource.addLayer(graphicsLayerName);
return (graphicsLayer != null) ? graphicsLayer.getGraphicsFeatures().size() : 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -