我一直在编写一个片段来获取Windows Phone 8中两个GeoCoordinates之间的方向。特定代码在Emaulator中正常运行但是当我在Device中部署并测试它时,它正在抛出'System.Reflection.TargetInvocationException'
。在我的appmanifest中启用了ID_CAP_MAP和ID_CAP_LOCATION。以下是我正在使用的代码段
private void RequestDirections()
{
rq.QueryCompleted += routeQuery_QueryCompleted;
if (!rq.IsBusy)
{
List<GeoCoordinate> routeCoordinates = new List<GeoCoordinate>();
routeCoordinates.Add(new GeoCoordinate(48.860339, 2.337599));
routeCoordinates.Add(new GeoCoordinate(48.8583, 2.2945));
rq.Waypoints = routeCoordinates;
rq.QueryAsync();
map.Center = new GeoCoordinate(48.8583, 2.2945); //Center map on last coordinates
}
}
private void routeQuery_QueryCompleted(object sender, QueryCompletedEventArgs<Route> e)
{
try
{
if (e != null)
{
Route theRoute = e.Result;
MapRoute calculatedMapRoute = new MapRoute(theRoute);
map.ZoomLevel = 17;
map.AddRoute(calculatedMapRoute);
//Used Only For Direction List Button
sb.AppendLine("Distance to destination: " + e.Result.LengthInMeters);
sb.AppendLine("Time to destination: " + e.Result.EstimatedDuration);
foreach (var maneuver in e.Result.Legs.SelectMany(l => l.Maneuvers))
{
sb.AppendLine("At " + maneuver.StartGeoCoordinate + " " +
maneuver.InstructionKind + ": " +
maneuver.InstructionText + " for " +
maneuver.LengthInMeters + " meters");
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我得到的错误是routeQuery_QueryCompleted
方法。 QueryCompletedEventArgs<Route> e
被抛出为null。确切错误"'e.Result' threw an exception of type 'System.Reflection.TargetInvocationException'"
如果有人能建议如何解决这个问题,那将会很棒。
答案 0 :(得分:0)
TargetInvocation只是意味着某些东西正在调用反射Invoke,并且被调用的方法引发了异常。真正的问题是隐藏在.InnerException中。所以你应该捕获异常并检查.InnerException以查看实际出错的地方。另请查看.StackTrace。 .InnerException以查看它出错的地方。
答案 1 :(得分:0)
您可以使用GeoCoordinateWatcher
。
Windows Phone API有一个GeoCoordinateWatcher
类,用于触发PositionChanged
事件,该事件可用于跟踪用户的位置。通过MapPolyLine
可以很容易地在地图上呈现用户的移动,geocoordinates
是根据{{1}}定义的线路径。
This文章介绍了如何使用Windows Phone 8创建运行跟踪器应用