レイヤーのシンボルを動的に変更するための推奨される方法は何ですか? 私の Web アプリは REST API を介してマップ サービスを利用していますが、SOAP API や ArcObjects (.NET) を使用してもかまいません。
3 に答える
バージョン 2.0 の時点で、フィーチャ レイヤーは ESRI JS API に存在していました。
ESRI API サンプルは、割り当てられた一意の値およびクラス ブレーク レンダラーを介して、フィーチャ レイヤーを介してダイナミック マップ サービスのデフォルト シンボルを変更するために使用されるレンダラーの使用を示しています。フィーチャ レイヤーはグラフィックス レイヤー オブジェクトから派生するため、異なる方法でレンダリングされます (クライアント側とサービスのオンザフライ イメージ/タイル エクスポート)。それでも、開発者が定義したフィールド/値に基づいてレイヤーの外観を変更することはできます。
次のダイナミック マップ サービスでの一意の値のレンダリングの使用に注意してください。
例 (コード) http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/renderer_unique_value.html
ライブ サンプル http://developers.arcgis.com/en/javascript/samples/renderer_unique_value/
var defaultSymbol = new esri.symbol.SimpleFillSymbol().setStyle(
esri.symbol.SimpleFillSymbol.STYLE_NULL);
defaultSymbol.outline.setStyle(esri.symbol.SimpleLineSymbol.STYLE_NULL);
//create renderer
var renderer = new esri.renderer.UniqueValueRenderer(defaultSymbol, "SUB_REGION");
//add symbol for each possible value
renderer.addValue("Pacific", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 0, 0, 0.5])));
renderer.addValue("Mtn", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 255, 0, 0.5])));
renderer.addValue("N Eng", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 0, 255, 0.5])));
renderer.addValue("S Atl", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 0, 255, 0.5])));
renderer.addValue("Mid Atl", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 255, 255, 0.75])));
renderer.addValue("E N Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 255, 255, 0.5])));
renderer.addValue("W N Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([255, 255, 0, 0.5])));
renderer.addValue("E S Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([127, 127, 127, 0.5])));
renderer.addValue("W S Cen", new esri.symbol.SimpleFillSymbol().setColor(new dojo.Color([0, 0, 0, 0.5])));
var featureLayer = new esri.layers.FeatureLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/1", {
mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
outFields: ["SUB_REGION"]
});
featureLayer.setRenderer(renderer);
map.addLayer(featureLayer);
REST APIはステートレスであるため、RESTfulサービスへの接続を介してシンボルを変更することはできません(ただし、グラフィックレイヤーを使用して、異なる方法で表示する機能を動的に抽出できます)。
SOAP APIを使用して(Web ADFを介して、または単にSOAPを介して手動でサービスに接続する)、そこでシンボルを変更すると、幸運が得られます。これについての詳細は、ここで入手できます:http: //forums.esri.com/Thread.asp?c=158&f=2421&t=266974
マップ サービス自体でシンボルの外観を変更する場合は、WebADF を使用するか、SOAP API を使用する独自のサービスを作成する必要があります。シンボルを変更して画像を生成する実際のビットは非常に簡単ですが、難しいのは、開いたレイヤーを取得してそれを使用することです。マイケルが提案するように気にしないか、グラフィックスをクライアントに戻し、OpenLayers を使用して必要に応じて描画します。グラフィックスの下に表示されないように、レイヤーをマップ サービスで非表示に設定することもできます。