Windows Phone 地图定位 及导出GPX文件

本文介绍了如何使用ArcGIS Runtime for Windows Phone SDK进行地图定位,并详细讲解了GeoCoordinateWatcher类的参数设置、启动定位、状态监控、结果处理及停止定位的步骤。此外,还阐述了如何将定位数据导出为GPX文件,包括GpsInfo对象的设计和GpxWriter的实现,以便在其他软件中使用。
摘要由CSDN通过智能技术生成

1  概述

通过ArcGIS Runtime for WindowsPhone SDK开发手机地图应用,能够定位所在位置,并将多个定位位置信息导出为GPX文件,供其他软件,如ArcMap、Google Earth等调用。本文将介绍如何实现地图定位,以及导出GPX文件的功能。

2  GeoCoordinateWatcher

Windows Phone SDK提供了GeoCoordinateWatcher类实现定位相关功能,需要引入System.Device.dll库,添加System.Device.Location命名空间。

2.1 参数设置

使用GeoCoordinateWatcher,需要创建一个实例,并设置定位精度、移动间距等基本属性,另外监听状态变化、结果变化等事件。如下代码所示:

if (_watcher == null)
{
    _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); // 使用高定位精度                
    _watcher.MovementThreshold = 50; // 最小移动间距,单位米,大于该间距的点才会触发PositionChanged事件
    _watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
    _watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
}

2.2 启动定位

启动定位功能,即调用GeoCoordinateWatcher的Start方法,如下:

_watcher.Start();

2.3 定位状态

监听定位状态变化事件,如果出错可提示用户,如下:

void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
    switch (e.Status)
    {
        case GeoPositionStatus.Disabled:                    
            if (_watcher.Permission == GeoPositionPermission.Denied)
            {            
                txtStatus.Text = "应用程序无权访问定位服务";
            }
            else
            {
                txtStatus.Text = "设备不支持定位服务";
            }
            break;
        case GeoPositionStatus.Initializing:                    
            break;
        case GeoPositionStatus.NoData:                    
            txtStatus.Text = "获取定位数据失败"; 
            break;
        case GeoPositionStatus.Ready:
            txtStatus.Text = "GPS已经就绪";
            break;
    }
}

2.4 定位结果

对定位结果的处理,需要在定位位置变化事件中进行,如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值