获得在Windows 8桌面应用程序的位置(Getting location in Windows

2019-07-03 10:32发布

我在C#中的总初学者,但我已经使用Java的很多。 我尝试使用下面的代码在我的应用程序来获得位置数据。 我想提出一个Windows 8桌面应用程序使用GPS传感器在我的设备:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Devices.Sensors;
using Windows.Devices.Geolocation;
using Windows.Devices.Geolocation.Geoposition;
using Windows.Foundation;

namespace Hello_Location
{
    public partial class Form1 :
    {
        public Form1()
        {
            InitializeComponent();
        }

        async private void Form1_Load(object sender, EventArgs e)
        {
            Geolocator loc = new Geolocator();
            try
            {
                loc.DesiredAccuracy = PositionAccuracy.High;
                Geoposition pos = await loc.GetGeopositionAsync();
                var lat = pos.Coordinate.Latitude;
                var lang = pos.Coordinate.Longitude;
                Console.WriteLine(lat+ " " +lang);
            }
            catch (System.UnauthorizedAccessException)
            {
                // handle error
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}

我得到这个错误:

“等待”要求类型“Windows.Foundation.IAsyncOperation”具有合适的GetAwaiter方法。 是否缺少using指令为“系统”? C:\ Users \用户clidy \文件\的Visual Studio 2012 \项目\ HELLO-位置\ HELLO-位置\ Form1.cs中

我怎样才能解决这个问题?

它也将是非常有用的,如果你能给我一些资源为C#的位置和传感器API的Windows 桌面应用程序。 在谷歌上搜索,我只得到的Windows RT的API。

Answer 1:

要解决你的错误,你必须参考链接巴特屈服了问题的意见之一。

你可能需要添加到System.Runtime.WindowsRuntime.dll的引用,以及如果你是使用映射类型,如Windows运行时的事件处理程序:

...

该程序集位于C:\ Program Files文件(x86)的\参考大会\微软\ Framework.NETCore \ V4.5

最近,我发现了一个“ 解决方案 ”的一个类似的问题: C#桌面应用程序并不赞同我的物理位置 。 也许你可以通过我的做法有兴趣https://stackoverflow.com/a/14645837/674700 。

它更像是一个解决办法,它不是针对Windows 8,但在最后的作品。



Answer 2:

亚历克斯的解决方案的工作! 补充一点参考和地理位置API开始像一个魅力的工作! 这样做异步方法用于其他传感器!

这里是一个功能我刚刚用它工作。

async public void UseGeoLocation()
{
    Geolocator _GeoLocator = new Geolocator();
    Geoposition _GeoPosition = 
        await _GeoLocator.GetGeopositionAsync();

    Clipboard.Clear();
    Clipboard.SetText("latitude," + 
        _GeoPosition.Coordinate.Latitude.ToString() + 
        "," + "longitude," + _GeoPosition.Coordinate.Longitude.ToString() + 
        "," + "heading," + _GeoPosition.Coordinate.Heading.ToString() +
        "," + "speed," + _GeoPosition.Coordinate.Speed.ToString());

    Application.Exit();
}


文章来源: Getting location in Windows 8 desktop apps