2009年5月14日星期四

ArcGIS Server Java ADF 案例教程 27

四 QueryResult

上面几个小节让我们知道了不同的查询功能应该怎么去实现,每个查询中都返回了QueryResult对象的集合。这个小节我们就来详细说说QueryResult对象。

QueryResult对象是一个查询结果,当然,这是一个服务器端对象,然而在服务器上QueryResult并不仅仅是一个记录,而是一个可以和Map互动,可以高亮显示、移除、缩放到的一个对象。

比如当我们做完查询以后,想在地图上显示所有的结果要素,那么,调用QueryResult的highlight方法就可以做到:
webContext.getWebGraphics().clearGraphics();
for (int i = 0; i <>
{
QueryResult queryResult = listQueryResult.get(i);
queryResult.highlight();

}
webContext.refresh();


面的代码遍历了查询结果中所有的QueryResult对象,调用每个对象的highlight方法使其在地图上高亮显示,让我们看一下执行的结果:
图 18 高亮查询结果

高亮的这些元素事实上是将这些查询结果以Graphic的形式添加到Map中的。ADF的Graphic通常用于表现临时的、动态生成的业务数据,下面一章我们会马上去看Graphic的来龙去脉。

6 条评论:

匿名 说...

牛魔大哥:请教个问题,我想把高亮的颜色自定义一下,按照cj的教程试了不行,
markers.setAntialiasing(true);
markers.setColor("255,0,0");
markers.setOutlineColor("255,0,0");
markers.setMarkerType(WebSimpleMarkerSymbol.CIRCLE);
webQuery.setPointGraphicSymbol(markers);

你能不能讲下这方面的内容,比如图片标注之类的

牛魔王 说...

WebSimpleMarkerSymbol symbol = new WebSimpleMarkerSymbol();
symbol.setMarkerType(WebSimpleMarkerSymbol.STAR);
symbol.setAntialiasing(true);
symbol.setTransparency(0.7);
symbol.setColor("255,255,0");
symbol.setOutlineColor("255,0,0");

for (int i = 0; i < listQueryResult.size(); i++)
{
QueryResult queryResult = listQueryResult.get(i);

GraphicElement element = new GraphicElement();
element.setGeometry(queryResult.getHighlightGeometry());
element.setSymbol(symbol);
webGraphics.addGraphics(element);
}

Unknown 说...

牛魔王你好,我想请问,如果我是通过sde查询出来的结果
如:Cursor lip_Cursor = SdeDatasource.getInstance().openCursor(tableName, "OBJECTID =('"+objectID+"')");
IRow lip_Row = lip_Cursor.nextRow();
查询出来一个结果,如一条公路,我该如何在前端地图上高亮显示它呢?

牛魔王 说...

调AO了?把AO对象转到WebGeometry,具体查文档

匿名 说...

牛魔大哥:现在只能通过代理访问,能否在其他地方开辟一个,我们等着您的更新啊

牛魔王 说...

端午节以后还不正常的话就在别的地方再开一个