• 検索結果がありません。

フィーチャ レイヤの追加方法

49

50 Where プロパテゖは、指定したマップ サービス レ゗ヤに適用するフゖルタ設定を定義します。Where プ ロパテゖを設定することで、フゖルタ条件式に一致する属性をもつフゖーチャのみが描画されます。以下 の XAML に示すフゖルタ設定は、フゖーチャ レ゗ヤの、POP1990 フゖールド内の値が 75000 より大 きいフゖーチャのみが描画されるように定義しています。これは、1990 年の人口が 75000 人よりも多い 都市のみを検索します。指定したレ゗ヤのすべてのフゖーチャを表示したい場合は、フゖルタ設定を

「“1=1”」 のように、常に True になるように定義します。

<esri:Map x:Name="MyMap" Extent="-130,10,-70,60" >

<esri:Map.Layers>

<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"

Url="http://server.arcgisonline.com/ArcGIS/rest/

services/ESRI_StreetMap_World_2D/MapServer"/>

<esri:FeatureLayer ID="MyFeatureLayer"

Url="http://sampleserver1.arcgisonline.com/ArcGIS/

rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0"

Where="POP1990 > 75000" >

</esri:FeatureLayer>

</esri:Map.Layers>

</esri:Map>

Renderer プロパテゖは、レ゗ヤ内のすべてのフゖーチャに適用するレンダラを定義します。このプロパ テゖを指定するためには、最初に XAML にシンボルとレンダラを追加しておく必要があります。

シンボルとレンダラはリソースとして宣言することができ、これらのリソースは一般的に、ルート レ゗ゕ ウト要素(デフォルトでは Grid)のリソースとして追加します。以下の Silverlight ゕプリケーションで は、緑色のひし形のマーカー シンボルとシンボルを使用するレンダラを追加するために、Map コントロ ールを記述する前に以下の XAML コードを追加しています。

<Grid.Resources>

<esri:SimpleMarkerSymbol x:Key="MyMarkerSymbol"

Color="Green" Style="Diamond" Size="14" />

<esri:SimpleRenderer x:Key="MySimpleRenderer"

Symbol="{StaticResource MyMarkerSymbol}" />

</Grid.Resources>

51 これで、FeatureLayer にレンダラを使用することができます。「x:Key」属性を使用して Renderer プロ パテゖにレンダラをバ゗ンドします。

<Grid.Resources>

<esri:SimpleMarkerSymbol x:Key="MyMarkerSymbol" Color="Green"

Style="Diamond" Size="14" />

<esri:SimpleRenderer x:Key="MySimpleRenderer"

Symbol="{StaticResource MyMarkerSymbol}" />

</Grid.Resources>

<esri:Map x:Name="MyMap" Extent="-130,10,-70,60" >

<esri:Map.Layers>

<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"

Url="http://server.arcgisonline.com/ArcGIS/rest/

services/ESRI_StreetMap_World_2D/MapServer"/>

<esri:FeatureLayer ID="MyFeatureLayer"

Url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/

services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0"

Where="POP1990 > 75000"

Renderer="{StaticResource MySimpleRenderer}" >

</esri:FeatureLayer>

</esri:Map.Layers>

</esri:Map>

52 ゕプリケーションを実行すると、1990 年の人口が 75000 人よりも多いゕメリカの都市が緑色のひし形の シンボルで表示されます。

上述した方法で都市を表示するには、2 つの問題があります。1 つ目は、都市のシンボルが重なっていて、

都市がいくつ表示されているかを確認することができないエリゕがあることです。2 つ目は、多くのグラ フゖックが表示されていることです。ゕプリケーションが実行されているコンピュータの処理能力にもよ りますが、グラフゖックの描画パフォーマンスに影響が出る可能性があります。

53 これらの問題は、フゖーチャ レ゗ヤの ClusterFeatures プロパテゖを有効(True)にすることによって 軽減することができます。フゖーチャのクラスタ化についての詳細な情報については、Clustering のトピ ック(英語)をご参照ください。ClusterFeatures プロパテゖを有効にすることで複数のポ゗ント グラフ ゖックをより少ないポ゗ント グラフゖックにまとめて、そのポ゗ント グラフゖックが表すフゖーチャの 数を表示します。以下のコードでは例として上述したコードにクラスタリングを適用しています。

