Pushpinを位置情報に合わせて移動させましょう。
コードは前述のものと、ほとんど同じです。TextBlockからPinに変わった程度ですね。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
 
using System.Device.Location;
 
namespace GPSLocation
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();
        }
 
        GeoCoordinateWatcher geoWatcher = new GeoCoordinateWatcher();
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {   
            geoWatcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(geoWatcher_PositionChanged);
 
            geoWatcher.Start();
        }
 
        void geoWatcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
        {
            Dispatcher.BeginInvoke(()=> Pin.Location = e.Position.Location);
 
        }
 
        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
        {
            geoWatcher.Stop();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.NavigationService.GoBack();
        }
    }
}
実行してみましょう。シミュレータに合わせてPushpinの位置が変われば、成功です。
Pushpinには、文字列だけではなく画像も表示できます。
XAMLでは、以下のように記述されます。
<Microsoft_Phone_Controls_Maps:Pushpin x:Name="Pin">
  <Microsoft_Phone_Controls_Maps:Pushpin.Background>
    <SolidColorBrush Color="{StaticResource PhoneAccentColor}"/>
  </Microsoft_Phone_Controls_Maps:Pushpin.Background>
  <Image Margin="0" Source="/Background.png" Stretch="Fill" Width="65" Height="65"/>
</Microsoft_Phone_Controls_Maps:Pushpin>
例えば、前々回の「Windows Phoneで動くカメラアプリ作成の基礎知識」で紹介したカメラアプリを組み合わせ、シャッターボタンと同時に位置情報を保存する機能を追加すると、地図上に写真を表示するアプリなどが開発できます。
Windows Phoneアプリで位置情報を利用する場合、その旨をユーザーに知らせる必要があります。これはアプリケーションポリシー2.0に該当します。
そのため、初回起動時にMessageBoxなどを使って、何に位置情報を利用するのかを明記したうえでユーザーの同意を得る必要があります。また、ユーザーがいつでも位置情報を無効にできるような設定項目も必要です。
スマートフォンを利用するうえで、位置情報を使ったアプリやサービスは必要不可欠になっています。一方で、最近はスマートフォンのアプリによる個人情報の収集が問題視されています。位置情報を扱うアプリを開発する場合は、利用目的を明らかにしてユーザーが安心して利用できるように心掛けると良いのではないでしょうか。
泉本優輝
UIデザインからプログラミング、表現までやりたい、自称クリエイティブデザイナ
“さわってみたい”を創ることが目標。フィジカルコンピューティングなどの試作を行う傍ら、コミュニティ活動ではExpression Blendを中心としたセッションを行っている
Copyright © ITmedia, Inc. All Rights Reserved.