使用 MS Band 生成路径

Using MS Band to generate the path

:)

我目前正在使用连接到 UWP 应用程序的 Microsoft Band 2 开发我的项目,该项目是用 C# 编写的。在这个项目的某些部分,系统显示了从用户当前点(佩戴 Microsoft Band)到目的地的路径,在平面图比例(系统可以告诉你你需要去哪一层)。

我面临的问题是:

  1. 如何从手环获取当前位置?或者还有另一个 从手环(例如 MS Health)获取此信息的可能性或渠道?
  2. 由于 Google 地图提供平面图和行进方向(路线生成器),我可以通过什么方式发送检索到的位置并从我的 UWP 应用返回生成的路径?
  3. 我在 2 中尝试做的事情是否可以通过使用 Bing 地图作为我的地图提供者来实现?

无论如何,谢谢你在这里提出的所有建议。 :)

关于问题#1,手环SDK没有暴露手环的GPS传感器。但是,可以在应用程序 运行 上的 phone 上使用 GPS 传感器。由于 phone 和 Band 位于同一位置——我假设用户拿着它是为了查看生成的方向——phone 的 GPS 传感器应该足够了(并且会保存无论如何,手环上的电池寿命)。

我对 Google 或 Bing Maps API 不是很熟悉,所以我无法回答问题 #2 和 #3。

尽管手环有 built-in GPS,但手环 SDK 无法通过 GPS 获取位置。最好使用 phone 的 GPS,因为它锁定速度更快,因此需要更少的能量。要 运行 您的应用程序并可以访问您的 Band,phone 无论如何都需要在 Band 的范围内,所以这应该是可能的,对吗?

其他两点:我建议您使用 Windows MapControl,因为它也可以离线工作并且集成到 UWP 框架中。如果你问我,不需要使用 Google 服务。

首先,我假设您需要显示包含许多多边形的平面图。请务必使用 10586 SDK,因为它还允许您在多边形中绘制孔 - 以防您有这样的房间等。

要获取两点之间的方向,可以使用此代码(source):

BasicGeoposition startLocation = new BasicGeoposition() {Latitude=47.643,Longitude=-122.131};

// End at the city of Seattle, Washington.
BasicGeoposition endLocation = new BasicGeoposition() {Latitude = 47.604,Longitude= -122.329};

// Get the route between the points.
MapRouteFinderResult routeResult =
     await MapRouteFinder.GetDrivingRouteAsync(
     new Geopoint(startLocation),
     new Geopoint(endLocation),
     MapRouteOptimization.Time,
     MapRouteRestrictions.None);

if (routeResult.Status == MapRouteFinderStatus.Success)
{
    DrawPathOnMapControl(routeResult.Route.Legs);
}

DrawPathOnMapControl 方法中,您使用给定的路段在地图上绘制折线。

我实际上为原始乐队构建了一个导航应用程序原型。以下是我遇到相同问题时的发现:

  1. 乐队不会通过 API 暴露其位置。 GPS 会消耗大量电池电量。让几个应用程序使用 GPS 会在几个小时内耗尽电池电量,这会给用户带来更大的问题。解决这个问题的方法是在用户的移动设备上安装一个 运行 的配套应用程序并使用它的 GPS。这就是我在我的应用程序中所做的,并且效果很好。
  2. Bing Maps其实比Google Maps有更详细的平面图,叫做会场图。你可能想检查一下。但是我认为他们还没有通过 UAP 应用程序公开。https://www.bingmapsportal.com/ISDK/AjaxV7#VenueMapsModule3 Google 地图可能不是一个选项,因为我认为他们不会通过 public 服务。此外,确定用户所在的楼层将非常困难。你可以近似,但是你会运行在这里出错。
  3. 混合使用 Google 和 Bing 地图数据违反了两个平台的使用条款。