このトピックは、 XamGeographicMap™ コントロールの GeographicHighDensityScatterSeries 系列タイプの追加と構成についての情報を提供します。
このトピックをより理解するために、以下のトピックを参照することをお勧めします。
このトピックは、以下のセクションで構成されます。
XamGeographicMap コントロールの GeographicHighDensityScatterSeries 系列を使用すると、数百から数百万のデータ ポイントから成る散布図データを最短の読み込み時間でバインドして表示できます。相当数のデータ ポイントがあるため、シリーズではフルサイズのマーカーに対して散布データを小さな点として表示し、領域にはデータポイントの集合を表す高い色密度を使用した大半のデータを表示します。
以下の画像は、XamGeographicMap コントロールの GeographicHighDensityScatterSeries 系列のプレビューです。マップはオーストラリアの人口密度を表す数千のデータ ポイントにバインドされます。大量のデータ ポイントを含むマップのプロット領域は凝縮された赤色のピクセルによって表します。少量のデータ ポイントを含む領域は青色のピクセルによって表します。
XamGeographicMap コントロールの散布シリーズの他のタイプと同様、 GeographicHighDensityScatterSeries には、データ バインディングのための ItemsSource プロパティがあります。このプロパティは、 IEnumerable インターフェイスを実装するオブジェクトにバインドできます。
また、項目ソースの各項目は、地理経度および緯度を表す 2 つのデータ列があります。 LongitudeMemberPath および LatitudeMemberPath プロパティはこのデータ列をマップします。
熱色スケールは、シリーズ内のカラー パターンを決定するオプションの機能です。以下の表は、カラー スケールを決定するために使用するプロパティをまとめたものです。
表の次にあるスクリーンショットは、 GeographicHighDensityScatterSeries の HeatMinimumColor と HeatMaximumColor のプロパティを持つ XamGeographicMap が以下の設定後どのように見えるかを示しています。
以下のコードはこの例を実装します。
XAML の場合:
<ig:XamGeographicMap.Series>
<ig:GeographicHighDensityScatterSeries
LatitudeMemberPath="Latitude"
LongitudeMemberPath="Longitude"
HeatMaximumColor="Orange"
HeatMinimumColor="Green">
</ig:HighDensityScatterSeries>
</ig:XamGeographicMap.Series>
C# の場合:
series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.HeatMaximumColor = Color.FromArgb(255, 46, 139, 87);
series.HeatMinimumColor = Color.FromArgb(255, 238, 154, 0);
Visual Basic の場合:
series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.HeatMaximumColor = Color.FromArgb(255, 46, 139, 87)
series.HeatMinimumColor = Color.FromArgb(255, 238, 154, 0)
XamGeographicMap の GeographicHighDensityScatterSeries シリーズはパフォーマンスが最適化されています。数万のデータ ポイントにバインドする場合、 XamGeographicMap のパフォーマンスを最適化するためのプロパティおよびメソッドがあります。
GeographicHighDensityScatterSeries シリーズの Resolution プロパティは、シリーズがどの程度積極的に表示データを統合するかを決定します。値が大きい場合、より積極的にデータが統合され、系列のパフォーマンスが向上します。より低い値を使用している場合、表示解像度が強化され、それに応じてパフォーマンスも下がります。
表の下にある画像は、 GeographicHighDensityScatterSeries の Resolution プロパティを以下のように設定した XamGeographicMap を表示します。
以下はこの例における実装コードです。
XAML の場合:
<ig:XamGeographicMap.Series>
<ig:GeographicHighDensityScatterSeries
LatitudeMemberPath="Latitude"
LongitudeMemberPath="Longitude"
Resolution="10">
</ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>
C# の場合:
series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.Resolution = 10;
Visual Basic の場合:
series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.Resolution = 10
XamGeographicMap コントロールは、 XamDataChart をロードする間中の UI の応答性を保つようデータをばらばらに読み込む GeographicHighDensityScatterSeries シリーズを段階的に描画します。デフォルトで、 ProgressiveLoad プロパティは True に設定されています。 GeographicHighDensityScatterSeries シリーズは、XamGeographicMap のレンダリング中にローディング状態を表示できる 2 通りの方法を提供します。
ローディング状態を表示できる ProgressiveLoadStatusChanged イベントをリッスンします。
ProgressiveStatus プロパティは、値が 0 から 100 まで (完全なロードは 100) のプログレッシブ ロード シリーズの状態を表します。このプロパティは、プログレスバーなどのローディング状態を示すコントロールにバインドします。
この表の下のスクリーン ショットは、 GeographicHighDensityScatterSeries シリーズの構成された ProgressiveLoadStatusChanged イベントでどのように XamGeographicMap を描画するかを示します。
以下は、先行例を実装するために使用するコードです。
XAML の場合:
<ig:XamGeographicMap.Series>
<ig:GeographicHighDensityScatterSeries
LatitudeMemberPath="Latitude"
LongitudeMemberPath="Longitude"
ProgressiveLoad="True"
ProgressiveLoadStatusChanged="OnSeriesProgressiveLoadStatusChanged">
</ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>
C# の場合:
private void OnSeriesProgressiveLoadStatusChanged(object sender,
ProgressiveLoadStatusEventArgs e)
{
this.SeriesLoadingProgressBar.Value = e.CurrentStatus;
if (e.CurrentStatus == 100)
{
SeriesLoadingPanel.Visibility = Visibility.Collapsed;
}
}
Visual Basic の場合:
Private Sub OnSeriesProgressiveLoadStatusChanged(ByVal sender As Object, ByVal e As ProgressiveLoadStatusEventArgs)
Me.SeriesLoadingProgressBar.Value = e.CurrentStatus
If (e.CurrentStatus = 100)
SeriesLoadingPanel.Visibility = Visibility.Collapsed
End If
End Sub
GeographicHighDensityScatterSeries シリーズの MouseOverEnabled プロパティは、MouseOver
イベントが発生するかどうかを指定します。デフォルト値は False
です。この系列のマウス オーバー サポートは、メモリとパフォーマンスに大きく影響する場合があります。この値を False に設定することの主なデメリットは、ツールチップを描画できないことです。
この表の下のスクリーンショットは、 GeographicHighDensityScatterSeries シリーズの MouseOverEnabled プロパティを以下のように設定したカスタム ツールチップのある XamGeographicMap の描画を示しています。
以下は、先行例を実装するために使用するコードです。
XAML の場合:
<ig:XamGeographicMap.Series>
<ig:GeographicHighDensityScatterSeries
LatitudeMemberPath="Latitude"
LongitudeMemberPath="Longitude"
MouseOverEnabled="True">
<ig:GeographicHighDensityScatterSeries.ToolTip>
<Border Padding="4”>
<TextBlock Text="Binding Path=Item.Name" />
</Border>
</ig:GeographicHighDensityScatterSeries.ToolTip>
</ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>
C# の場合:
series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.MouseOverEnabled = "True";
Visual Basic の場合:
series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.MouseOverEnabled = "True"
GeographicHighDensityScatterSeries シリーズの UseBruteForce プロパティによって、シリーズの描画方法が決まります。True の場合、内部データ構造を構築する代わりに、毎度すべてのデータ ポイントを描画します。初期ロード時間が早く、メモリ使用率が低いですが、データのナビゲーションは遅くなります。
この表の下のスクリーンショットは、 GeographicHighDensityScatterSeries シリーズの UseBruteForce プロパティを以下のように設定した XamGeographicMap の描画を示しています。
以下は、先行例を実装するために使用するコードです。
XAML の場合:
<ig:XamGeographicMap.Series>
<ig:GeographicHighDensityScatterSeries
LatitudeMemberPath="Latitude"
LongitudeMemberPath="Longitude"
ProgressiveLoadStatusChanged="OnSeriesProgressiveLoadStatusChanged"
UseBruteForce="True">
</ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>
C# の場合:
series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.UseBruteForce = "True";
series.ProgressiveLoadStatusChanged += series_ProgressiveLoadStatusChanged;
Visual Basic の場合:
series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.HeatMaximumColor = "True"
series.ProgressiveLoadStatusChanged += series_ProgressiveLoadStatusChanged
GeographicHighDensityScatterSeries シリーズの PointExtent プロパティは、高密度の散布シリーズのポイントを描画するために使用する最小ポイントサイズを上げます。ポイントサイズは、シリーズのパフォーマンスに直接影響します。 PointExtent プロパティの値が大きいとパフォーマンスは下がります。
この表の下のスクリーンショットは、 GeographicHighDensityScatterSeries シリーズの構成された PointExtent プロパティでどのように XamGeographicMap を描画するかを示します。
以下は、先行例を実装するために使用するコードです。
XAML の場合:
<ig:XamGeographicMap.Series>
<ig:GeographicHighDensityScatterSeries
LatitudeMemberPath="Latitude"
LongitudeMemberPath="Longitude"
PointExtent="3">
</ig:GeographicHighDensityScatterSeries>
</ig:XamGeographicMap.Series>
C# の場合:
series.LatitudeMemberPath = "Latitude";
series.LongitudeMemberPath = "Longitude";
series.PointExtent = 3;
Visual Basic の場合:
series.LatitudeMemberPath = "Latitude"
series.LongitudeMemberPath = "Longitude"
series.PointExtent = 3
このトピックの追加情報については、以下のトピックも合わせてご参照ください。