TF Seminor 4/15 Windows Phone7 Deep Dive フォロー – その2


4/15に開催したDeep Diveセミナー、もう直ぐ資料公開(ってプロジェクターにつながらなかったので、お初なんですが・・・)の予定ですが、BingMapのセンター位置を変更するコードが間違っていたので、投稿しておきます。公開資料は修正しときます。

GeoCoordinateWatcherオブジェクトのPositionChangedイベントに登録したハンドラのコードは、これも別スレッドなので

private delegate void UpdatePositionOnMapHandler(
    GeoPositionChangedEventArgs<GeoCoordinate> e);

void locationWatcher_PositionChanged(
    object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    this.Dispatcher.BeginInvoke(
        new UpdatePositionOnMapHandler(UpdatePositionOnMap),
        new object[] { e });
}

として、UIのDispatcherキューに入れ、

private void UpdatePositionOnMap(
    GeoPositionChangedEventArgs<GeoCoordinate> e)
{
    var position = new GeoCoordinate(
        e.Position.Location.Latitude,
        e.Position.Location.Longitude);
    map1.SetView(position, 10);
}

というコードを書けば、位置が更新されたときに、受け取った緯度、経度が中心に表示されるようになります。配布資料の様にCenterプロパティの更新では、表示は変わりません。

以上、参考になれば幸いです。

Comments (0)

Skip to main content