Neutral Scent

App developments & Gadgets

WP8のマップコントロールでNokia Mapsを使わずBing Mapsの地図を表示する(仮)

ようやく始めました、Windows Phone 8開発。といっても、まだあれこれ試している段階ですが...。
で、とりあえずで張ってみたMapコントロールがまぁ半ば予想通りでNokia Mapsの凄い地図を表示してくれたのでしょっぱなから途方にくれました。

が、よく訓練されたWindows Phone開発者ならあの時のことを忘れない、というわけで、過去の知識を頼りにちょっと小細工してみたところ、既存のBing Mapsの地図をMapコントロールへ取り込み成功。

で、調子に乗ってつぶやいたところ、高橋さんからツッコミが...。

なので、改めて可能そうな手法をいくつか確認してみました。

1. WP8の標準Mapコントロール(Microsoft.Phone.Maps.Controls)をそのまま使う
Nokia Mapsで表示
2. WP8の標準Mapコントロール(Microsoft.Phone.Maps.Controls)にBing Mapを差し込む
それなりに利用できるものの、ズーム時などにNokia Mapsの地図がフラッシュバックする
3. WP8のWP7互換Mapコントロール(Microsoft.Phone.Maps.Controls)を参照して使う
参照設定とBing Mapsの利用登録が必要

1.はまぁ、そのままです。実際に日本国内でWP8が発売される折にはそのままでまともな地図が利用可能になると信じてます。
なので、2か3の手法で直近はお茶を濁しつつ、発売されたら戻す、という流れで行くのがよいのではないかと思います。


2.は、とりあえずのやっつけ対策、でも、一行でできます。

map2.TileSources.Add(new TileSource("http://ecn.t1.tiles.virtualearth.net/tiles/r{quadkey}.png?g=1"));

基本的には、MapコントロールのTileSourcesコレクションにおまじないで生成したTileSourceをAddするだけです。
ただし、この手法では前述したようにズームや移動中に下地としてNokia Mapがフラッシュバックします。ちょっと呪いっぽいですし、あまりカッコよくはないです。このレイヤーを外せないのかとちょっと見てみましたが解決策は今の所見つかっていません。
参考:
Bing Map Control で日本の地図を - 高橋 忍のブログ - Site Home - MSDN Blogs
http://blogs.msdn.com/b/shintak/archive/2011/06/08/10172426.aspx


3.は、手間はかかりますが、動作的にはこれまでのWP7と同様の動作をしてくれます。
ツールボックスの「全般」を右クリックして「アイテムの選択...」:

Windows Phone ComponentsからMicrosoft.Phone.Maps.Controlsのバージョン8.0.0.0をチェックしてOk:

ツールボックスに追加されたこちらのMapコントロールを張りつけると、

開発者ラベル付きのBing Mapsが表示されると思うので、あとはBing Mapsの開発者登録をするなどWP7の時の手続きを利用する形になります。
まぁ、諸々の権利関係もクリアされますし、明後日の場所にKawasaki等と表示されたりしないので、ガッツリ作るアプリならこちらにしておくのが安全かもしれません。