首页 > 解决方案 > Geolocator PositionChanged 事件未触发以获取当前位置

问题描述

我正在尝试获取 WinRT 应用程序的当前位置。但是 PositionChanged 事件永远不会被触发。任何帮助都非常感谢!

在 Package.appxmanifest 中,我启用了 Location。我的代码如下: -

    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;
                });
            }
        }

标签: c#locationwinrt-async

解决方案


我通过将此代码放入 Package.appxmanifest 中使其工作

<DeviceCapability Name="location" />

推荐阅读