2

我正在使用 bing 网络服务来查找两个地方之间的最短路线。

但我得到了这个奇怪的错误:

  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

好的,既然我们已经在评论中确定问题出在起点和终点之间的距离上,这就是我的答案。

你不能路由很远的距离(甚至在Bing 地图上也不能(他们显然使用相同的路由服务))......服务就是这样创建的。如果你真的非常需要这个,你可以考虑一些算法,将距离分成更小的块。然后你会在较小的块之间找到多条路线,然后将它们连接起来(在地图上将它们连接起来)......

这里明显的问题是:如何找到能够将路径分成块的中间点?好吧,一种相当简单的方法是找到点之间的空气距离(参见Haversine 公式),然后将其分成相等的部分。显然,这意味着您将影响最终路线,并且几乎肯定不会是起点和终点之间的最短路线。此外,它可能会将您的用户引导到甚至没有道路的奇怪地方(森林、沙漠、海洋)。小题外话:我不知道为什么有人会同时在两个遥远的国家/地方之间行驶,只是为了找出行车距离,他们可以在网上的某个地方做......

于 2012-08-01T10:14:06.977 回答