【发布时间】:2018-07-17 10:03:38
【问题描述】:
我正在尝试获取 WinRT 应用程序的当前位置。 但是 PositionChanged 事件永远不会被触发。 非常感谢任何帮助!
在 Package.appxmanifest 中,我启用了位置。 我的代码如下:-
Geolocator geolocator = new Geolocator { ReportInterval = 2000 };
geolocator.DesiredAccuracyInMeters = 100; // specify your range
geolocator.PositionChanged += OnPositionChanged;
private async void OnPositionChanged(Geolocator sender, PositionChangedEventArgs e)
{
if (this.previousLocationState == LocationStates.PopupEmpty && (viewModel.Coordinate == null || viewModel.Coordinate.Latitude != prevGpsCoordinate.Latitude || viewModel.Coordinate.Longitude != prevGpsCoordinate.Longitude))
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
this.viewModel.Coordinate = new GpsCoordinate { Latitude = e.Position.Coordinate.Point.Position.Latitude, Longitude = e.Position.Coordinate.Point.Position.Longitude };
Field.GpsCoordinate gpsCoord = new Field.GpsCoordinate { Latitude = viewModel.Coordinate.Latitude, Longitude = viewModel.Coordinate.Longitude };
CreateMapPin(gpsCoord);
prevGpsCoordinate = this.viewModel.Coordinate;
});
}
}
【问题讨论】:
-
你事先调用过静态方法RequestAccessAsync吗?
-
嗨@SteveJ Geolocator 类中没有名为 RequestAccessAsync 的方法
-
它是静态的。您不会在实例上调用它。
-
没有这样的静态方法可用...只有 Equals 和 ReferenceEquals 静态方法可用。
标签: c# location winrt-async