我想为Windows手机创建一个简单的导航应用。我希望它能够将用户导航到提供的地址。我正在创建路线,如下所述: http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244363%28v=vs.105%29.aspx#BKMK_showdirections 但它是一条静态路线,我希望用当前用户位置进行更新。 目前我正在考虑这个解决方案:
在Geolocator的事件中,PositionChanged我将从当前位置计算新路线:
void Instance_GeolocatorGeopositionReadingChanged(object sender, ReadingValueChanged<Geoposition> e)
{
RouteQuery query = new RouteQuery()
{
TravelMode = TravelMode.Driving,
Waypoints = new List<GeoCoordinate>()
{
e.NewReading.Coordinate.ToGeoCordinate(),
this.target
}
};
query.QueryCompleted += routeQuery_QueryCompleted;
query.QueryAsync();
}
但我不确定,如果这是一个好的方法,因为在使用MS的地图方面,你可能不会: 一个应用程序在24小时内超过25000个路由和地理编码请求
如果应用程序会在每个更改的位置重新计算路线,则一次长途旅行将超出限制。 有更好的方法吗?
答案 0 :(得分:0)
定义您不应该一直重新计算路线。基本上,一旦你得到第一条路线,检查 Route :: Legs ,看看用户应该如何到达目的地,然后实施一个逻辑来监控用户是否留在选定的路线段 - 通过腿。
并且只有当用户离开路线时(例如,转向错误的方向),然后有逻辑然后去获得新路线,并再次开始监控。