Windows Phone 8 Geolocator 无法设置desiredAccuracy = High 并且绑定到 PositionChanged 事件
Posted
技术标签:
【中文标题】Windows Phone 8 Geolocator 无法设置desiredAccuracy = High 并且绑定到 PositionChanged 事件【英文标题】:Windows Phone 8 Geolocator can't set desiredAccuracy = High AND tie into PositionChanged event 【发布时间】:2013-10-04 02:58:05 【问题描述】:背景:我精通 WPF/XAML,但对 Windows Phone 8 不熟悉。
希望我只是缺少一些愚蠢的东西......
我希望 DesiredAccuracy 高,但我也想挂钩 PositionChanged 事件。
当下面的代码到达 _GeoLocator.DesiredAccuracy = PositionAccuracy.High;它会中止。如果关闭,一切正常,但我真的想要高精度。
这两者似乎是相互排斥的。
错误消息是:操作中止(来自 HRESULT 的异常:0x80004004 (E_ABORT))。我已启用定位功能。
违规代码示例:
public MainPage()
InitializeComponent();
_GeoLocator.MovementThreshold = 1;
_GeoLocator.PositionChanged += (Geolocator sender, PositionChangedEventArgs args) =>
//UpdateLocation(args);
Console.WriteLine("Position Changed");
;
//THIS WILL THROW...WHY?? IF I COMMENT OFF POSITIONCHANGED ABOVE, IT WORKS FINE.
_GeoLocator.DesiredAccuracy = PositionAccuracy.High;
【问题讨论】:
【参考方案1】:您必须在“PositionChanged”事件处理程序(Similar question)之前设置“DesiredAccuracy”。
_GeoLocator.MovementThreshold = 1;
_GeoLocator.DesiredAccuracy = PositionAccuracy.High;
_GeoLocator.PositionChanged += (Geolocator sender, PositionChangedEventArgs args) =>
//UpdateLocation(args);
Console.WriteLine("Position Changed");
;
【讨论】:
谢谢...这是赢家。从发布的(类似问题)链接:“在获取位置时,不允许更改任何通知参数(MovementThreshold、DesiredAccuracy 或 ReportInterval)。这包括位置更改(PositionChanged 事件)以及获取位置异步( GetPositionAsync)。如果要更改通知参数,您必须取消订阅所有事件和/或等到 GetPositionAsync 完成后再进行更改。"以上是关于Windows Phone 8 Geolocator 无法设置desiredAccuracy = High 并且绑定到 PositionChanged 事件的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 8 与 windows 8 开发技术概览
Windows Phone 8 与 windows 8 开发技术概览
xml 适用于Windows 8.1和Windows Phone 8.1应用程序的扩展器控件演示。
Windows Phone:PositionChanged 未触发 Windows 8