バージョン

コードを使用してマップ コンテンツをナビゲート

トピックの概要

目的

このトピックは、コードを使用して、 XamGeographicMap™ コントロールのマップ コンテンツをナビゲートする情報を提供します。

前提条件

以下の表に、このトピックを理解するための前提条件として求められるトピックをリストします。

トピック 目的

このトピックは、 XamGeographicMap コントロールのマップ要素のレイアウトについての情報を提供します。

このトピックは、 XamGeographicMap コントロールでのマップ コンテンツのナビゲート、およびコントロールのすべてのサポートされるナビゲーション機能に関する概念を提供します。

マップ ナビゲーション

概要

XamGeographicMap コントロールを使用して 2 つの方法でナビゲートをすることができ、コードを使用してマップ コンテンツをナビゲートします。最初はウィンドウ ナビゲーション システムを使用する方法で、2 番目はワールド ナビゲーション システムを使用する方法です。

  • ウィンドウ ナビゲーション システム

  • ワールド ナビゲーション システム

XamGeographicMap コントロールは、値を変換するメソッドを提供することで、両方のナビゲーション システムに対応します。これらの方法については、このトピックの実例のセクションをごらんください。

ウィンドウ ナビゲーション システム

ウィンドウ ナビゲーション システムは、 WindowRect の位置とサイズ(ウィンドウ座標のマップ ビュー)を設定するためのプロパティで構成されます。このナビゲーション システムでは、値はマップ ウィンドウ ビューのプロパティで 0 および 1 に設定できます。

次のプレビュー画像は XamGeographicMap コントロールで WindowRect の位置やサイズが強調表示され、マップ コンテンツのある特定の地域 (アフリカ大陸やヨーロッパ大陸など) にズームしています。

GeographicMap Navigating Map Content Using Code 1.png

以下の表では、XamGeographicMap コントロールのマップ ウィンドウの位置とサイズを設定するプロパティについて簡単に説明します。

プロパティ タイプ 説明

Rect

マップ ウィンドウの位置とサイズを指定します。表示中の領域の座標とアンカー ポイントがウィンドウの左上に表示されます。

double

マップ ウィンドウの水平方向のアンカー ポイントを XamGeographicMap コントロールの左端からを指定します。これは WindowRect  プロパティの Left に保存された値と等しくなります。

double

マップ ウィンドウの垂直方向のアンカー ポイントを XamGeographicMap コントロールの上端から指定します。これは WindowRect  プロパティの Top に保存された値と等しくなります。

ワールド ナビゲーション システム

ワールド ナビゲーション システムは、WorldRect の位置とサイズを設定するためのプロパティで構成されます(地理的座標のマップ ビュー)。このナビゲーション システムでは、WorldRect の経度プロパティでは -180~180 の値、 WorldRect ビューの緯度プロパティでは -85~85 の値に設定できます。

次のプレビュー画像は XamGeographicMap コントロールで WorldRect の位置やサイズが強調表示され、マップ コンテンツのある特定の地域 (アフリカ大陸やヨーロッパ大陸など) にズームしています。

GeographicMap Navigating Map Content Using Code 2.png

以下の表では、XamGeographicMap コントロールのマップ ウィンドウの位置とサイズを設定するプロパティについて簡単に説明します。

プロパティ タイプ 説明

Rect

マップ ナビゲーションの表示領域について位置やサイズを指定すると、マップ ナビゲーションの中に、世界地図座標で指定領域のマップ コンテンツが表示されます。

マップ ナビゲーション機能

実例

以下の表で、XamGeographicMap コントロールでサポートされているコード ナビゲーション機能について簡単に説明します。

マップ コンテンツの拡大

C# の場合:

// 0.1 の係数で地図の中心にズームインします
var widthScale = (0.1 * this.GeoMap.WindowRect.Width);
var heightScale = (0.1 * this.GeoMap.WindowRect.Height);
var x = this.GeoMap.WindowRect.X + (widthScale / 2);
var y = this.GeoMap.WindowRect.Y + (heightScale / 2);
var w = this.GeoMap.WindowRect.Width - widthScale;
var h = this.GeoMap.WindowRect.Height - heightScale;
this.GeoMap.WindowRect = new Rect(x, y, w, h);

Visual Basic の場合:

' 0.1 の係数で地図の中心にズームインします
Dim widthScale = (0.1 * Me.GeoMap.WindowRect.Width)
Dim heightScale = (0.1 * Me.GeoMap.WindowRect.Height)
Dim x = Me.GeoMap.WindowRect.X + (widthScale / 2)
Dim y = Me.GeoMap.WindowRect.Y + (heightScale / 2)
Dim w = Me.GeoMap.WindowRect.Width - widthScale
Dim h = Me.GeoMap.WindowRect.Height - heightScale
Me.GeoMap.WindowRect = New Rect(x, y, w, h)

マップ コンテンツの縮小

C# の場合:

// 0.1 の係数でズームアウトします
var widthScale = (0.1 * this.GeoMap.WindowRect.Width);
var heightScale = (0.1 * this.GeoMap.WindowRect.Height);
var x = this.GeoMap.WindowRect.X - (widthScale / 2);
var y = this.GeoMap.WindowRect.Y - (heightScale / 2);
var w = this.GeoMap.WindowRect.Width + widthScale;
var h = this.GeoMap.WindowRect.Height + heightScale;
this.GeoMap.WindowRect = new Rect(x, y, w, h);

