Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Windows Phone 8
プログラミング
~地図&位置情報サービス編~
@第6回まどべんよっかいち
2013/7/27
青木 宣明(@kumar0001)
Agenda
• 新しい地図コントロール&タスク
• 日本での問題点
1. WP8と地図
• 2通りの方法
• エミュレータ
2. WP8と位置情報
• 地図作成
• ジオコーダー
• 移動経路
• ロケーション関連情報
3. 地図・位置情
報...
Windows Phone8と地図
• 新しいOS標準地図アプリ
• 新しい地図関連API
• 日本での問題点
WP8での地図の変更点
1. 新しいOS標準地図アプリ
2. 新しい地図関連API
1. 地図表示コントロール
2. 地図関連タスク
新しいOS標準地図アプリ
• 地図表示
• 現在位置への移動
• 周辺の店舗等情報
• 移動経路の検索
新しい地図関連API
Windows Phone 7.x / 8 Windows Phone 8
地図データ Bing Map Nokia Map
地図表示
コントロール
Microsoft.Phone.Controls.
Maps
Micro...
日本での問題点
日本では新しいマッ
プは非実用的
• 地図データが整備され
ていなくほぼ真っ白
• 移動経路の探索はでき
るが、地図データが乏
しいので実用に耐えな
い
日本向けのWP8アプリでは
別の方法が必要
デモ
日本での道順機能
熱田区を目的地に設定 四日市市からの道順
日本向けWP8アプリでの地図表
示(1of2)
方法1
これまでのBingMapコントロールを
使う
日本向けWP8アプリでの地図表
示(1of2)
方法1
これまでのBingMapコントロールを
使う
1. 参照の追加
C:Program Files (x86)Microsoft SDKsWindows Phone
v8.0Libraries...
日本向けWP8アプリでの地図表
示(2of2)
方法2
WP8のMapコントロールに
VirtualEarth.netの地図データを読み
込む
高橋 忍のブログ
「Bing Map Control で日本の地図を」
http://blogs.m...
Google Mapの利用について
Using our Services
You must follow any policies made available to you within the
Services.
Don’t misuse ...
Windows Phone8と位置情報
• 位置検出方法の比較
• WinRT APIでの位置検出方法とそのメリット
WPでの位置情報取得
.NET Location API Windows Runtime Location API
クラス GeoCoordinateWatcher GeoLocator
名前空間 System.Device.Location ...
GeoLocatorのメリット
ネイティブコードからも利用できる
1回限りの測位メソッドが提供されている
連続測位で時間間隔、距離間隔を指定できる
Win8ストアアプリとコードを共有できる
GeoLocatorの使い方(1回の測位)
準備
• ユーザに位置情報サービス利用可否の確認
設定
• GeoLocatorインスタンスの生成
• 測位精度(DesiredAccuracyInMeters, DesiredAccuracy)の設...
GeoLocatorの使い方(1回の測位)
Geolocator oneShotGeoLocator = new Geolocator
{
DesiredAccuracyInMeters = 50,
};
try
{
Geoposition p...
GeoLocatorの使い方(連続測位)
準備
•ユーザに位置情報サービス利用可否の確認
設定
• GeoLocatorインスタンスの生成
• 測位精度、移動検知距離などの設定
• StatusChanged(状態変化)イベントの処理
• Po...
GeoLocatorの使い方(連続測位)
{
this.geoLocator = new Geolocator();
this.geoLocator.DesiredAccuracy = PositionAccuracy.High;
this.g...
補足:エミュレータについて
• Mapで指定した位置
をWPに取得させるこ
とができる (7.x/8)
• 位置の指定
• 移動順序に沿った再
生
• 位置の保存、読込み
地図・位置情報のWEBサー
ビス
• 地図作成
• ジオコーダー
• 移動経路
• ロケーション関連
Windows Phoneが
提供する機能
Windows Phoneが
提供しない機能
WP8の機能を補うためには
地理情報
住所
ランドマーク
道順の検索
交通情報
地図の表示
位置の検出
Webサービスを利用して
地理情報などを補う
地図・位置情報関連のWebサービス
地図
•静的な地図の
生成
•標高の取得
•2点間の距離の
取得
ジオコーダ
• 地名⇔位置情報
• 郵便番号⇔位置
情報
• ランドマーク⇔
位置情報
道順
• 目的地までの移
動経路
ロケーション
情報
...
代表的なWebサービス提供元
Bing Maps
• 利用上の制約あり
(http://www.microsoft.com/maps/product/terms.html)
• http://www.microsoft.com/maps/
Ya...
Google Maps APIの利用につい
て
(g) No Use of Content without a Google Map. You must not use or
display the Content without a corr...
Webサービス比較
Bing Maps YOLP
APキー 1IDで3個
(1個は試用)
1IDで10個
制限 Bing Mapで表示する
50000 transactions/24時間,1KEY
他サービスとの併用不可
50000 総リクエス...
RESTサービスの利用方法
入力データ準備
•APIに入力するデータを準備する
•GETメソッドのURLとして指定することが多い
アクセス
•指定されたHTTPメソッドでURLにアクセスする
•WebRequestもしくはWebClientを使...
デモ:ジオコーダ(住所→緯度・経度)
APIの仕様調査
•マニュアルで入力、出力の仕
様を調べる
•Webブラウザで手動で試して
みる
JSONの結果クラスの作成
•仕様調査で取得したJSONファ
イルから結果クラスを作成す
る
•json v...
まとめ
地図表示
•新しい地図コントロールは日本では実用的に使えない
•旧来のBingMap版のMapコントロールを使う
位置検出
•WinRT版のGeoLocatorは、1回限りの測位メソッドがあり便利
•WP7.xとのコードの共通化をしなけ...
周辺の店舗等情報 (1of2)
周辺の店舗等情報(2of2)
移動経路の検索(1of3)
1. 出発地を入力 2. 出発地を選択 3. 同様に目的地を設定
移動経路の検索(2of3)
移動経路の検索 (3of3)
• 画面を押し上げる
と道順を表示
• 現在位置からの出発
の場合、ナビゲー
ションも可能
道順機能でのナビ(1of2)
熱田区を目的地に設定 四日市市からの道順
道順機能でのナビ(2of2)
現在位置からの道順では
ナビゲーション可能
ナビ対応APが未導入
ナビ対応APが導入済み
Upcoming SlideShare
Loading in …5
×

Windows phone 8プログラミング~gps&地図編~

1,926 views

Published on

第6回まどべんよっかいちでの発表内容です。Windows Phone 8での地図とGPS機能の使い方を紹介しました。

Published in: Mobile
  • Be the first to comment

  • Be the first to like this

Windows phone 8プログラミング~gps&地図編~

  1. 1. Windows Phone 8 プログラミング ~地図&位置情報サービス編~ @第6回まどべんよっかいち 2013/7/27 青木 宣明(@kumar0001)
  2. 2. Agenda • 新しい地図コントロール&タスク • 日本での問題点 1. WP8と地図 • 2通りの方法 • エミュレータ 2. WP8と位置情報 • 地図作成 • ジオコーダー • 移動経路 • ロケーション関連情報 3. 地図・位置情 報とWebサービス 4. まとめ
  3. 3. Windows Phone8と地図 • 新しいOS標準地図アプリ • 新しい地図関連API • 日本での問題点
  4. 4. WP8での地図の変更点 1. 新しいOS標準地図アプリ 2. 新しい地図関連API 1. 地図表示コントロール 2. 地図関連タスク
  5. 5. 新しいOS標準地図アプリ • 地図表示 • 現在位置への移動 • 周辺の店舗等情報 • 移動経路の検索
  6. 6. 新しい地図関連API Windows Phone 7.x / 8 Windows Phone 8 地図データ Bing Map Nokia Map 地図表示 コントロール Microsoft.Phone.Controls. Maps Microsoft.Phone.Maps.Contr ols 地図表示タスク BingMapsTask MapsTask 道順表示タスク BingMapsDirectionsTask MapsDirectionsTask 地図DLタスク - MapDownloaderTask 地図更新タスク - MapUpdaterTask 地図表示タスク OS標準の地図APで指定場所を表示する 道順表示タスク OS標準の地図APで移動経路を表示する 地図DLタスク オフライン利用の地図データを取得する (日本は対象外) 地図更新タスク オフライン利用の地図データを更新する
  7. 7. 日本での問題点 日本では新しいマッ プは非実用的 • 地図データが整備され ていなくほぼ真っ白 • 移動経路の探索はでき るが、地図データが乏 しいので実用に耐えな い 日本向けのWP8アプリでは 別の方法が必要 デモ
  8. 8. 日本での道順機能 熱田区を目的地に設定 四日市市からの道順
  9. 9. 日本向けWP8アプリでの地図表 示(1of2) 方法1 これまでのBingMapコントロールを 使う
  10. 10. 日本向けWP8アプリでの地図表 示(1of2) 方法1 これまでのBingMapコントロールを 使う 1. 参照の追加 C:Program Files (x86)Microsoft SDKsWindows Phone v8.0LibrariesMicrosoft.Phone.Controls.Maps.dll 2. 名前空間の追加 xmlns:bingmaps="clr-namespace:Microsoft.Phone.Controls.Maps; assembly=Microsoft.Phone.Controls.Maps“ 3. コントロールの配置 <bingmaps:Map/>
  11. 11. 日本向けWP8アプリでの地図表 示(2of2) 方法2 WP8のMapコントロールに VirtualEarth.netの地図データを読み 込む 高橋 忍のブログ 「Bing Map Control で日本の地図を」 http://blogs.msdn.com/b/shintak/archive/201 1/06/08/10172426.aspx hereMap.TileSources.Add( new Microsoft.Phone.Maps.Controls.TileSource( "http://ecn.t1.tiles.virtualearth.net/tiles/r{quadkey}.png?g=1"))
  12. 12. Google Mapの利用について Using our Services You must follow any policies made available to you within the Services. Don’t misuse our Services. For example, don’t interfere with our Services or try to access them using a method other than the interface and the instructions that we provide. Google利用規約 http://www.google.co.jp/intl/ja/policies/terms/regional.html Googleが提供したインターフェース以外での サービスの利用は禁止されている。 現時点では旧来のBingMapコントロールを使う 回避策がおすすめ 「Google Mapの地図データは使えないの?」 「MapコントロールでGoogle Mapの地図データを使う例をブログで見たこと があるけど?」 Google Mapの地図データは利用 できない!
  13. 13. Windows Phone8と位置情報 • 位置検出方法の比較 • WinRT APIでの位置検出方法とそのメリット
  14. 14. WPでの位置情報取得 .NET Location API Windows Runtime Location API クラス GeoCoordinateWatcher GeoLocator 名前空間 System.Device.Location Windows.Devices 測定精度(enum) GeoPositionAccuracy ・Default ・High PositionAccuracy ・Default ・High DesiredAccuracyInMeters 移動検知の制限 指定可 (MovementThresholdプロパティ) 指定可 (MovementThresholdプロパティ) 測定状態(enum) GeoPositionStatus ・Disabled (PFが未サポート、未許可) ・Ready (データ利用可能) ・Initializing (初期化中) ・NoData (データがまだない) PositionStatus ・Ready (データ利用可能) ・Initializing (初期化中) ・NoData (データがまだない) ・Disabled (ユーザが許可していない) ・NotInitialized (初期化されていない) ・NotAvailable (PFが対応していない) 測定方法 ・位置変更イベントでの通知 ・1回だけ測定 ・位置変更イベントでの通知 戻り値クラス System.Device.Location.GeoCoordinate Windows.Devices.Geolocation.Geoposition 利用可能WP WP7.x / WP8 WP8
  15. 15. GeoLocatorのメリット ネイティブコードからも利用できる 1回限りの測位メソッドが提供されている 連続測位で時間間隔、距離間隔を指定できる Win8ストアアプリとコードを共有できる
  16. 16. GeoLocatorの使い方(1回の測位) 準備 • ユーザに位置情報サービス利用可否の確認 設定 • GeoLocatorインスタンスの生成 • 測位精度(DesiredAccuracyInMeters, DesiredAccuracy)の設定 測位 • GetGeopositionAsyncメソッドの呼び出し(Geopositionを返す) • 取得した位置の取得、処理
  17. 17. GeoLocatorの使い方(1回の測位) Geolocator oneShotGeoLocator = new Geolocator { DesiredAccuracyInMeters = 50, }; try { Geoposition position = await oneShotGeoLocator.GetGeopositionAsync( TimeSpan.FromSeconds(30), // 30秒以内のキャッシュは利用可 TimeSpan.FromSeconds(10) // タイムアウト10秒 ); // 位置情報の処理 } catch (Exception ex) { if ((uint)ex.HResult == 0x80004004) { // Capabilityがない場合 } else { // その他の例外処理 } } キャッシュの有効期間・ タイムアウトを指定 精度を指定 デモ
  18. 18. GeoLocatorの使い方(連続測位) 準備 •ユーザに位置情報サービス利用可否の確認 設定 • GeoLocatorインスタンスの生成 • 測位精度、移動検知距離などの設定 • StatusChanged(状態変化)イベントの処理 • PositionChanged(位置変化)イベントの処理 → Trackingを開始 測位 • StatusChangedイベントの処理 • PositionChangedイベントの処理 後処理 • イベントハンドラの削除 • インスタンスの破棄
  19. 19. GeoLocatorの使い方(連続測位) { this.geoLocator = new Geolocator(); this.geoLocator.DesiredAccuracy = PositionAccuracy.High; this.geoLocator.MovementThreshold = 50; this.geoLocator.StatusChanged += geoLocator_StatusChanged; this.geoLocator.PositionChanged += geoLocator_PositionChanged; // ... } void geoLocator_PositionChanged(Geolocator sender, PositionChangedEventArgs args) { Dispatcher.BeginInvoke(() => { // 位置情報(args.Position)を処理 }); } void geoLocator_StatusChanged(Geolocator sender, StatusChangedEventArgs args) { Dispatcher.BeginInvoke(() => { // 状態(args.Status)を処理 }); } デモ 精度を指定 ここで測位を開始
  20. 20. 補足:エミュレータについて • Mapで指定した位置 をWPに取得させるこ とができる (7.x/8) • 位置の指定 • 移動順序に沿った再 生 • 位置の保存、読込み
  21. 21. 地図・位置情報のWEBサー ビス • 地図作成 • ジオコーダー • 移動経路 • ロケーション関連
  22. 22. Windows Phoneが 提供する機能 Windows Phoneが 提供しない機能 WP8の機能を補うためには 地理情報 住所 ランドマーク 道順の検索 交通情報 地図の表示 位置の検出 Webサービスを利用して 地理情報などを補う
  23. 23. 地図・位置情報関連のWebサービス 地図 •静的な地図の 生成 •標高の取得 •2点間の距離の 取得 ジオコーダ • 地名⇔位置情報 • 郵便番号⇔位置 情報 • ランドマーク⇔ 位置情報 道順 • 目的地までの移 動経路 ロケーション 情報 • 店舗情報 • 交通情報 (渋滞、 事故など) • 公共交通機関 (最寄り駅、バス 停など)
  24. 24. 代表的なWebサービス提供元 Bing Maps • 利用上の制約あり (http://www.microsoft.com/maps/product/terms.html) • http://www.microsoft.com/maps/ Yahoo! Open Local Platform (YOLP) • 日本国内の情報に基づいた独特のAPIがある • http://developer.yahoo.co.jp/webapi/map/ Google Maps • Windows Phoneでは利用不可 • https://developers.google.com/maps/?hl=ja
  25. 25. Google Maps APIの利用につい て (g) No Use of Content without a Google Map. You must not use or display the Content without a corresponding Google map, unless you are explicitly permitted to do so in the Maps APIs Documentation, or through written permission from Google. In any event, you must not use or display the Content on or in conjunction with a non-Google map. For example, you must not use geocodes obtained through the Service in conjunction with a non-Google map. Google Maps/Google Earth APIs Terms of Service https://developers.google.com/maps/terms?hl=ja Google Mapに表示せずにコンテンツを使うこと が禁止されている(例:ジオコーダーの結果) Google Mapが使えないWP8アプリでは、Google Maps APIを利用できない。
  26. 26. Webサービス比較 Bing Maps YOLP APキー 1IDで3個 (1個は試用) 1IDで10個 制限 Bing Mapで表示する 50000 transactions/24時間,1KEY 他サービスとの併用不可 50000 総リクエスト/1日,1KEY (午前0時にリセット) API AJAX V7 WindowsストアAP (JS, .NET) RESTサービス Spatial Dataサービス(REST) WPFコントロール Silverlightコントロール RESTサービス JavaScriptマップSDK SilverlightマップAPI iOSマップSDK AndroidマップSDK SilverlightマップSDK 機能 地図画像 ジオコーダ(緯度経度、住所、 郵便番号) 道順・交通情報 標高 地図画像 ジオコーダ(緯度経度、住所、 郵便番号) ロケーション情報 道順・距離・標高 不足したら別ID取得 (APごとにID取得) WPからはREST サービスを使用 WPからはREST サービスを使用
  27. 27. RESTサービスの利用方法 入力データ準備 •APIに入力するデータを準備する •GETメソッドのURLとして指定することが多い アクセス •指定されたHTTPメソッドでURLにアクセスする •WebRequestもしくはWebClientを使う 出力の解析 •HTTPレスポンスに含まれるサービスの出力を解析する •出力形式はJSONもしくはXMLが多い→クラスにデシリアライズすれば完了
  28. 28. デモ:ジオコーダ(住所→緯度・経度) APIの仕様調査 •マニュアルで入力、出力の仕 様を調べる •Webブラウザで手動で試して みる JSONの結果クラスの作成 •仕様調査で取得したJSONファ イルから結果クラスを作成す る •json viewer, json2csharpなどの 補助ツールを使うと便利 APIアクセスの実装 •JSON.NETなどを使ってAPIにア クセスする処理を実装する
  29. 29. まとめ 地図表示 •新しい地図コントロールは日本では実用的に使えない •旧来のBingMap版のMapコントロールを使う 位置検出 •WinRT版のGeoLocatorは、1回限りの測位メソッドがあり便利 •WP7.xとのコードの共通化をしなければ活用したい Webサービス •地図・位置情報を扱うアプリが必要とする機能を補える •RESTサービスの使い方はほぼ同じ。マニュアルを読んでブラウザでアクセスしてみる •利用規約にも注意が必要
  30. 30. 周辺の店舗等情報 (1of2)
  31. 31. 周辺の店舗等情報(2of2)
  32. 32. 移動経路の検索(1of3) 1. 出発地を入力 2. 出発地を選択 3. 同様に目的地を設定
  33. 33. 移動経路の検索(2of3)
  34. 34. 移動経路の検索 (3of3) • 画面を押し上げる と道順を表示 • 現在位置からの出発 の場合、ナビゲー ションも可能
  35. 35. 道順機能でのナビ(1of2) 熱田区を目的地に設定 四日市市からの道順
  36. 36. 道順機能でのナビ(2of2) 現在位置からの道順では ナビゲーション可能 ナビ対応APが未導入 ナビ対応APが導入済み

×