在WP7模拟器中测试位置

时间:2012-06-12 14:29:25

标签: gps location windows-phone-7.1

所以我正在使用this guide,但在测试时没有运气,无法判断它是否正常工作。该代码的唯一变化是,我没有更改TextBlock,而是设置在函数外部声明的静态GeoCoordinate对象。

public static void PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {
        coord = e.Position.Location;
    }

好吧,我将状态更改为显示在文本框中,而不是显示带有确定按钮的MessageBox,并删除了按钮事件。

在MainPage渲染中我有:

private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        if (watcher == null)
        {
            watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
            watcher.MovementThreshold = 20;

            watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(StatusChanged);
            watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(PositionChanged);
        }
        watcher.Start();
        if (!App.ViewModel.IsDataLoaded)
        {
            string blah = "";
            blah += coord.Latitude.ToString();
            blah += "; " + coord.Longitude.ToString();

但是,如果我没有初始化coord,它就会出错(可以理解)但是如果我做了= new GeoCoordinate();它返回所有数字项的NaN。我在事件处理程序中设置了断点,这些断点从未命中(虽然预期的行为?)

在模拟器中,我使用了&gt;&gt;把它设置为现场并选择几个位置,设置将位置切换到10秒的时间并在运行调试时播放它。我是否错误地调试/运行模拟器的位置部分?

更新:在更新它以删除字符串blah项目以根据位置创建列表后,它似乎正在工作。

1 个答案:

答案 0 :(得分:0)

您的PositionChanged方法会更新您的坐标,但除非您有机会设置,否则您从未阅读它,您的代码也不会使用任何数据绑定来自动更新 - 如果您的坐标是在您的ViewModel上(假设您遵循MVVM模式,按属性名称),那么侦听位置更改的事件处理程序也可能会为当前{{的ViewModel版本引发PropertyChanged事件。 1}}变量