2010年7月8日

使用.NET4.0 编写简单的应用程序获知地理位置

.NET 4.0 中对于位置传感器提供了GeoCoordinateWatcher类。通过这个类能方便的访问传感器信息。刚才小写了一段代码,来演示将得到的地理位置显示在google map上面。首先来看看应用程序的界面:

image

代码如下:

public partial class Form1 : Form
{
    private GeoCoordinateWatcher _GeoCoordinateWatcher;
    public Form1()
    {
        InitializeComponent();
        _GeoCoordinateWatcher = new GeoCoordinateWatcher();
    } 

    private void Form1_Load(object sender, EventArgs e)
    {
        _GeoCoordinateWatcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(_GeoCoordinateWatcher_PositionChanged);
        _GeoCoordinateWatcher.Start();
    } 

    void _GeoCoordinateWatcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {
        if (!e.Position.Location.IsUnknown)
        {
            this.webBrowser1.Navigate(string.Format(CultureInfo.InvariantCulture, "{0}{1},{2}", new object[] { "http://maps.google.com/?ie=UTF8&z=15&q=", e.Position.Location.Latitude, e.Position.Location.Longitude }));
        }
    }
} 

注意事项:

1. 该应用程序使用VS2010编写,并且使用.NET Framework 4.0,而且要在工程中引用 System.Device

2. 确保你的操作系统是Windows 7.

3. 确保你已经成功的安装上了相关的传感器软件。推荐使用:geosenseforwindows

4. 一定要选中在控制面板中的传感器复选框。

 

OK。就写到这里,有兴趣的自己试试吧。

posted @ 2010-07-08 12:09 yangjingbo 阅读(124) 评论(0) 编辑

.NET 4.0 Location : 查看传感器状态变化

.NET 4.0 中关于访问传感器状态进行了封装。在.NET4.0 beta2中我们可以用GeoLocationProvider。但是现在我们可以方便的使用GeoCoordinateWatcher类进行获知。较以往的GeoLocationProvider现在的GeoCoordinateWatcher结构如下:

image

具体代码如下:

using System;
using System.Device.Location;
namespace LocationStatusChange
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Outputting location updates, press any key to exit...");
            LocationWatcher watcher = new LocationWatcher();
            Console.ReadKey();
        } 

    }
    class LocationWatcher
    {
        private GeoCoordinateWatcher provider; 

        public LocationWatcher()
        {
            this.provider = new GeoCoordinateWatcher();
            this.provider.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(provider_StatusChanged);
            this.provider.Start();
        } 

        void provider_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
        {
            Console.WriteLine("LocationStatus: " + e.Status.ToString());
        }
    }
} 

这个是运行的效果:

image

当我修改传感器让其不可用时:

image

这时应用程序能正确的捕捉到状态:

image

 

呵呵.NET4.0 真的很强大。

posted @ 2010-07-08 11:56 yangjingbo 阅读(118) 评论(0) 编辑

  

导航

公告

昵称:yangjingbo
园龄:6年2个月
粉丝:4
关注:3

搜索

 
 

常用链接

随笔分类

随笔档案

最新评论