您的位置:首页 > 编程语言 > Java开发

ArcGIS Server Java ADF 案例教程 30

2009-06-24 00:53 537 查看
GraphicRenderer
上一小节我们知道怎样给GraphicElement指定WebSymbol来进行符号化,这里我们讲讲如何对WebGraphics进行设置,让它可以按照一定的规则自动将前面查询到的结果进行不同的渲染。

WebGraphis有个addRenderer方法,它可以添加GraphicRenderer
对象,这个GraphicRenderer对象是几何对象的渲染器,它有一个renderer属性用以存放真正的符号渲染接口——WebRenderer,因此,它可以遵循某些规则对几何对象的集合进行渲染。

有这几个类实现了WebRenderer接口:WebSimpleRenderer 、WebClassBreaksRenderer、WebUniqueValueRenderer。看到这些名称你是不是感觉很熟悉?下面我们就通过WebUniqueValueRenderer来实现对查询结果中所有的QueryResult进行按值渲染。

ArrayList geometries = new
ArrayList();

ArrayList values = new
ArrayList();

for
(int
i = 0; i < listQueryResult.size(); i++)

{

QueryResult queryResult = listQueryResult.get(i);

geometries.add(queryResult.getHighlightGeometry());

values.add(queryResult.getDetails().get("POP_RANK").toString());

}

WebUniqueValueRenderer wuvr = new
WebUniqueValueRenderer();

wuvr.setField1("POP_RANK");

wuvr.setDefaultSymbol(symbol);

ArrayList infos = new
ArrayList(2);

WebSimpleMarkerSymbol s1 = new
WebSimpleMarkerSymbol();

s1.setColor("0,0,255");

s1.setWidth(25);

s1.setMarkerType(WebSimpleMarkerSymbol.CIRCLE
);

WebUniqueValueInfo uvi = new
WebUniqueValueInfo("", "", "1", s1);

infos.add(uvi);

WebSimpleMarkerSymbol s2 = new
WebSimpleMarkerSymbol();

s2.setColor("0,255,0");

s2.setWidth(25);

s2.setMarkerType(WebSimpleMarkerSymbol.CIRCLE
);

uvi = new
WebUniqueValueInfo("", "", "2", s2);

infos.add(uvi);

wuvr.setUniqueValueInfos(infos);

GraphicRenderer graphicRenderer = new
GraphicRenderer();

graphicRenderer.setRenderer(wuvr);

graphicRenderer.setGeometries(geometries);

graphicRenderer.setValues(values);

webGraphics.addRenderer(graphicRenderer);

webContext.refresh();

从上面的代码我们可以看到,我们首先需要做的准备工作就是遍历QueryResult的集合,生成几何对象的集合geometries和需要分值渲染的值的集合values;然后,我们需要一个WebUniqueValueRenderer对象来定义分值渲染的规则,比如某值需要渲染成某符号等等;当这些准备工作完成以后,GraphicRenderer就登场了,前面的准备工作都会被放到GraphicRenderer中去,再把这个GraphicRenderer对象添加到WebGraphics后,刷新WebContext的同时ADF就会根据前面定义的规则,将这些查询结果分别渲染成不同的符号并添加到地图上。

下面是这个分值渲染的效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: