0

Windows Phone 7 で経度と緯度を検出するために GeoCoordinateWatcher を使用しています

私は次のことをしました

 GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
  // Add event handlers for StatusChanged and PositionChanged events
        watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged);
        watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);
        watcher.MovementThreshold = 100;

        // Create A Timer for Getting the GPS Cooradinate every 10 seconds only
        System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer();

        // Start the Location service in the First time when the  Application run
        StartLocationService();
        // 15 minutes the interval of timer
        dt.Interval = new TimeSpan(0, 0, 0, 10, 0);

        // Add the Tick Method for event Handler
        dt.Tick += new EventHandler(Start_Service);

        // Start the Timer
        dt.Start();
    }

start_service メソッドで watcher.start を呼び出しています

問題は、場所が変わっていない場合でも、watcher_PositionChanged が 10 秒ごとに呼び出されることです !!! そして私はそれを知っていました

watcher.MovementThreshold = 100;

移動距離が100以上になったらwatcher_PositionChangedメソッドが呼び出されるのですが、そうはなりませんでした

注:エミュレータを使用してコードをテストしています

4

1 に答える 1

2

私が正しく理解している場合は、10 秒ごとに geowatcher を再度開始するため、10 秒ごとに再起動され、実際の座標が得られます。

位置が変化したときだけ 10 秒ごとにメソッドを呼び出したい場合は、 currentCoordinates と lastCoordinates の値を指定できます。各 PositionChanged イベントで currentCoordinates を書き込み、lastCoordinates と異なるかどうかを 10 秒ごとにテストします。または、Reactive Extensions を使用してイベントを組み合わせることができます。

于 2012-09-17T09:29:09.380 に答える