GPSのロギングを行う
前回位置情報を取得したのと同じく,
GeoCoordinateWatcher watcher;
private void btnLocation_Click(object sender, EventArgs e)
{
// GeoCoordinateWatcherの初期化を行う
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
// 10m移動したら反応
watcher.MovementThreshold = 10;
// 位置が変更された(PositionChanged)イベントをイベントハンドラに追加する
watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
// データの取得を開始する
watcher.Start();
}
前回の位置情報を記憶しておき,
GeoCoordinate backCoordinate;
// PositionChangedイベントハンドラから呼ばれるカスタムメソッド
void MyPositionChanged(GeoPosition<GeoCoordinate> e)
{
// データを取得した位置を中心にする
map1.Center = e.Location;
// 現在地にピンを立てる
var pin = new Microsoft.Phone.Controls.Maps.Pushpin()
{
Background = new SolidColorBrush(Colors.DarkGray),
Location = e.Location
};
map1.Children.Add(pin);
if (backCoordinate != null)
{
// 線を引く
var polyline = new Microsoft.Phone.Controls.Maps.MapPolyline()
{
Locations = new LocationCollection(),
Stroke = new SolidColorBrush(Colors.Red),
StrokeThickness = 5
};
polyline.Locations.Add(backCoordinate);
polyline.Locations.Add(e.Location);
map1.Children.Add(polyline);
}
// 今回の位置情報を記録しておく
backCoordinate = e.Location;
}
阪急十三駅からJR塚本駅まで移動したときのログを元に,
Windows Mobile 6でGPSの位置情報を取得する
おまけにWindows Mobile 6で位置情報を取得する方法についてご紹介したいと思います。Windows Phone 7のように優れたロケーションサービスがなく,
Windows Mobile 6では,
ソリューションエクスプローラーから以下のプロジェクトを追加します。Visual Studio 2008を使ってWindows Mobile 6アプリケーションを開発されている方は,
%ProgramFiles%\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS
位置情報を取得する
Windows Mobile 6アプリケーションプロジェクトから,
GPSクラスのインスタンスを生成して,
このGPSクラスは内部的にCOMポートをポーティングして,
private void button_Click(object sender, EventArgs e)
{
Microsoft.WindowsMobile.Samples.Location.Gps gps
= new Microsoft.WindowsMobile.Samples.Location.Gps();
try
{
// 測位を開始するためにGPSデバイスのポートを開きます
gps.Open();
while (gps.GetDeviceState().DeviceState != GpsServiceState.On)
{
// 位置情報を取得できるようになるまでウェイト
System.Threading.Thread.Sleep(1000);
}
// 位置情報を取得
Microsoft.WindowsMobile.Samples.Location.GpsPosition pos
= gps.GetPosition();
}
finally
{
// 測位を終了するためにGPSデバイスのポートを閉じます
gps.Close();
}
}
SDKのサンプルコードとはいえ,
さいごに
Windows Mobile 6とWindows Phone 7で,
Microsoftは積極的にローカライズを進めていると発表しているので,
以上で今回は終わりです。ありがとうございました。