Bing Map API与Bing Map手册RouteRequest.API不准确吗?

CHE*_*HKA 8 java bing-api

我试图测试Bing Map API的准确性.我试图找出距离和驾驶之间的时间Chicago O'Hare International AirportChicago Midway Airport.Bing Map API似乎完全不准确.我用bing贴图手动对它进行双倍和三倍检查.这是完整的代码

import net.virtualearth.dev.webservices.v1.common.Credentials;
import net.virtualearth.dev.webservices.v1.common.Location;
import net.virtualearth.dev.webservices.v1.route.BasicHttpBinding_IRouteServiceStub;
import net.virtualearth.dev.webservices.v1.route.RouteRequest;
import net.virtualearth.dev.webservices.v1.route.RouteResponse;
import net.virtualearth.dev.webservices.v1.route.RouteResult;
import net.virtualearth.dev.webservices.v1.route.RouteServiceLocator;
import net.virtualearth.dev.webservices.v1.route.RouteSummary;
import net.virtualearth.dev.webservices.v1.route.Waypoint;

public class Test {


    public static void main(String[] args) throws Exception {

         double [] address1Coordinate = {  41.97980880737305   ,   -87.88204193115234 } ; // Chicago O'Hare International Airport, IL  [I checked the coordinate . It is accurate ]
         double [] address2Coordinate = {  41.7872200012207    ,   -87.74160766601562 } ; // Chicago Midway Airport, IL  [I checked the coordinate . It is accurate ]

        BasicHttpBinding_IRouteServiceStub routeService = (BasicHttpBinding_IRouteServiceStub) (new RouteServiceLocator()).getBasicHttpBinding_IRouteService();

        RouteRequest request = new RouteRequest();
        Credentials creds = new Credentials();
        // I got my Bing map key from here http://msdn.microsoft.com/en-us/library/ff428642.aspx and entered it below : 
        creds.setApplicationId("This is my Bing App Key . . . ");
        request.setCredentials(creds);
        Waypoint[] waypoints = new Waypoint[2];
        waypoints[0] = new Waypoint();
        Location start = new Location();
        start.setLatitude(address1Coordinate[0]); 
        start.setLongitude(address1Coordinate[1]); 
        waypoints[0].setLocation(start);
        waypoints[1] = new Waypoint();
        Location end = new Location();
        end.setLatitude(address2Coordinate[0]); 
        end.setLongitude(address2Coordinate[1]) ; 
        waypoints[1].setLocation(end);
        request.setWaypoints(waypoints);

        RouteResponse response = routeService.calculateRoute(request);
        RouteResult result = response.getResult();

        RouteSummary routeSummary = result.getSummary();

        System.out.println( "Bing Distance : " + routeSummary.getDistance() + " miles ");   
        System.out.println( "Driving Time : " + routeSummary.getTimeInSeconds()/60 + " minutes ");

    }


}
Run Code Online (Sandbox Code Playgroud)

这是JAR的链接


我得到的结果是

Bing Distance : 42.898 miles 
Driving Time : 34 minutes 
Run Code Online (Sandbox Code Playgroud)

以上结果绝对不准确.我通过Bing Map 点击此链接手动比较数字以查看差异.

当我尝试使用不同的地址时,在大多数情况下,驾驶时间可以很好地计算...然而,距离几乎总是高于我在地图中手动输入地图的距离...

这是Bing Map API的问题吗?也许我应该getDistance以不同的方式使用该方法?


虽然距离接近Bing Map手动显示的距离,但不完全相同.他们怎么不一样?

谢谢 !

eis*_*eis 7

如果您手动使用实际坐标,则给定四舍五入的时间似乎相同,请参阅测试链接.我得到35分钟,你的地板结果是34分钟.

现在,关于距离.在测试链接中,您可以看到它是26.7英里,而您的代码得到的结果是42.898(您自己添加了"里程"单位!).现在,如果您将26.7英里转换为公里,则得到42.9695.因此我会声称.getDistance()的结果实际上是千米而不是英里.

看看Route api似乎证实了这一点:

distanceUnit

可选的.在响应中用于距离的单位.

以下值之一:

  • 英里或米
  • 公里或公里[默认]

所以你得到的数字是非常准确的IMO.