0

私はロケーションベースのソーシャルネットワーキングアプリケーションを開発しており、ユーザーのロケーションを取得するために、高精度で20mの移動しきい値でgeocoordinatewatcherを使用しています。私の質問は、場所の修正の頻度についてです。ドキュメントから、20mの移動しきい値は、現在の場所が前の位置変更イベントの場所から20m離れている場合、位置変更イベントがトリガーされないことを意味していることを収集します。これは、ロケーションの修正が引き続き行われていることを示していますが、20m未満の場合はイベントハンドラーをトリガーしません。次に、デバイスはロケーション修正を実行する頻度をどのように決定しますか?移動しきい値を変更すると、これは何らかの形で変更されますか?私が見逃したかもしれない追加のドキュメントは大歓迎です!

ありがとうございました!

4

2 に答える 2

1

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 Reactive Extensions と IGeoPositionWatcher を使用して作業した結果、非常にうまく機能したことも指摘しておく価値があります。

http://msdn.microsoft.com/en-us/data/gg577609.aspx

于 2013-01-11T19:48:37.050 に答える
0

私には、前の位置から20mを超える現在の場所でイベントが発生したように聞こえます。

しきい値を変更する方法がある場合、それは別の方法でトリガーされるようですが、最大解像度は20mになる可能性があります。これは通常、衛星が最大解像度として持っているものであるためです。

于 2013-01-11T19:22:50.090 に答える