【发布时间】:2013-06-07 06:28:37
【问题描述】:
我正在像这样使用 Windows Phone GeoWatcher 获取坐标
private GeoCoordinateWatcher _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
_watcher.MovementThreshold = 2; // Threshold Value
_watcher.PositionChanged += Watcher_PositionChanged; //Registering Watcher Position Change Event
_watcher.Start(); // Starting Watcher
//Watcher position Change Event
private void Watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
var coord = new GeoCoordinate(Convert.ToDouble(e.Position.Location.Latitude.ToString("0.00000").Replace(",", ".")), Convert.ToDouble(e.Position.Location.Longitude.ToString("0.00000").Replace(",", ".")));
}
但我在同一个地方得到不同的经度和纬度值,即使我没有移动并且我也设置了阈值。如果我没记错的话,阈值意味着如果您至少覆盖了那么远的距离,那么它将为您提供新的坐标。 由于当我静止不动时同一地点的坐标值不同,我的应用程序在距离检查中失败。因为它返回两个坐标的非零距离,实际上我没有移动。
这是我在同一地点捕获的一些读数。为了更好地分析,我删除了一些 0 距离条目。
Previous POint 31.49858, 74.36393 New Points 31.49858, 74.36393 distance 0
Previous POint 31.49858, 74.36393 New Points 31.49345, 74.36399 distance 570.95
Previous POint 31.49345, 74.36399 New Points 31.4935, 74.36195 distance 193.671
Previous POint 31.4935, 74.36195 New Points 31.4933, 74.36207 distance 25.002
Previous POint 31.4933, 74.36207 New Points 31.49324, 74.36264 distance 54.502
Previous POint 31.49324, 74.36264 New Points 31.49345, 74.36399 distance 130.226
Previous POint 31.49345, 74.36399 New Points 31.49355, 74.36227 distance 163.603
Previous POint 31.49352, 74.36229 New Points 31.49349, 74.36231 distance 3.840
Previous POint 31.49345, 74.36235 New Points 31.49343, 74.36238 distance 3.613
如果我不改变我的位置,我如何才能在距离方面达到准确度?它不应该给我不同的坐标。
【问题讨论】:
-
它总是发生,还是只在开始时发生?我认为这可能会发生,因为传感器没有获得非常准确的数据。
-
@anderZubi:它不时发生。假设我正在寻找位置 10-15 分钟,我得到了很多读数,有些读数返回相同的纬度,但有些读数就像我上面的数据。
-
有时读数可能不是很准确。发生这种情况的原因是传感器从较少的卫星、附近的建筑物、天气状况...
-
我在手机上发现了同样的问题。你最后是怎么解决这个问题的?
-
嗨,我需要提高我的阈值。它取决于@您所在的位置。你正在从哪个 GPS 获取位置。要么你是从手机信号塔得到的,要么你的手机 GPS 有多准确。所以有很多因素
标签: c# windows-phone-7 geolocation gps geocoding