我有Windows 10平板电脑" Broadcom GNSS 4752地理位置传感器"显示在设备管理器中的传感器节点下。我需要连接到此传感器并获取位置读数,然后从中提取纬度和经度点。如何使用C#实现这一目标?
答案 0 :(得分:1)
您可以将Windows.Devices.Geolocation API用于桌面应用程序。
适用于已安装平台本地化的Windows 8 / 8.1 / 10。
要访问命名空间Windows.Devices.Geolocation
,您可以将项目的目标平台版本设置为8.1
,将框架.net设置为4.5.1
。
您可以通过编辑.csproj
文件来完成此操作。
示例部分file.csproj
,其中包含有关目标平台的信息。
<ProjectGuid>{D29050E9-B447-43DE-BA11-0CA8F402200D}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ConsoleApplication1</RootNamespace>
<AssemblyName>ConsoleApplication1</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetPlatformVersion>8.1</TargetPlatformVersion>
<FileAlignment>512</FileAlignment>
何时更新项目文件,您可以添加对程序集的引用。
您还应该添加对System.Runtime.WindowsRuntime.dll
的引用。
示例代码如何收集位置:
static void Main(string[] args)
{
myGeolocator = new Geolocator() { DesiredAccuracy = PositionAccuracy.High };
var geopositionAsyncResult = myGeolocator.GetGeopositionAsync();
geopositionAsyncResult.Completed = GetGeopositionCompleted;
Console.ReadKey();
}
private static void GetGeopositionCompleted(IAsyncOperation<Geoposition> asyncInfo, AsyncStatus asyncStatus)
{
switch (asyncStatus)
{
case AsyncStatus.Completed:
var result = asyncInfo.GetResults();
var possition = result.Coordinate.Point.Position;
Console.WriteLine(String.Format("Latitude = {0} Longitude = {1}", possition.Latitude, possition.Longitude));
break;
default:
Console.WriteLine(myGeolocator.LocationStatus.ToString());
break;
}
}
要访问使用地理位置,您必须: 设置访问Windows用户设置隐私 - 位置 在控制面板中设置访问权限 - 本地化
答案 1 :(得分:0)
在GitHub上查看UWP样本。有Geolocator sample使用GPS查找您的位置。看起来Geolocator.GetGeopositionAsync()方法是您想要用于获取纬度/经度的方法。