ルートと道順案内の使用

注意

現在この機能は、日本の道路に関しては適用されておりません。

Virtual Earth のルート設定機能と道順案内機能を使用すると、カスタム マップ上にドライブ ルートを表示できます。ルートは、マップ上に自動的に描画されます。道順案内は、独自のイベント ハンドラーを記述することによってカスタマイズできます。

ルートの取得

マップ上の 2 点間のドライブ ルートを表示する場合は、VEMap.GetDirections メソッドを呼び出します。中間地点がある場合はそれも指定できます。どの地点も、住所、場所の名前、または VELatLong クラス オブジェクトを使用して指定できます。以下の 2 つの例はどちらも有効です。

var myOptions = new VERouteOptions();
myOptions.SetBestMapView = false; // マップ ビューは変更しません。
myOptions.RouteCallback = myRouteHandler;  // VERoute を取得します。
map.GetDirections("space needle", "LA Coliseum", "area 51", myOptions);
map.GetDirections("1 Microsoft Way, 98052", new VELatLong(47.969,-122.39, 0, VEAltitudeMode.RelativeToGround), myOptions);

マップに描画されるルートには、その出発地点、到着地点、および中間地点がアイコンで示されます。各アイコンは、その地点の道順案内を表示するための既定の拡張プレビューを備えています。ここでは myRouteHandler 関数に VERoute クラス オブジェクトを渡すように指定しています。このオブジェクトを使用して道順案内を表示できます。

道順案内の表示

VERoute オブジェクトは、ルートに関する詳細情報 (道順案内など) を保持します。GetDirections メソッドを呼び出す際には、VERoute オブジェクトを処理するコールバック関数を指定し、取得した情報を使用して道順案内を表示できます。次の例では、JavaScript の警告ダイアログにルート情報を表示する方法を示します。

function myRouteHandler(route)
{
// ルートの詳細情報を取り出して、警告のテキストを設定します。
var legs          = route.RouteLegs;
var turns         = "進路変更ごとの案内\n";
var leg           = null;
var turnNum       = 0;  // 進路の番号
var totalDistance = 0;  // すべての区間の距離の合計

// 中間区間を取得します。
for(var i = 0; i < legs.length; i++)
   {
// 参照のたびに添え字を指定する手間を省くため、現在の区間を変数に格納します。
leg = legs[i];  // leg は VERouteLeg オブジェクトです。

// 各中間区間の詳細情報を取り出します。
var turn        = null;  // 進路
var legDistance = null;  // 進路の距離

for(var j = 0; j < leg.Itinerary.Items.length; j ++)
      {
turnNum++;
// turn は VERouteItineraryItem オブジェクトです。
turn = leg.Itinerary.Items[j];  
turns += turnNum + ":" + turn.Text;
legDistance    = turn.Distance;
totalDistance += legDistance;

// 距離を四捨五入して小数点以下 1 桁までにします。
// マイルが既定の単位であることに注意してください。
turns += " (" + legDistance.toFixed(1) + " マイル)\n";
      }
   }
turns += "合計距離:" + totalDistance.toFixed(1) + " マイル\n";

// 道順案内を表示します。
alert(turns);
}

ローカライズされた道順案内を返す方法

マップ コントロールのカルチャの設定方法や、サポートされているカルチャの一覧などの、ローカライズされた道順案内を返す方法の詳細については、「ローカライズされた結果を返す方法」を参照してください。

ローカライズ後の内容をマイル単位ではなくキロメートル単位にする必要がある場合は、VERouteOptions.DistanceUnit プロパティVERouteDistanceUnit.Kilometer に設定します。

既定値の変更

既定では、ルートは指定された場所の順に計算され、距離はマイル単位で計算されます。次のように適切な VERouteOptions クラス プロパティを設定することで、距離が最短のルートや時間が最短のルートを返すように指定したり、単位をキロメートルに変更したりできます。

myOptions.RouteOptimize = VERouteOptimize.MinimizeDistance;
myOptions.RouteOptimize = VERouteOptimize.MinimizeTime;
myOptions.DistanceUnit  = VERouteDistanceUnit.Kilometer;