Bing maps API:有没有一种方法可以使用卡车路线作为距离矩阵?

时间:2019-12-03 20:16:09

标签: c# bing-maps azure-maps

我想确定卡车和皮卡车点之间的距离。我看到有用于卡车路线选择的REST API,也有用于距离矩阵的API。对两个API的请求的网址不同。从Microsoft的距离矩阵API文档中,我可以看到travelMode参数,但只能将其设置为车辆,步行或过境。

是否可以使用卡车路线作为距离矩阵?

请求跟踪路线的网址模板:

https://dev.virtualearth.net/REST/v1/Routes/Truck?wayPoint.1={wayPpoint1}&viaWaypoint.2={viaWaypoint2}&waypoint.3={waypoint3}&wayPoint.n={waypointN}&heading={heading}&optimize={optimize}&avoid={avoid}&distanceBeforeFirstTurn={distanceBeforeFirstTurn}&routeAttributes={routeAttributes}&dateTime={dateTime}&tolerances={tolerances}&distanceUnit={distanceUnit}&vehicleHeight={vehicleHeight}&vehicleWidth={vehicleWidth}&vehicleLength={vehicleLength}&vehicleWeight={vehicleWeight}&vehicleAxles={vehicleAxles}&vehicleTrailers={vehicleTrailers}&vehicleSemi={vehicleSemi}&vehicleMaxGradient={vehicleMaxGradient}&vehicleMinTurnRadius={vehicleMinTurnRadius}&vehicleAvoidCrossWind={vehicleAvoidCrossWind}&vehicleAvoidGroundingRisk={vehicleAvoidGroundingRisk}&vehicleHazardousMaterials={vehicleHazardousMaterials}&vehicleHazardousPermits={vehicleHazardousPermits}&key={BingMapsKey}

请求距离矩阵的网址模板:

https://dev.virtualearth.net/REST/v1/Routes/DistanceMatrix?origins={lat0,long0;lat1,lon1;latM,lonM}&destinations={lat0,lon0;lat1,lon1;latN,longN}&travelMode={travelMode}&startTime={startTime}&timeUnit={timeUnit}&key={BingMapsAPIKey}

2 个答案:

答案 0 :(得分:2)

根据Bing Maps documentation,仅支持以下旅行方式:

  • 开车(汽车)
  • 走路
  • 公共交通

您可能想看一下Azure地图,它确实支持documented here作为基于卡车的距离矩阵。 Azure Maps支持为以下行驶模式计算距离矩阵:

  • 自行车
  • 公共汽车
  • 汽车
  • 摩托车
  • 行人
  • 出租车
  • 卡车
  • van

以下是Azure Maps上的一些其他资源:

答案 1 :(得分:0)

我找到了一个BingMapsRestToolkit库,您可以在其中将TravelMode设置为卡车的距离矩阵,但它基本上只是添加了功能,实际上向卡车路由API发送了许多请求。对于免费用户,每秒的最大查询数仅为5,因此它并不是很有效,因为它很慢,如果您拥有Bing maps API的企业许可证,那么它可以帮助到某个人。

示例:

    var request = new DistanceMatrixRequest()
    {
        BingMapsKey = bingApiKey,
        Origins = new List<SimpleWaypoint>
        {
            new SimpleWaypoint(new Coordinate(vehiclePosition.Latitude, vehiclePosition.Longitude))
        },
        Destinations = destinationWaypoints,
        TravelMode = TravelModeType.Driving,
        VehicleSpec = new VehicleSpec
        {
            VehicleLength = 16.5,
            VehicleWeight = 20000
        }
    };

    var response = request.Execute().Result; // Or await request.Execute()

OriginsDestinationsList<SimpleWaypoint>

TravelMode设置为卡车