2

bing Web サービスを使用して、2 つの場所間の最短ルートを検索しています。

しかし、私はこの奇妙なエラーを受け取ります:

  public imagine_cup.RoutingService.RouteResponse EndCalculateRoute(System.IAsyncResult result) {

                object[] _args = new object[0];

                imagine_cup.RoutingService.RouteResponse _result = ((imagine_cup.RoutingService.RouteResponse)(base.EndInvoke("CalculateRoute", _args, result))); //error in this line

                return _result;

            }

エラーは、それがサーバーエラーであることを示しています。

これが私のコードです:

 public void CalculateRoute(List<Pushpin> wayPoints)
        {

            // Set the credentials.
            routeService.RouteRequest routeRequest = new routeService.RouteRequest();
            routeRequest.Credentials = new Credentials();
            routeRequest.Credentials.ApplicationId = _applicationId;

            // Return the route points so the route can be drawn.
            routeRequest.Options = new routeService.RouteOptions();
            routeRequest.Options.RoutePathType = routeService.RoutePathType.Points;

            // Set the waypoints of the route to be calculated using the Geocode Service results stored in the geocodeResults variable.
            routeRequest.Waypoints = new System.Collections.ObjectModel.ObservableCollection<routeService.Waypoint>();
            //Adding way points
            foreach (Pushpin ps in wayPoints)
            {
                routeRequest.Waypoints.Add(PushpinToWaypoint(ps));
            }

            // Make the CalculateRoute asnychronous request.
            _routeService.CalculateRouteAsync(routeRequest);
        }

bing maps キーを更新したので、古いキーではありません

4

1 に答える 1

1

OK、コメントで問題が開始点と終了点の間の距離にあることを確認したので、これが私の答えです。

長距離をルーティングすることはできません ( Bing マップでも(明らかに同じルーティング サービスを使用しています))... サービスはそのように作成されます。これが本当に必要な場合は、距離をより小さなチャンクに分割するアルゴリズムを考えることができます。次に、小さなチャンク間の複数のルートを見つけて、後でそれらを接続します(マップ上に接続して描画します)...

ここでの明らかな問題は、パスをチャンクに分割できる中間点をどのように見つけるかということです。かなり簡単な方法の 1 つは、ポイント間の空気距離を求め ( Haversine 式を参照)、それを等分することです。明らかに、これは最終ルートに影響を与えることになり、ほぼ確実に始点と終点の間の最短ルートにはならないことを意味します。また、道路さえない奇妙な場所 (森、砂漠、海) にユーザーを誘導することもあります。ちょっとした余談: オンラインでどこかで実行できる運転距離を調​​べることを除いて、なぜ誰かが 2 つの離れた国/場所の間を一度にルーティングするのかわかりません...

于 2012-08-01T10:14:06.977 に答える