我试图在地图上显示一条路线,但我得到了这个例外。我不知道为什么。这是我的代码隐藏:
public partial class map_new : PhoneApplicationPage
{
public GeoCoordinate destination;
public GeoCoordinate myPosition;
public Geolocator myGeolocator;
List<GeoCoordinate> waypoints = new List<GeoCoordinate>();
public RouteQuery routeQuery;
public map_new()
{
InitializeComponent();
destination = new GeoCoordinate(41.909859, 12.461792);
ShowDestinationLocationOnTheMap();
myGeolocator = new Geolocator();
myGeolocator.DesiredAccuracy = PositionAccuracy.High;
myGeolocator.MovementThreshold = 20; // The units are meters.
myGeolocator.StatusChanged+=geolocator_StatusChanged;
}
private async Task update_position()
{
Geoposition myGeoposition = await myGeolocator.GetGeopositionAsync();
Geocoordinate myGeocoordinate = myGeoposition.Coordinate;
myPosition = CoordinateConverter.ConvertGeocoordinate(myGeocoordinate);
Dispatcher.BeginInvoke(() =>
{
this.myMap.Center = myPosition;
this.myMap.ZoomLevel = 16;
});
//update_route();
}
private async void update_route()
{
await update_position();
RouteQuery routeQuery = new RouteQuery();
waypoints.Add(myPosition);
waypoints.Add(destination);
routeQuery.Waypoints = waypoints;
routeQuery.QueryCompleted += routeQuery_QueryCompleted;
routeQuery.QueryAsync();
}
void routeQuery_QueryCompleted(object sender, QueryCompletedEventArgs<Route> e)
{
if (e.Error == null)
{
Route MyRoute = e.Result;
MapRoute MyMapRoute = new MapRoute(MyRoute);
myMap.AddRoute(MyMapRoute);
routeQuery.Dispose();
}
}
void geolocator_StatusChanged(Geolocator sender, StatusChangedEventArgs args)
{
string status = "";
switch (args.Status)
{
case PositionStatus.Ready:
// the location service is generating geopositions as specified by the tracking parameters
status = "ready";
update_route();
break;
}
我认为错误是 update_route() 不等待 update_position() 完成,但我不知道如何设置 update_route() 等待。任何的想法?
编辑:应用 KooKiz 和 Stephen 解决方案后,错误位于此行:
RouteQuery routeQuery = new RouteQuery();