我覺得你是想了解MovementThreshold如何工作,以及如何設置的。
基本上你可以說:
public class MyClass
{
private IGeoPositionWatcher<GeoCoordinate> _geoCoordinateWatcher;
/// <summary>
/// Gets the geo coordinate watcher.
/// </summary>
private IGeoPositionWatcher<GeoCoordinate> GeoCoordinateWatcher
{
get
{
if (_geoCoordinateWatcher == null)
{
_geoCoordinateWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
((GeoCoordinateWatcher)_geoCoordinateWatcher).MovementThreshold = 3;
}
return _geoCoordinateWatcher;
}
}
}
別的地方,你可能有
DispatcherTimer currentSpeedTimer = new DispatcherTimer();
currentSpeedTimer.Interval = new TimeSpan(0, 0, 1);
currentSpeedTimer.Tick += (sender, e) =>
{
if (this.GeoCoordinateWatcher.Position.Location.HorizontalAccuracy < 10)
{
if (DateTime.Now - this.GeoCoordinateWatcher.Position.Timestamp.DateTime > new TimeSpan(0, 0, 2))
{
CurrentSpeed = 0;
}
else
{
CurrentSpeed = double.IsNaN(this.GeoCoordinateWatcher.Position.Location.Speed) ? 0 : this.GeoCoordinateWatcher.Position.Location.Speed;
}
}
};
currentSpeedTimer.Start();
這也是值得指出的是,我發現使用.NET無擴展和IGeoPositionWatcher工作合作的很好的我。
http://msdn.microsoft.com/en-us/data/gg577609.aspx
我假設,以確定是否當前位置>20米設備必須觸發位置鎖定。我試圖瞭解什麼決定了發生這種事情的頻率。 – bml
在我看來,定位發生在狀態發生改變時發生。對我來說,這聽起來像是「定位」發生了,意味着當前位置距離之前的位置已經> 20米。 –
這是網站http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinatewatcher.statuschanged.aspx –