SlideShare une entreprise Scribd logo
1  sur  36
Windows Phone 8
プログラミング
~地図&位置情報サービス編~
@第6回まどべんよっかいち
2013/7/27
青木 宣明(@kumar0001)
Agenda
• 新しい地図コントロール&タスク
• 日本での問題点
1. WP8と地図
• 2通りの方法
• エミュレータ
2. WP8と位置情報
• 地図作成
• ジオコーダー
• 移動経路
• ロケーション関連情報
3. 地図・位置情
報とWebサービス
4. まとめ
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
Microsoft.Phone.Maps.Contr
ols
地図表示タスク BingMapsTask MapsTask
道順表示タスク BingMapsDirectionsTask MapsDirectionsTask
地図DLタスク - MapDownloaderTask
地図更新タスク - MapUpdaterTask
地図表示タスク OS標準の地図APで指定場所を表示する
道順表示タスク OS標準の地図APで移動経路を表示する
地図DLタスク オフライン利用の地図データを取得する
(日本は対象外)
地図更新タスク オフライン利用の地図データを更新する
日本での問題点
日本では新しいマッ
プは非実用的
• 地図データが整備され
ていなくほぼ真っ白
• 移動経路の探索はでき
るが、地図データが乏
しいので実用に耐えな
い
日本向けのWP8アプリでは
別の方法が必要
デモ
日本での道順機能
熱田区を目的地に設定 四日市市からの道順
日本向けWP8アプリでの地図表
示(1of2)
方法1
これまでのBingMapコントロールを
使う
日本向け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/>
日本向け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"))
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の地図データは利用
できない!
Windows Phone8と位置情報
• 位置検出方法の比較
• WinRT APIでの位置検出方法とそのメリット
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
GeoLocatorのメリット
ネイティブコードからも利用できる
1回限りの測位メソッドが提供されている
連続測位で時間間隔、距離間隔を指定できる
Win8ストアアプリとコードを共有できる
GeoLocatorの使い方(1回の測位)
準備
• ユーザに位置情報サービス利用可否の確認
設定
• GeoLocatorインスタンスの生成
• 測位精度(DesiredAccuracyInMeters, DesiredAccuracy)の設定
測位
• GetGeopositionAsyncメソッドの呼び出し(Geopositionを返す)
• 取得した位置の取得、処理
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
{
// その他の例外処理
}
}
キャッシュの有効期間・
タイムアウトを指定
精度を指定
デモ
GeoLocatorの使い方(連続測位)
準備
•ユーザに位置情報サービス利用可否の確認
設定
• GeoLocatorインスタンスの生成
• 測位精度、移動検知距離などの設定
• StatusChanged(状態変化)イベントの処理
• PositionChanged(位置変化)イベントの処理 → Trackingを開始
測位
• StatusChangedイベントの処理
• PositionChangedイベントの処理
後処理
• イベントハンドラの削除
• インスタンスの破棄
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)を処理
});
} デモ
精度を指定
ここで測位を開始
補足:エミュレータについて
• 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/
Yahoo! Open Local Platform (YOLP)
• 日本国内の情報に基づいた独特のAPIがある
• http://developer.yahoo.co.jp/webapi/map/
Google Maps
• Windows Phoneでは利用不可
• https://developers.google.com/maps/?hl=ja
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を利用できない。
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
サービスを使用
RESTサービスの利用方法
入力データ準備
•APIに入力するデータを準備する
•GETメソッドのURLとして指定することが多い
アクセス
•指定されたHTTPメソッドでURLにアクセスする
•WebRequestもしくはWebClientを使う
出力の解析
•HTTPレスポンスに含まれるサービスの出力を解析する
•出力形式はJSONもしくはXMLが多い→クラスにデシリアライズすれば完了
デモ:ジオコーダ(住所→緯度・経度)
APIの仕様調査
•マニュアルで入力、出力の仕
様を調べる
•Webブラウザで手動で試して
みる
JSONの結果クラスの作成
•仕様調査で取得したJSONファ
イルから結果クラスを作成す
る
•json viewer, json2csharpなどの
補助ツールを使うと便利
APIアクセスの実装
•JSON.NETなどを使ってAPIにア
クセスする処理を実装する
まとめ
地図表示
•新しい地図コントロールは日本では実用的に使えない
•旧来のBingMap版のMapコントロールを使う
位置検出
•WinRT版のGeoLocatorは、1回限りの測位メソッドがあり便利
•WP7.xとのコードの共通化をしなければ活用したい
Webサービス
•地図・位置情報を扱うアプリが必要とする機能を補える
•RESTサービスの使い方はほぼ同じ。マニュアルを読んでブラウザでアクセスしてみる
•利用規約にも注意が必要
周辺の店舗等情報 (1of2)
周辺の店舗等情報(2of2)
移動経路の検索(1of3)
1. 出発地を入力 2. 出発地を選択 3. 同様に目的地を設定
移動経路の検索(2of3)
移動経路の検索 (3of3)
• 画面を押し上げる
と道順を表示
• 現在位置からの出発
の場合、ナビゲー
ションも可能
道順機能でのナビ(1of2)
熱田区を目的地に設定 四日市市からの道順
道順機能でのナビ(2of2)
現在位置からの道順では
ナビゲーション可能
ナビ対応APが未導入
ナビ対応APが導入済み

