Bing maps API: 有没有办法使用卡车路线作为距离矩阵?

Bing maps API: Is there a way to use truck routing for distance matrix?

我想获得一组卡车和取货点之间的距离。我看到卡车路线有 REST API,距离矩阵也有 API。 Url 对两个 API 的请求是不同的。从距离矩阵 API 的微软文档中,我可以看到 travelMode 参数,但它只能设置为车辆、步行或公交。

有没有办法将卡车路线用于距离矩阵?

请求url轨道路线模板:

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}

请求 url 距离矩阵模板:

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}

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

  • 驾驶(汽车)
  • 步行
  • public中转

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

  • 自行车
  • 公交车
  • 汽车
  • 摩托车
  • 行人
  • 出租车
  • 卡车
  • 面包车

这是 Azure Maps 上的一些额外资源:

我找到了一个库 BingMapsRestToolkit,您可以在其中将距离矩阵中的 TravelMode 设置为卡车,但它基本上只是添加的功能,实际上会向卡车路线 API 发送许多请求。对于免费用户,每秒最大查询数仅为 5,所以它并不是很有用,因为它很慢,也许如果你有 Bing 地图 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 设为卡车