📄 multigeometrygraphicslayer.java
字号:
/**
*
*/
package com.esri.solutions.jitk.web.data.graphics;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.graphics.GraphicFeature;
import com.esri.adf.web.data.graphics.GraphicsLayer;
import com.esri.adf.web.data.renderer.WebRenderer;
import com.esri.adf.web.data.renderer.WebUniqueValueInfo;
import com.esri.adf.web.data.renderer.WebUniqueValueRenderer;
import com.esri.adf.web.data.symbol.WebSymbol;
/**
* @author vlad2928
*
*/
public class MultiGeometryGraphicsLayer extends GraphicsLayer {
private static final String _fid = "FID";
public MultiGeometryGraphicsLayer() { super(); }
public MultiGeometryGraphicsLayer(String name, boolean visible, WebRenderer renderer, WebRenderer highlightRenderer, String infoTemplate, List<GraphicFeature> graphicFeatures) {}
protected Map<String, String> createAttributes(String fid) {
Map<String, String> map = new LinkedHashMap<String, String>();
map.put(_fid, fid);
return map;
}
public void addGraphicFeature(WebGeometry geometry, WebSymbol symbol, WebSymbol highlightSymbol) {
GraphicFeature feature = new GraphicFeature();
String fid = UUID.randomUUID().toString();
feature.setGeometry(geometry);
feature.setAttributes(createAttributes(fid));
setRenderer(updateRenderer(getRenderer(), fid, symbol));
setHighlightRenderer(updateRenderer(getHighlightRenderer(), fid, highlightSymbol));
super.addGraphicFeature(feature);
}
public GraphicFeature getGraphicFeature(String fid) {
if(fid != null && this.getGraphicsFeatures() != null) {
for (GraphicFeature feature : this.getGraphicsFeatures()) {
if (((String)feature.getAttributes().get(_fid)).equals(fid))
return feature;
}
}
return null;
}
/*
* @return - indicates if feature was removed from the layer
*/
public boolean removeGraphicFeature(String fid) {
GraphicFeature feature = getGraphicFeature(fid);
if(feature != null) {
// Remove feature itself
super.removeGraphicFeature(feature);
// Also remove correspondent UniqueValueInfos from both renderers
setRenderer(updateRenderer(getRenderer(), fid, null));
setHighlightRenderer(updateRenderer(getHighlightRenderer(), fid, null));
return true;
}
return false;
}
public void removeAllGraphicFeatures() {
super.removeAllGraphicFeatures();
setRenderer(updateRenderer(null, null, null));
setHighlightRenderer(updateRenderer(null, null, null));
}
protected WebUniqueValueRenderer newUniqueValueRenderer() {
WebUniqueValueRenderer uvr = new WebUniqueValueRenderer();
//uvr.setDefaultLabel("Default Label");
//uvr.setDefaultSymbol(defaultMarkerSymbol);
uvr.setField1(_fid);
uvr.setField2(null);
uvr.setField3(null);
uvr.setFieldDelimiter(null);
return uvr;
}
protected WebUniqueValueRenderer newHighlightUniqueValueRenderer() {
WebUniqueValueRenderer uvr = new WebUniqueValueRenderer();
//uvr.setDefaultLabel("Default Label");
//uvr.setDefaultSymbol(defaultMarkerSymbol);
uvr.setField1(_fid);
uvr.setField2(null);
uvr.setField3(null);
uvr.setFieldDelimiter(null);
return uvr;
}
protected WebUniqueValueInfo getWebUniqueValueInfo(WebUniqueValueRenderer uvr, String fid) {
if(uvr != null && uvr.getUniqueValueInfos() != null && fid != null) {
for(java.util.Iterator<WebUniqueValueInfo> i = uvr.getUniqueValueInfos().iterator(); i.hasNext();) {
WebUniqueValueInfo uvi = i.next();
if(uvi.getValue().equals(fid))
return uvi;
}
}
return null;
}
protected WebUniqueValueRenderer updateRenderer(WebRenderer renderer, String fid, WebSymbol symbol) {
WebUniqueValueRenderer uvr = null;
if(renderer == null || !(renderer instanceof WebUniqueValueRenderer))
uvr = newUniqueValueRenderer();
else
uvr = (WebUniqueValueRenderer) renderer;
if(uvr.getUniqueValueInfos() == null)
uvr.setUniqueValueInfos(new ArrayList<WebUniqueValueInfo>());
List<WebUniqueValueInfo> infos = uvr.getUniqueValueInfos();
if(fid != null && fid.length() > 0) {
// remove from renderer if symbol is null
if(symbol == null) {
WebUniqueValueInfo uvi = getWebUniqueValueInfo(uvr, fid);
if(uvi != null) infos.remove(uvi);
// add to renderer
} else {
infos.add(new WebUniqueValueInfo(_fid, "Feature ID", fid, symbol));
uvr.setUniqueValueInfos(infos);
}
}
return uvr;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -