2013-07-17 33 views
0

看起來routeService.CalculateRoute(routeRequest)不會生效routeRequest.Options。我曾嘗試設置RouteOptimization.MinimizeDistanceRouteOptimization.MinimizeTime;,而且似乎也沒有爲最佳路線進行調整。看來,CalculateRoute總是根據它們在航點數組中的順序來計算航點。有誰知道我做錯了什麼?Bing Route優化對routeService.CalculateRoute沒有任何影響

  Waypoint[] waypoints = new Waypoint[waypointInfo.Count + 1]; // +1 for the store 

      waypoints[0] = new Waypoint(); 
      waypoints[0].Description = "Store"; 
      waypoints[0].Location = new RouteService.Location(); 
      waypoints[0].Location.Latitude = store.Latitude; 
      waypoints[0].Location.Longitude = store.Longitude; 

      for (int i = 0; i < waypointInfo.Count; i++) 
      { 
       waypoints[i+1] = new Waypoint(); 
       waypoints[i + 1].Description = waypointInfo[i].Address+ " - " +waypointInfo[i].Name; 
       waypoints[i+1].Location = new RouteService.Location(); 
       waypoints[i + 1].Location.Latitude = waypointInfo[i].locations.Latitude; 
       waypoints[i + 1].Location.Longitude = waypointInfo[i].locations.Longitude; 

      } 



      RouteRequest routeRequest = new RouteRequest(); 
      routeRequest.Credentials = new Microsoft.Maps.MapControl.WPF.Credentials(); 
      routeRequest.Credentials.ApplicationId = "BING API KEY"; 

      // You want minimum distance or minimum time? 
      RouteOptions myROuteOptions = new RouteOptions(); 
      myROuteOptions.Mode = TravelMode.Driving; 
      myROuteOptions.Optimization = RouteOptimization.MinimizeDistance; 
      myROuteOptions.TrafficUsage = TrafficUsage.TrafficBasedTime; 
      routeRequest.Options = myROuteOptions; 

      //routeRequest.UserProfile = new UserProfile { DistanceUnit = RouteService.DistanceUnit.Kilometer }; 

      routeRequest.Waypoints = waypoints; 

      // Make the calculate route request 
      RouteServiceClient routeService = new RouteServiceClient(); 
      RouteResponse routeResponse = routeService.CalculateRoute(routeRequest); 



      double dayDistance = 0;    
      directions.Clear(); 

      if (routeResponse.Result.Legs.Length > 0) 
      { 
       int instructionCount = 0; 
       int legCount = 0; 

       foreach (RouteLeg leg in routeResponse.Result.Legs) 
       { 

        legCount++; 
        if (legCount > 1) 
        { 
         directions.Append(" " + "\n"); 
        } 

        foreach (ItineraryItem item in leg.Itinerary) 
        { 

         instructionCount++; 
         directions.Append(string.Format("{0}. {1} {2}\n", 
          instructionCount, item.Summary.Distance, item.Text)); 
         dayDistance += item.Summary.Distance; 
        } 
       } 
您使用

}

回答

1

我不認爲CalculateRoute永遠不會重新排序航點。 RouteOptimization僅影響在指定路線中的任意兩個連續航點之間選擇的路徑。

0

在你的情況下,你可以確定路線必須通過的點,如果你沒有在「開始」和「結束」之間給出過多的航點,你可以看到優化的不同。

我想你的代碼,但它說,我必須通過端點作爲一個參數:

RouteServiceClient routeService = new RouteServiceClient("Here"); 

任何想法如何解決這一問題

相關問題