0

我有几个关于Geolocator和 property的问题DesiredAccuracy

我有方法GetMyPosition

public async Task<Geoposition> GetMyPosition()
            {
                Geoposition myGeoposition = null;
                Geolocator myGeolocator = new Geolocator();
                myGeolocator.DesiredAccuracy = PositionAccuracy.High;
                try
                {
                    myGeoposition = await myGeolocator.GetGeopositionAsync();
                    return myGeoposition;
                }
                catch (Exception ex)
                {
                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            MessageBox.Show("Can't get the position");

                        });
                    return null;
                }
            }

1) 为什么

Geolocator.DesiredAccuracy = PositionAccuracy.High;    
Geolocator.GetGeopositionAsync(); 

总是Geoposition.Coordinate.PositionSource = Cellular以 400 - 1600 m 的精度返回(在诺基亚 Lumia 520 设备上)?

2)在什么设置下我可以获得高精度(50 - 100 m)和PositionSource = Satellite

3)如果我的设备上有加载的地图并且我在设备上激活了飞行模式,那么代码

 Geolocator myGeolocator = new Geolocator();
    myGeolocator.DesiredAccuracy = PositionAccuracy.High;
    try
    {
         myGeoposition = await myGeolocator.GetGeopositionAsync();
         return myGeoposition;
    }

将工作?没有手机,只有卫星?

4)坐标精度有多强取决于设备?

提前致谢!

4

2 回答 2

2

取自MSDN

尽管位置服务使用多个位置信息源,并且任何源可能在任何给定时间都不可用(例如,可能无法访问 GPS 卫星或手机信号塔),但本机代码层处理评估可用数据并选择最佳来源。您的应用程序需要做的就是在高精度或默认的功率优化设置之间进行选择。您可以在初始化主要位置服务类 GeoCoordinateWatcher 时设置此值。

C#

GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);

因此,您似乎无法控制使用哪个源,而是将根据指定的位置精度使用可用的源GeoCoordinateWatcherGeoCoordinateWatcher尝试以高精度初始化 a ,看看会发生什么

var geoWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
于 2013-05-27T07:40:36.363 回答
1

您可以使用

Geolocator myGeolocator = new Geolocator();
myGeolocator.DesiredAccuracyInMeters = 20;
...

明确说明您希望该位置有多准确,这将使设备能够更好地管理其功率,但是您的结果是否接近该精度取决于设备可以获得的位置的质量。例如,如果您在建筑物内,如果不连接 WIFI,您将无法获得如此准确的信息

于 2013-10-14T13:08:35.490 回答