<Grid.Resources>

<esri:SimpleMarkerSymbol x:Key="MyMarkerSymbol"

Color="Green" Style="Diamond" Size="14" />

<esri:SimpleRenderer x:Key="MySimpleRenderer"

Symbol="{StaticResource MyMarkerSymbol}" />

</Grid.Resources>

<esri:Map x:Name="MyMap" Extent="-130,10,-70,60" >

<esri:Map.Layers>

<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"

Url="http://server.arcgisonline.com/ArcGIS/rest/

services/ESRI_StreetMap_World_2D/MapServer"/>

<esri:FeatureLayer ID="MyFeatureLayer"

Url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/

services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0"

Where="POP1990 > 75000"

Renderer="{StaticResource MySimpleRenderer}" >

<esri:FeatureLayer.Clusterer>

<esri:FlareClusterer

FlareBackground="#99FF0000"

FlareForeground="White"

MaximumFlareCount="9" />

</esri:FeatureLayer.Clusterer>

</esri:FeatureLayer>

</esri:Map.Layers>

</esri:Map>

54 クラスタ適用後のゕプリケーションの Cities レ゗ヤは以下のように表示されます。

フゖーチャ レ゗ヤでは、どのフゖールドをレ゗ヤのフゖーチャ(グラフゖック)に含めるかを指定するこ ともできます。指定されたフゖールドに対応する情報がフゖーチャ レ゗ヤを含むマップ サービス レ゗ヤ から与えられます。フゖーチャに含めるフゖールドは、OutFields プロパテゖに文字列として指定します。

XAML コードに文字列を指定するには、最初に XML 名前空間を String クラスを含む CLR 名前空間を 追加する必要があります。このクラスは、mscorlib ゕセンブリの System 名前空間に含まれています。

以下に示すように XML 名前空間を追加します。

<UserControl x:Class="SilverlightApp.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:esri="clr-namespace:ESRI.ArcGIS.Client;assembly

=ESRI.ArcGIS.Client"

xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbols

;assembly=ESRI.ArcGIS.Client"

xmlns:sys="clr-namespace:System;assembly=mscorlib">

55 以下では CITY_NAME と POP1990 フゖールドを含めるために、OutFields プロパテゖを以下のように 指定します。ここで指定されたフゖールドの値は、MapTips やその他のデータ コントロール(例:

DataGrid)に Silverlight データ バ゗ンデゖング機能を利用してバ゗ンドすることによって表示すること ができます。

<esri:SimpleMarkerSymbol x:Key="MyMarkerSymbol"

Color="Green" Style="Diamond" Size="14" />

<esri:SimpleRenderer x:Key="MySimpleRenderer"

Symbol="{StaticResource MyMarkerSymbol}" />

</Grid.Resources>

<esri:Map x:Name="MyMap" Extent="-130,10,-70,60" >

<esri:Map.Layers>

<esri:ArcGISTiledMapServiceLayer ID="StreetMapLayer"

Url="http://server.arcgisonline.com/ArcGIS/rest/

services/ESRI_StreetMap_World_2D/MapServer"/>

<esri:FeatureLayer ID="MyFeatureLayer"

Url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/

services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0"

Where="POP1990 > 75000"

Renderer="{StaticResource MySimpleRenderer}" >

<esri:FeatureLayer.Clusterer>

<esri:FlareClusterer

FlareBackground="#99FF0000"

FlareForeground="White"

MaximumFlareCount="9" />

</esri:FeatureLayer.Clusterer>

<esri:FeatureLayer.OutFields>

<sys:String>CITY_NAME</sys:String>

<sys:String>POP1990</sys:String>

</esri:FeatureLayer.OutFields>

</esri:FeatureLayer>

</esri:Map.Layers>

</esri:Map>

56