ルートと道順案内の使用
注意
現在この機能は、日本の道路に関しては適用されておりません。
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;