所以我使用this guide,但在测试中没有运气来决定它是否工作。该代码的唯一变体是,不是更改TextBlock,而是设置一个在函数之外声明的静态GeoCoordinate对象。在WP7仿真器中测试位置
public static void PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
coord = e.Position.Location;
}
好吧,我改变现状的事情,而不是显示在文本框中,以显示与OK按钮一个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();
但是,如果我不初始化坐标,它的错误了(可以理解),但如果我这样做=新会有地理座标();它会返回所有数字项目的NaN。我已经在事件处理程序中设置了断点(从未碰到过预期的行为?)
在模拟器中,我使用了>>东西,将它设置为生存并选择了几个位置,设置切换位置的时间到10秒,并在运行调试时播放它。我是否正确执行调试/运行仿真器的位置部分?
更新:更新后删除字符串等等项目以创建一个基于位置的列表,它似乎工作。
的PropertyChanged事件您看起来没有任何代码在坐标变化时更新视图? –
我在文档中看到的唯一的事情是使用status/position changed事件,并且在示例的情况下,更新了TextBlock控件。我想在应用程序加载时更新当前位置,以便我可以获得一般区域中的事物列表。有超出它的代码(blah是一个用于测试的变量),但是blah以“NaN; NaN”的形式返回,这阻止了前进的检查。 – Robert
我的意思是你的'PositionChanged'方法更新你的'coord',*但你从来没有读过它*除非它有机会被设置,你的代码也没有使用任何数据绑定来自动更新 - 如果你的坐标在您的ViewModel上(假设您遵循MVVM模式,按照属性名称),那么侦听位置更改的事件处理程序也可能引发当前'blah'变量的ViewModel版本的PropertyChanged事件 –