Visual Basic の場合:

' 0.1 の係数でズームアウトします
Dim widthScale = (0.1 * Me.GeoMap.WindowRect.Width)
Dim heightScale = (0.1 * Me.GeoMap.WindowRect.Height)
Dim x = Me.GeoMap.WindowRect.X - (widthScale / 2)
Dim y = Me.GeoMap.WindowRect.Y - (heightScale / 2)
Dim w = Me.GeoMap.WindowRect.Width + widthScale
Dim h = Me.GeoMap.WindowRect.Height + heightScale
Me.GeoMap.WindowRect = New Rect(x, y, w, h)

マップ コンテンツのある領域へのズーム

C# の場合:

// マップ ウィンドウの座標を使用してマップ エリアへズームします
this.GeoMap.WindowRect = new Rect(0.2, 0.3, 0.6, 0.4);

Visual Basic の場合:

' マップ ウィンドウの座標を使用してマップ エリアへズームします
Me.GeoMap.WindowRect = New Rect(0.2, 0.3, 0.6, 0.4)

マップ コンテンツの地理的な領域へのズーム

C# の場合:

// マップ ウィンドウの地理的座標を使用してマップ エリアへズームします
var geoRegion = new Rect(-30, -40, 120, 80);
this.GeoMap.WindowRect = this.GeoMap.GetZoomFromGeographic(geoRegion);

Visual Basic の場合:

' マップ ウィンドウの地理的座標を使用してマップ エリアへズームします
Dim geoRegion = New Rect(-30, -40, 120, 80)
Me.GeoMap.WindowRect = Me.GeoMap.GetZoomFromGeographic(geoRegion)

マップ コンテンツのサイズを表示可能領域に合わる

C# の場合:

// マップ ウィンドウ座標を使用してマップ コンテンツの表示領域を最大表示に合わせます
this.GeoMap.WindowRect = new Rect(0.0, 0.0, 1.0, 1.0);
// 世界地図座標を使用してマップ コンテンツの表示領域を最大表示に合わせます
var geoRegion = new Rect(-180, -75, 360, 150);
this.GeoMap.WindowRect = this.GeoMap.GetZoomFromGeographic(geoRegion);

Visual Basic の場合:

' マップ ウィンドウ座標を使用してマップ コンテンツの表示領域を最大表示に合わせます
Me.GeoMap.WindowRect = New Rect(0.0, 0.0, 1.0, 1.0)
' 世界地図座標を使用してマップ コンテンツの表示領域を最大表示に合わせます
Dim geoRegion = New Rect(-180, -75, 360, 150)
Me.GeoMap.WindowRect = Me.GeoMap.GetZoomFromGeographic(geoRegion)

マップ コンテンツの地理的領域へのバインド

C# の場合:

// マップ コンテンツを地理的領域にバインドおよび制限します
this.GeoMap.WorldRect = new Rect(-30, -40, 120, 80);

Visual Basic の場合:

' マップ コンテンツを地理的領域にバインドおよび制限します
Me.GeoMap.WorldRect = New Rect(-30, -40, 120, 80)

マップ コンテンツのパンニング

C# の場合:

// 0.05 の係数でパンレフト(西方向)します
this.GeoMap.WindowPositionHorizontal = this.GeoMap.WindowRect.X - 0.05;
// 0.05 の係数でパンライト(東方向)します
this.GeoMap.WindowPositionHorizontal = this.GeoMap.WindowRect.X + 0.05;
// 0.05 の係数でパンアップ(北方向)します
this.GeoMap.WindowPositionVertical = this.GeoMap.WindowRect.Y - 0.05;
// 0.05 の係数でパンダウン(南方向)します
this.GeoMap.WindowPositionVertical = this.GeoMap.WindowRect.Y + 0.05;

Visual Basic の場合:

' 0.05 の係数でパンレフト(西方向)します
Me.GeoMap.WindowPositionHorizontal = Me.GeoMap.WindowRect.X - 0.05
' 0.05 の係数でパンライト(東方向)します
Me.GeoMap.WindowPositionHorizontal = Me.GeoMap.WindowRect.X + 0.05
' 0.05 の係数でパンアップ(北方向)します
Me.GeoMap.WindowPositionVertical = Me.GeoMap.WindowRect.Y - 0.05
' 0.05 の係数でパンダウン(南方向)します
Me.GeoMap.WindowPositionVertical = Me.GeoMap.WindowRect.Y + 0.05

関連コンテンツ

以下のトピックでは、このトピックに関連する情報を提供しています。

トピック 目的

このトピックは、 XamGeographicMap コントロールのマップ要素のレイアウトについての情報を提供します。

このトピックは、 XamGeographicMap コントロールでのマップ コンテンツのナビゲート、およびコントロールのすべてのサポートされるナビゲーション機能に関する概念を提供します。

このトピックは、キーボードからの入力を使用して、 XamGeographicMap コントロールでのマップ コンテンツのナビゲートに関する情報を提供します。

このトピックは、マウス操作を使用した XamGeographicMap コントロールのマップ コンテンツのナビゲートに関する情報を提供します。