[Silverlight] 當麻許的Phone7筆記 - 18.定位服務(Location Service)

2011/02/08

今天來寫一篇很有趣的東西..
跟上一篇 地圖控制項(Microsoft.Phone.Controls.Maps) 有些關係,如果配合使用會很好玩…

目前手機上面有很多LBS(Location-Based Service) 的服務,像是foursquare
其中不外乎最重要的功能就是在手持裝置上面取得user的所在位置…
在Windows Phone 7 中是否可以做到呢?!

是的,而且並不難…

介紹一下版面配置:
blog-23



按下 btnLocateMe 之後 會將目前手機的所在地定位出來,並且將經緯度顯示在txtLocation 之中..

其中我們會使用到 GeoCoordinateWatcher 類別,此類別會提供目前位置提供者提供的座標位置資料
定位方法包含GPS 還有wifi 三角定位,不過別擔心這些東西我們不需要去詳細知道底層,我們只要很溫馨的拿來用就好了..

首先記得先

using System.Device.Location;

來直接看一下C# Code :


using System.Device.Location;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Controls.Maps;

namespace LocationService
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        GeoCoordinateWatcher geoCoordinateWatcher = new GeoCoordinateWatcher();

        private void btnLocateMe_Click(object sender, RoutedEventArgs e)
        {
               //當位置改變時驅動的事件時驅動
                geoCoordinateWatcher.PositionChanged +=geoCoordinateWatcher_PositionChanged;

                //起始從目前位置提供者取得資料的作業。 這個方法會啟用 PositionChanged 事件並且允許存取 Position 屬性。
                geoCoordinateWatcher.Start();
              
         
        }

        void geoCoordinateWatcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
        {
            var myLayer = new MapLayer();
            //將地圖插入一個MapLayer
            myMap.Children.Add(myLayer);


            Pushpin ppHeeyuki = new Pushpin();
            //在MapLayer加入pin並且標記位置
            myLayer.AddChild(ppHeeyuki, new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude));

            //將標記位置設成地圖中央
            this.myMap.SetView(new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude), 16);

            // Latitude 緯度, Longitude 經度
            this.txtLocation.Text = e.Position.Location.Latitude + "," + e.Position.Location.Longitude;
        }
    }
}
其中當位置改變的時候我會將地圖標示出位置出來…

關於地圖加入Pushpin(標示點) 還有顯示經緯度可以參考  地圖控制項(Microsoft.Phone.Controls.Maps)

範例結果:

IMG_0379

讚一下:



範例下載:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.