我试图像这样得到我的设备的地理位置:
Geolocator geo = new Geolocator();
double lat = 0, longt = 0;
Task getPosition = Task.Run(async () =>
{
try
{
Geoposition pos = await geo.GetGeopositionAsync();
lat = pos.Coordinate.Point.Position.Latitude;
longt = pos.Coordinate.Point.Position.Longitude;
}
catch(Exception exp)
{
Debug.WriteLine(exp);
}
});
getPosition.Wait();
但是,我得到以下例外:
您的应用无权访问位置数据。确保 您已在应用程序清单中定义了ID_CAP_LOCATION 在手机上,您已通过检查设置>打开了位置。 位置。
知道可能出现什么问题?谢谢!
答案 0 :(得分:2)
您提到笔记本电脑,但错误消息是针对手机的。你是在手机的模拟器中运行它并让你在手机中打开它吗?如果不只是在设置 - >中打开它地点。如果没有,请将项目adamt发送给我,我将在此处复制并修复和发布更新,或者尝试复制到我的最终版本。
编辑 - 我看过这个项目 解: 您需要从Windows 10开始包含Geolocator.RequestAccessAsync()。这将提示用户允许位置请求。在您的具体示例中,请确保使用async标记button1_click:
private async void Button_Click(object sender, RoutedEventArgs e)
来自https://msdn.microsoft.com/en-us/library/windows/apps/br225537.aspx
var accessStatus = await Geolocator.RequestAccessAsync(); switch (accessStatus) { case GeolocationAccessStatus.Allowed: _rootPage.NotifyUser("Waiting for update...", NotifyType.StatusMessage); // If DesiredAccuracy or DesiredAccuracyInMeters are not set (or value is 0), DesiredAccuracy.Default is used. Geolocator geolocator = new Geolocator { DesiredAccuracyInMeters = _desireAccuracyInMetersValue }; // Subscribe to StatusChanged event to get updates of location status changes _geolocator.StatusChanged += OnStatusChanged; // Carry out the operation Geoposition pos = await geolocator.GetGeopositionAsync(); UpdateLocationData(pos); _rootPage.NotifyUser("Location updated.", NotifyType.StatusMessage); break; case GeolocationAccessStatus.Denied: _rootPage.NotifyUser("Access to location is denied.", NotifyType.ErrorMessage); LocationDisabledMessage.Visibility = Visibility.Visible; UpdateLocationData(null); break; case GeolocationAccessStatus.Unspecified: _rootPage.NotifyUser("Unspecified error.", NotifyType.ErrorMessage); UpdateLocationData(null); break; }