20110211 bing maps controlからwindows phone 7を楽しもう!

38
Bing Maps Controlから Windows Phone 7を楽しもう! Silverlightを囲む会 in 大阪#16 CH3COOH(酢酸)

Upload: ch3cooh-393

Post on 01-Nov-2014

2.326 views

Category:

Technology


0 download

DESCRIPTION

2011年2月11日開催の「Silverlightを囲む会 in 大阪 #16」の勉強会にてWindows Phone 7とBing Mapsを使ってどのようなアプリが作れるかについて、お話をさせて頂きました。

TRANSCRIPT

Page 1: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Maps Controlから Windows Phone 7を楽しもう!

Silverlightを囲む会 in 大阪#16 CH3COOH(酢酸)

Page 2: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

CH3COOH(酢酸)

大阪で働く 雑食系プログラマ

デバドラからアプリ、業務系バッチまで

最近は、ずっとiPhoneアプリ開発中心

ブログ http://d.hatena.ne.jp/ch3cooh393/

サイト http://ch3cooh.jp/

自己紹介

Page 3: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

VS2010で Bing Maps をぽとぺた

Bing Maps Controlの基本的な機能

実機で Bing Maps をみてみましょう

デバイスとBing Maps Controlの連携

タスクとBing Maps Controlの連携

おまけ

本日のアジェンダ

Page 4: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Maps Controlを 使ってみよう

Page 5: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

ToolBoxからMapを選んで デザイナに貼り付けて、実行するだけ

VS2010からBing Mapを使う

Page 6: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Maps Controlの 基本的な機能

Page 7: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

標準コントロールとして提供されている

ピンチイン・アウトによるズームや、パンによるスクロールなど基本的な地図としての機能を持つ

Bing Maps Silverlight Control for Windows Phone

Page 8: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Modeプロパティの設定に、『Road』を設定

地図の表示モード 地図表示

Page 9: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Modeプロパティの設定に、『Aerial』を設定

地図の表示モード 航空写真表示

Page 10: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Modeプロパティの設

定に、『AerialWithLabels』を設定

地図の表示モード 航空写真+ラベル表示

Page 11: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

プッシュピンを刺すのには、PushPinクラスを使う

PushPinクラスを継承

することで、任意の表示のピンが作れる

PushPin

Page 12: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

地図上に線を引くには、MapPolylineクラスを使う

Polygonを使うと、矩形

を描画することが出来ます

Polyline と Polygon

Page 13: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

地図上に画像を置くには、MapLayerを用意します

ImageLayerの上にImageを置き、地図に設定するだけ

Layer

Page 14: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

GPSと地図を連携させる

Page 15: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

GPSから位置情報を取得して、プッシュピンを立ててみましょう

GPSを使って位置測位するための準備

System.Device.dllを参照して、System.Device.Location名前空間のGeoCoordinateWatcherクラスを使う

GPSと地図の連携

Page 16: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

GeoCoordinateWatcher watcher; // GeoCoordinateWatcherの初期化を行う watcher = new GeoCoordinateWatcher ( GeoPositionAccuracy.High ); // 位置変更イベントのイベントハンドラを追加 // watcher_PositionChanged watcher.PositionChanged += 省略 // データの取得を開始する watcher.Start();

位置情報を取得する

Page 17: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

コントロールへの操作はメインスレッドで行う必要がある

イベントハンドラでは、メインスレッドへDispatchして処理をデリゲートします

Deployment.Current.Dispatcher.BeginInvoke(() => MyPositionChanged(e));

位置情報の通知を受け取る

Page 18: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

// 位置情報を取得する GeoCoordinate co = watcher.Position.Location; // プッシュピンを作る var pin = new Pushpin() { Location = co }; map1.Children.Add(pin); // 位置測位を終了 watcher.Stop();

位置情報をもとにピンを刺す

Page 19: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

PhotoChooserTaskと地図を 連携させる

Page 20: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

地図上に写真を配置していくにはどうしよう?

写真を取得する

写真を地図上に配置する

Bing Maps上に画像を配置

Page 21: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

アプリからファイルシステムにアクセスする方法が提供されていません

Microsoft.Phone.Tasks名前空間にある「Launcher」と「Chooser」を通す

