1

0.5メートルごとにGeoCoordinateWatcherPositionChangedイベントを発生させる以下のコードがあります。それより少ない場合がありますが、それが私の要件です。

問題は、電話で歩いているときに、コードが0.5メートルごとにイベントを発生させるのではなく、0.5メートル後にランダムにイベントを発生させることです。また、速く移動すると、すぐにいくつかのイベントが発生することがあります。

誰かが0.5メートルごとに正確に位置変更イベントを発生させる方法を教えてもらえますか?

            watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
            if (watcher.Permission == GeoPositionPermission.Granted)
            {
                watcher.MovementThreshold = 0.5;//in meters
            }

            watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged);    //   PositionChanged events occur whenever your position changes     
            watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_OnStatusChanged);
            watcher.Start();
4

3 に答える 3

1

GeoPositionAccuracy は必ず高く設定する必要があります。Default はセルラー/wifi を使用して位置を特定するのに対し、High は電話の GPS を使用すると思います。デフォルトは主に、一般的な場所を探しているときにのみ使用されます。

于 2012-11-13T15:09:45.000 に答える
0

完全にはわかりませんが、なぜ次のコードを使用しているのかわかりません。

if (watcher.Permission == GeoPositionPermission.Granted) {
watcher.MovementThreshold = 0.5;//メートル単位 }

ウォッチャーの権限を確認する必要があるのはなぜですか? すぐに MovementThreshold を定義してみませんか? これにより、データの速度が向上する場合があります。また、GeoPositionAccuracy を Default に設定します。より正確に発射したい場合は、GeoPositionAccuracy.Highを使用します。

于 2012-11-11T05:18:07.150 に答える
0

また、水平および垂直の精度データの詳細を取得するために、次のこともできると確信しています。

 e.Position.Location.HorizontalAccuracy.ToString();
 e.Position.Location.VerticalAccuracy.ToString();
于 2012-11-14T01:17:38.393 に答える