酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows PhoneでWebBrowserTaskを使って位置座標を設定して標準マップアプリを起動する

Windows Phone OS 7.1では互換性を持たないTipsの為、想定どおりに動作することが保証されておりません。Windows Phone OS 7.1向けアプリケーションの開発の場合、BingMapsTaskクラスを使用すべきです。

Windows Phone OS 7.0ではアプリ間連携が出来ませんので、例えばマップにピンを立てるのもMapコントロールを使って自アプリ内で地図を表示する必要があります。ただ、各アプリごとに標準のマップアプリと同等の機能を実装するのは非効率ですし、多機能である標準のマップアプリを使いたいです。

今後の互換性が保証されない「裏技」的な方法になりますが、WebBrowserTask.URLプロパティにmapsスキーマと位置座標をEscapeDataStringメソッドでエスケープをし設定すれば、ユーザー開発のアプリからでも標準のマップアプリを起動させることが出来ます。

以下にサンプルコードを示します。

var task = new WebBrowserTask {
    URL = Uri.EscapeDataString("maps:34.464037,135.372119")
};
task.Show();

Windows Phone Developer Toolsのシミュレータ上で、上記のコードを実行してみました。岸和田市役所にピンが立った状態でマップアプリが起動出来ているのが確認出来ます。

f:id:ch3cooh393:20150829195421p:plain

アプリ→IE→Mapアプリの順序に起動が掛かるため、自分のアプリに戻るにはBackキーを2回押下しなければならない可能性があります。

Windows Phone OS 7.1以降の挙動について

MongoにアップデートしたHTC MozartではこのTipsの通りに動作しましたが、最近リリースされたWP7端末では同じWP OS 7.1が搭載されていても「結果がありません」と意図通りの動作をしなくなっています。

以下のように、au IS12TやWP SDK 7.1のシミュレータでは「結果がありません」と表示されていました。

f:id:ch3cooh393:20150829195435p:plain

ドキュメントに書かれていない裏技的なTipsですので、今後の互換性を考えるとBingMapsTaskのCenterプロパティに位置座標を設定してから、マップアプリを起動すべきと言えるかもしれません。

関連記事