1

我有下面的代码,每0.5个气泡就会触发GeoCoordinateWatcher PositionChanged事件。它可能会更少。但那就是我的要求。windows phone中的GeoCoordinateWatcher在给定的时间间隔内不触发事件

问题是当我用手机行走时,代码每隔0.5米就不会触发事件,而是随机在0.5米后触发事件。有时当我快速移动时,它会立即触发几个事件。

任何人都可以帮助我确保它准确地每0.5米触发positionchanged事件。

  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(); 

回答

0

我不能完全肯定,但我不知道为什么你使用下面的代码:

如果(watcher.Permission == GeoPositionPermission.Granted) {
守望者。 MovementThreshold = 0.5; //以米为单位 }

为什么您需要检查观察者的权限?为什么不继续并立即定义MovementThreshold?这可能有助于提高数据的速度。此外,您将GeoPositionAccuracy设置为默认。如果你想让它更准确地射击,请使用GeoPositionAccuracy.High

1

GeoPositionAccuracy应该一定设置为高。我相信Default将使用蜂窝/无线网络来确定位置,而High将使用手机上的GPS。默认主要用于您只需查找一般位置的情况。

0

而且,我敢肯定有,你也可以执行以下操作以获取的水平和垂直精度,数据的细节:

e.Position.Location.HorizontalAccuracy.ToString(); 
e.Position.Location.VerticalAccuracy.ToString(); 
相关问题