Contenu connexe

Plus de Nobuaki Aoki

お小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタお小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタNobuaki Aoki
 
このはちゃんとConoHaと私
このはちゃんとConoHaと私このはちゃんとConoHaと私
このはちゃんとConoHaと私Nobuaki Aoki
 
Apache Usergridについて(公開用)
Apache Usergridについて(公開用)Apache Usergridについて(公開用)
Apache Usergridについて(公開用)Nobuaki Aoki
 
Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)Nobuaki Aoki
 
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)Nobuaki Aoki
 
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Nobuaki Aoki
 
Blog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerBlog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerNobuaki Aoki
 
第1回三重合同懇親会
第1回三重合同懇親会第1回三重合同懇親会
第1回三重合同懇親会Nobuaki Aoki
 
IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編Nobuaki Aoki
 
Getting started with edison
Getting started with edisonGetting started with edison
Getting started with edisonNobuaki Aoki
 
第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知Nobuaki Aoki
 
第1回三重合同懇親会の告知
第1回三重合同懇親会の告知第1回三重合同懇親会の告知
第1回三重合同懇親会の告知Nobuaki Aoki
 
(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについて(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについてNobuaki Aoki
 
まどべんよっかいちのご紹介
まどべんよっかいちのご紹介まどべんよっかいちのご紹介
まどべんよっかいちのご紹介Nobuaki Aoki
 
Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築Nobuaki Aoki
 
mbedとwindows 8.1
mbedとwindows 8.1mbedとwindows 8.1
mbedとwindows 8.1Nobuaki Aoki
 
Windows.Web.Http.HttpClientとWebAuthenticationBroker
Windows.Web.Http.HttpClientとWebAuthenticationBrokerWindows.Web.Http.HttpClientとWebAuthenticationBroker
Windows.Web.Http.HttpClientとWebAuthenticationBrokerNobuaki Aoki
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Nobuaki Aoki
 
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)Nobuaki Aoki
 
Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)Nobuaki Aoki
 

Plus de Nobuaki Aoki (20)

お小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタお小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタ
 
このはちゃんとConoHaと私
このはちゃんとConoHaと私このはちゃんとConoHaと私
このはちゃんとConoHaと私
 
Apache Usergridについて(公開用)
Apache Usergridについて(公開用)Apache Usergridについて(公開用)
Apache Usergridについて(公開用)
 
Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)Kumalicaのご紹介(公開用)
Kumalicaのご紹介(公開用)
 
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
Windows 10 mobile uwpアプリの始め方~continuum編~ (公開用)
 
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)Windows 10 mobileでnfc~suica・edy対応編~(公開用)
Windows 10 mobileでnfc~suica・edy対応編~(公開用)
 
Blog=pelican+bit bucket+docker
Blog=pelican+bit bucket+dockerBlog=pelican+bit bucket+docker
Blog=pelican+bit bucket+docker
 
第1回三重合同懇親会
第1回三重合同懇親会第1回三重合同懇親会
第1回三重合同懇親会
 
IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編IoTの始め方~.NET Micro Framework編
IoTの始め方~.NET Micro Framework編
 
Getting started with edison
Getting started with edisonGetting started with edison
Getting started with edison
 
第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知第11回まどべんよっかいちの告知
第11回まどべんよっかいちの告知
 
第1回三重合同懇親会の告知
第1回三重合同懇親会の告知第1回三重合同懇親会の告知
第1回三重合同懇親会の告知
 
(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについて(仮)登別クマ牧場のテツロウについて
(仮)登別クマ牧場のテツロウについて
 
まどべんよっかいちのご紹介
まどべんよっかいちのご紹介まどべんよっかいちのご紹介
まどべんよっかいちのご紹介
 
Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築Microsoft Azure Mobile Serviceによるアプリ構築
Microsoft Azure Mobile Serviceによるアプリ構築
 
mbedとwindows 8.1
mbedとwindows 8.1mbedとwindows 8.1
mbedとwindows 8.1
 
Windows.Web.Http.HttpClientとWebAuthenticationBroker
Windows.Web.Http.HttpClientとWebAuthenticationBrokerWindows.Web.Http.HttpClientとWebAuthenticationBroker
Windows.Web.Http.HttpClientとWebAuthenticationBroker
 
Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築Windows Azure Mobile Servicesによるアプリ構築
Windows Azure Mobile Servicesによるアプリ構築
 
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
Windows phone 8のデバイスを使おう~カメラ&フォト編~(公開用)
 
Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)Windows phone 8のデバイスを使おう~近接通信編~(公開用)
Windows phone 8のデバイスを使おう~近接通信編~(公開用)
 

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

Notes de l'éditeur

  1. BingMapsTask, BingMapsDirectionsTaskはWP8で動かすとNokiaMapが表示される。 Lumia820およびエミュレータで確認。 WP7.1用のプロジェクトを作成して、IS12Tで実行するとBing Mapアプリケーションが起動する。 ただし、道順の精度はよくない。