静止画像の選択にはPhotoChooserTaskを使う

どうやって画像を取得しよう?

Page 22: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Microsoft.Phone.Tasks名前空間に各タスクは扱い方がほぼ一緒で使いやすい

var task = new PhotoChooserTask(); // タスクが完了すると、イベントハンドラが呼び出される

task.Completed += (sx, ex) => {省略}task.Show();

PhotoChooserTask

Page 23: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

// 取得できていれば、Imageに設定

var bmp = new BitmapImage(); bmp.SetSource(ex.ChosenPhoto); // Imageの表示時の設定 var image = new Image() { Source = bmp }; var imageLayer = new MapLayer(); var position = PositionOrigin.BottomLeft; // 画像レイヤーにUIElement(Image)を追加 imageLayer.AddChild(image, map1.Center, position); // 地図に画像レイヤーを追加します map1.Children.Add(imageLayer);

アルバムの中から写真の 選択結果を受け取る

Page 24: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Maps Controlに 足りないものを足してみる

Page 25: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

大人の事情のせいか、 日本の地図はかなり残念

このままでは、WP7

が、日本で受け入れてもらえない!!

Bing Map Controlの 地図はかなり残念・・・

大阪駅付近の詳細地図

Page 26: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

地図と言えばGoogle Mapでしょ?

良いところ取りしちゃいましょう

WP7にはGoogle Mapのコントロールが無い だったら、Bing Maps Controlを使おう

Bing Map for WP7の地図が残念 だったら、Google Mapのタイルを使おう

Google Maps on Bing Maps Control

Page 27: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Mapsでは、最大ズーム時で 1,073,741,824ピクセルx1,073,741,824ピクセル

の超高画質の地図を使っているみたい

このBing Maps Controlでは、『Deep Zoom』と呼ばれる技術が使われています

どうやって作る?

Page 28: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

超高画質の画像を256ピクセルx256ピクセルのような小さな単位(タイル)にします

表示に必要な部分だけのタイルを読み込んで、操作をスムーズにします

Deep Zoomとは

Page 29: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

地図をズームレベルに応じて、範囲を狭く、そして詳細に

細かく分割されたタイル

より詳細に

Page 30: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

タイルの単位は 256 x 256

Google Mapsのタイルの大きさは、

256 x 256

Bing Mapsのタイルの大きさも、

256 x 256

あとは、お察しの通り。。。

Page 31: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Maps Controlは、表示したい位置座

標を元にして、タイルが格納されているサーバーからDLしてる

このタイル画像のURLを、生成しているメソッドをオーバーライドすれば、Google Mapsのタイル画像が使える!

具体的にどうやって作るの?

Page 32: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Microsoft.Phone.Controls.Maps名前空間のTileSourceクラスの以下のメソッド

Uri GetUri(int x, int y, int zoomLevel)

http://mt{server}.google.com/vt/lyrs={type}&x={x値}&y={y値}&z={zoom-level}

GetUriメソッドでURLを作ってる

Page 33: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

実際にアプリの動きをみてみましょう

Google Map on Bing Map Control デモ

Page 35: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Google Mapのライセンス的にNGなような気

がしますが、容量・用法を守って正しくお使いください

ご使用上の注意

Page 36: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

Bing Maps Silverlight Control for Windows Phone

http://msdn.microsoft.com/en-us/library/ff941096%28v=VS.92%29.aspx

How to: Use the Bing Maps Silverlight Control for Windows Phone

http://msdn.microsoft.com/en-us/library/ff941093%28v=VS.92%29.aspx

Working with Pushpins in the Map Control

http://msdn.microsoft.com/en-us/library/gg588383%28v=VS.92%29.aspx

Differences Between Silverlight and Silverlight for Windows Phone

http://msdn.microsoft.com/en-us/library/ff426930%28VS.95%29.aspx

本セッションの補足資料

Page 37: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

スマートフォン勉強会は、関西と関東で開催しています 過去には、会津や九州でも開催しました

2/19 Windows Phone 7 ブーストアップ

2/26 スマートフォン勉強会@関東#11

3/26 スマートフォン勉強会@関西#14

スマートフォン勉強会の告知

Page 38: 20110211 Bing Maps ControlからWindows Phone 7を楽しもう!

ご清聴ありがとうございました