Windows Phoneアプリケーション開発入門

第33回 Mangoで追加されたLancherとChooserを使ってみよう!

この記事を読むのに必要な時間:およそ 7 分

BingMapsDirectionsTask

地図上に経路を表示することができます。

BingMapsDirectionsTaskクラスのインスタンスに,経路案内の開始地点であるStartプロパティと終了地点であるEndプロパティを指定して,Showメソッドを呼ぶとMapsアプリケーションを経路案内モードで起動します。

private void btnBingMapsDirections_Click(object sender, RoutedEventArgs e)
{
    var bingMapsDirectionsTask = new BingMapsDirectionsTask();

    // 開始地点のシアトル・タコマ国際空港を設定
    LabeledMapLocation start = new LabeledMapLocation();
    GeoCoordinate startLocation = new GeoCoordinate(47.443937,-122.298732);
    start.Label = "International Boulevard Seattle, WA";
    start.Location = startLocation;

    // 終了地点のマイクロソフトを設定
    LabeledMapLocation end = new LabeledMapLocation()
    {
        Label = "Microsoft",
        Location = new GeoCoordinate(47.657757,-122.142241)
    };

    bingMapsDirectionsTask.Start = start;
    bingMapsDirectionsTask.End = end;
    bingMapsDirectionsTask.Show();
}
Private Sub btnBingMapsDirections_Click(sender As Object, e As RoutedEventArgs)
    Dim bingMapsDirectionsTask = New BingMapsDirectionsTask()

    ' 開始地点のシアトル・タコマ国際空港を設定
    Dim start As New LabeledMapLocation()
    Dim startLocation As New GeoCoordinate(47.443937, -122.298732)
    start.Label = "International Boulevard Seattle, WA" 
    start.Location = startLocation

    ' 終了地点のマイクロソフトを設定
    Dim [end] As New LabeledMapLocation()
    With [end]
        .Label = "Microsoft" 
        .Location = New GeoCoordinate(47.657757, -122.142241)
    End With

    bingMapsDirectionsTask.Start = start
    bingMapsDirectionsTask.End = [end]
    bingMapsDirectionsTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。画面の下半分にシアトル・タコマ国際空港からマイクロソフト社までの経路が表示されています。

車での経路で移動した場合の距離と大体の所要時間とが合わせて表示されているのでとても便利です。車と人のアイコンが表示されています。人を選択した場合には徒歩での経路が表示されます。

画像

GameInviteTask

GameInviteTaskは,マルチプレイヤー対応のゲームで,ユーザーが友達を招待する画面を表示させます。

private void btnGameInvite_Click(object sender, RoutedEventArgs e)
{
    var gameInviteTask = new GameInviteTask();
    gameInviteTask.SessionId = "SomeSessionID";

    Observable.FromEvent<TaskEventArgs>(
        h => gameInviteTask.Completed += h,
        h => gameInviteTask.Completed -= h)
        .Subscribe(ex =>
        {
            // ゲームの招待に成功
            if (ex.EventArgs.Error == null)
                MessageBox.Show("Invite Success!");
        });

    gameInviteTask.Show();
}
Private Sub btnGameInvite_Click(sender As Object, e As RoutedEventArgs)
    Dim gameInviteTask As New GameInviteTask()
    gameInviteTask.SessionId = "SomeSessionID" 

    Observable.FromEvent(Of TaskEventArgs)(
        Sub(h) AddHandler gameInviteTask.Completed, h,
        Sub(h) RemoveHandler gameInviteTask.Completed, h) _
    .Subscribe(Sub(ex)
                   ' ゲームの招待に成功
                   If ex.EventArgs.TaskResult = TaskResult.OK Then
                       MessageBox.Show("Save Success!")
                   End If
               End Sub)

    gameInviteTask.Show()
End Sub

上記のコードを実行した際のスクリーンショットです。

画像

著者プロフィール

和田健司(わだけんじ)

1982年10月12日生まれ。大阪で働くプログラマ。Microsoft MVP for Device Application Development(Jul 2010 - Jun 2011)。Windows Mobileに傾倒し今に至る。Windows Mobile向けのTipsを書いています。iPhoneアプリ開発を始めました。嫌いな食べ物はカレー。

URL: http://ch3cooh.jp/
Blog: http://d.hatena.ne.jp/ch3cooh393/