1

分かりましたらお聞きしたいです。このような BackgroundAgent のメソッド OnInvoke で GeoCoordinateWathcer を作成すると:

protected override void OnInvoke(ScheduledTask task)
{
    _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
                   {
                       MovementThreshold = 100
                   };
    _watcher.PositionChanged += PositionChanged;
    _watcher.Start();
}

100m 以上移動すると Task が呼び出されるため、PositionChanged は以前の位置を覚えていません。それは真実ですか?次に、PositionChanged イベントは BackgroundAgent では意味がありませんか? 100m ごとに自分の位置をアップグレードしたい場合は、以前の位置を保存し、たとえば以前の位置と現在の位置から Haversine 式で距離を計算する必要がありますか? ありがとう。

4

1 に答える 1