Server Java----空間クエリーとハイライト表示の実装
ESRIはJAVA ADFで多くの仕事をしており、その重要な部分はWebQueryである.WebQueryは、ArcGISServerとArcIMSをクエリーし、ADF側で地図をレンダリングするために使用されます.たとえば、ハイライト表示したり、画像でレンダリングしたりします.
簡単な選択を見て、選択結果をハイライト表示する開発プロセスを見てみましょう.
実際に選択するには、2つの方法があります.1つ目は空間選択、2つ目はテキストクエリーです.この2つの選択は可能です.ESRIでは、同じインタフェースから継承されている2つのクラスのクエリも提供されています.
このクラスはIdentifyCriteria、TextCriteria、インタフェースはQueryCriteria、QueryCriteriaは最大リターンレコード、レコードの詳細を返すかどうかなどの設定ができます.名前に示すように、IdentifyCriteriaはデータの空間クエリーに使用されます.このクラスの使用方法を見てみましょう.
geomは、クライアントがトリガしたMapEventクラスから入手できるWebGeometryクラスのインスタンスです.
このIdentifyCriteriaを作成してから、クエリーを行うことができます.クエリーはWebQueryで完了するので、まずWebQueryを取得します.
みんなはfaces-config.xmlを開けて、mapContextの中でqueryがなくて、もしあるならば、上のコードでWebQueryを得ることができます.
WebQueryを入手すれば、大いにやることができ、以下の方法で空間検索を行うことができます.
icはIdentifyCriteriaであり、lyrListはクエリーターゲット層のリストであり、ターゲット層は1つであってもよいし、複数であってもよい.例えば、以下の方法で調べられるすべてのレイヤを得ることができる.
もちろん、すべてのレイヤーを調べたくない場合は、ユーザーにクエリーが必要なレイヤーを選択させることもできます.
クエリーが返す結果として、結果がリストであることがわかります.リストの中には何が入っていますか.リスト内のオブジェクトはQueryResultです.
それぞれのQueryResultをループしてハイライト表示できます.
Highlightはどんな色を採用して、どんな標識がハイライト表示を行って、私たちが自分でコントロールすることができて、私の個人的な好みは赤で、張芸謀と同じレベルで、私たちは表示をqueryの中に加えることができます:
同様に、線の色とポリゴンの色を設定できます.これにより、必要な色でハイライト表示できます.
もちろんQueryResultの機能はハイライト表示だけでなく、クエリー結果セットの各フィールドの値を得ることができ、result.getDetails()メソッドでMapを得ることができ、すべての結果のフィールド名とフィールド値が含まれています.
最後に、上記のすべてのコードはArcGIS ServerおよびArcIMSに対して同様に適用され、Enjoyについて説明する.
簡単な選択を見て、選択結果をハイライト表示する開発プロセスを見てみましょう.
実際に選択するには、2つの方法があります.1つ目は空間選択、2つ目はテキストクエリーです.この2つの選択は可能です.ESRIでは、同じインタフェースから継承されている2つのクラスのクエリも提供されています.
このクラスはIdentifyCriteria、TextCriteria、インタフェースはQueryCriteria、QueryCriteriaは最大リターンレコード、レコードの詳細を返すかどうかなどの設定ができます.名前に示すように、IdentifyCriteriaはデータの空間クエリーに使用されます.このクラスの使用方法を見てみましょう.
IdentifyCriteria ic = new IdentifyCriteria(geom);
geomは、クライアントがトリガしたMapEventクラスから入手できるWebGeometryクラスのインスタンスです.
このIdentifyCriteriaを作成してから、クエリーを行うことができます.クエリーはWebQueryで完了するので、まずWebQueryを取得します.
WebQuery query = (WebQuery) context.getAttribute("query");
みんなはfaces-config.xmlを開けて、mapContextの中でqueryがなくて、もしあるならば、上のコードでWebQueryを得ることができます.
WebQueryを入手すれば、大いにやることができ、以下の方法で空間検索を行うことができます.
List results=query.query(ic,lyrList);
icはIdentifyCriteriaであり、lyrListはクエリーターゲット層のリストであり、ターゲット層は1つであってもよいし、複数であってもよい.例えば、以下の方法で調べられるすべてのレイヤを得ることができる.
public ArrayList getQueryLayers(){
if(layers != null) return layers;
layers= new ArrayList();
WebQuery wQuery = this.context.getWebQuery();
WebLayerInfo layerInfo = null;
if(wQuery != null){
List layerList = wQuery.getQueryLayers();
for(Iterator iter = layerList.iterator(); iter.hasNext(); ) {
Object item = (Object) iter.next();
if(item instanceof WebLayerInfo){
layerInfo = (WebLayerInfo)item;
layers.add(new SelectItem(layerInfo, layerInfo.getName()));
}
}
}
return layers;
}
もちろん、すべてのレイヤーを調べたくない場合は、ユーザーにクエリーが必要なレイヤーを選択させることもできます.
クエリーが返す結果として、結果がリストであることがわかります.リストの中には何が入っていますか.リスト内のオブジェクトはQueryResultです.
それぞれのQueryResultをループしてハイライト表示できます.
for(int ii=0;ii<results.size();ii++){
result = (QueryResult) results.get(ii);
result.highlight();
}
Highlightはどんな色を採用して、どんな標識がハイライト表示を行って、私たちが自分でコントロールすることができて、私の個人的な好みは赤で、張芸謀と同じレベルで、私たちは表示をqueryの中に加えることができます:
WebSimpleMarkerSymbol markers = query.getPointGraphicSymbol();
if (markers == null ) {
markers = new WebSimpleMarkerSymbol();
query.setPointGraphicSymbol(markers);
}
markers.setAntialiasing(true);
markers.setColor("255,0,0");
markers.setOutlineColor("255,0,0");
markers.setMarkerType(WebSimpleMarkerSymbol.CIRCLE);
同様に、線の色とポリゴンの色を設定できます.これにより、必要な色でハイライト表示できます.
もちろんQueryResultの機能はハイライト表示だけでなく、クエリー結果セットの各フィールドの値を得ることができ、result.getDetails()メソッドでMapを得ることができ、すべての結果のフィールド名とフィールド値が含まれています.
最後に、上記のすべてのコードはArcGIS ServerおよびArcIMSに対して同様に適用され、Enjoyについて説明する.