我试图测试Bing地图API的准确性。我尝试找出芝加哥奥黑尔国际机场和芝加哥中途机场之间的距离和驾车时间。看起来Bing地图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 ");
}
}
我得到的结果是
Bing Distance : 42.898 miles
Driving Time : 34 minutes
以上结果绝对不准确。 我手动比较了数字和 Bing Map,单击此链接可查看差异。。
当我尝试使用不同的地址时,大多数情况下驾车时间会被正确计算...然而距离几乎总是比手动输入地址到 Bing Map 中得到的距离更长...
这是 Bing Map API 的问题吗?也许我应该以不同的方式使用 getDistance
方法?
虽然距离接近 Bing Map 手动显示的距离,但不完全相同。为什么它们不同?
谢谢!