0

我正在使用 GeoCoordinateWatcher 来检测 windows phone 7 中的对数和纬度

我做了以下

 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 秒再次启动一次地理观察器,因此每 10 秒它会重新启动并产生实际坐标。

如果您只想在位置发生变化时每 10 秒调用一次方法,则可以使用 currentCoordinates 和 lastCoordinates 值。您使用每个 PositionChanged 事件编写 currentCoordinates,并且每 10 秒测试一次它是否与 lastCoordinates 不同。或者更好的是,您可以使用响应式扩展来组合事件。

于 2012-09-17T09:29:09.380 回答