Compartir a través de


Migra la API de cálculo de ruta de camión de Bing Maps

En este artículo se explica cómo migrar Bing Maps Calculate a Truck Route API a Route Directions API de Azure Maps. Route Directions API de Azure Maps devuelve la ruta ideal entre un origen y destino para automóviles (conducción), camiones comerciales y rutas a pie, al tiempo que tiene en cuenta las leyes locales, dimensiones de vehículo, tipo de carga, velocidad máxima, puente y alturas de túnel para calcular las rutas específicas del camión y evitar maniobras complejas y carreteras difíciles. Para obtener la ruta de camiones en la API de Direcciones de Ruta de Azure Maps, especifique truck para el parámetro de entrada travelMode en la solicitud.

Prerrequisitos

Diferencias destacadas

  • Bing Maps Calculate a Truck Route es una API independiente dedicada al enrutamiento de camiones. Route Directions API de Azure Maps proporciona compatibilidad con el enrutamiento de camiones cuando travelMode=truck se especifica en la solicitud.
  • Bing Maps Calculate a Truck Route API admite solicitudes GET o POST. Route Directions API de Azure Maps admite solicitudes POST.
  • Bing Maps Calculate a Truck Route API admite formatos de respuesta XML y JSON. Route Directions API de Azure Maps admite el formato de respuesta GeoJSON.
  • Bing Maps Calculate a Truck Route API admite un máximo de 25 paradas intermedias o puntos viaWaypoints por solicitud. Route Directions API de Azure Maps admite hasta 150 puntos de referencia por solicitud, pero no admite viaWaypoints.
  • A diferencia de Bing Maps for Enterprise, Azure Maps es un servicio global que admite la especificación de un ámbito geográfico, lo que permite límites de residencia de datos a las áreas geográficas (geo) europeas (UE) o Estados Unidos (EE. UU.). Todas las solicitudes (incluidos los datos de entrada) se procesan exclusivamente en el área geográfica especificada. Para obtener más información, consulte ámbito geográfico.

Seguridad y autenticación

Mapas de Bing para la empresa solo admite la autenticación de clave de API. Azure Maps admite varias formas de autenticar llamadas API, como una clave de suscripción, Microsoft Entra ID y token de firma de acceso compartido (SAS). Para más información sobre la seguridad y la autenticación en Azure Maps, consulte Autenticación con Azure Maps y la sección Seguridad de la documentación de Route Directions de Azure Maps.

Parámetros de solicitud

En la tabla siguiente se enumeran los parámetros de solicitud de Bing Maps Calculate a Truck Route y su equivalente en Azure Maps.

Parámetro de solicitud de Bing Maps Alias del parámetro de solicitud de Bing Maps Parámetro de solicitud de Azure Maps Obligatorio en Azure Maps Tipo de datos de Azure Maps Descripción
evitar evitar Falso cuerda Estos son los equivalentes de avoid de la API de indicaciones de ruta de Azure Maps, donde se admiten:

- peajes: tollRoads
- ferry: ferries
- borderCrossings: borderCrossings
- autopistas: limitedAccessHighways
- minimizeDrivingSideTurn: no admitido
- minimizeAgainstDrivingSideTurn: no admitido
- minimizeUTurn: no admitido
- minimizeTolls: no admitido
- minimizeHighways: no admitido
restricción fronteriza No compatible No compatible No compatible En Route Directions API de Azure Maps, se puede usar avoid=borderCrossings para restringir las rutas que crucen las fronteras entre países; sin embargo, no se admite especificar una lista de regiones para la restricción de fronteras. 
fechaHora Despegue departAt Falso cuerda / cadena Route Directions API de Azure Maps también admite el arriveAt parámetro que se usa para especificar la fecha y hora de llegada deseadas. No se puede usar con departAt
dimensionUnit Dims No compatible No compatible No compatible En Route Directions API de Azure Maps, la unidad para las dimensiones de altura, ancho y longitud del camión es metros. 
distanceUnit Du No compatible No compatible No compatible En Route Directions API de Azure Maps, la unidad de distancia es metros.  
distanciaAntesDelPrimerGiro dbft No compatible No compatible No compatible
encabezado disco duro encabezado Falso entero
optimizar optmz optimizeRoute Falso cuerda / cadena Estos son los equivalentes de la API de Cálculo de Rutas para Camiones de Bing Maps a la API de Direcciones de Rutas de Azure Maps optimizeRoute:

- time: fastestWithoutTraffic
- timeWithTraffic: fastestWithTraffic

La API de indicaciones de ruta de Azure Maps también admite la optimización de rutas por distancia para devolver la ruta más corta especificando el valor de entrada optimizeRoute
optimizeWaypoints optWp optimizeWaypointOrder Falso booleano
atributos de la ruta Ra routeOutputOptions Falso cuerda / cadena Estos son los equivalentes de Bing Maps a Route Directions API routeOutputOptions de Azure Maps:

- routePath: routePath
- regionAdvisorSummary: regionClientSummary

Route Directions API de Azure Maps admite valores adicionales como itinerary y routeSummary. Para obtener más información, consulte RouteOutputOption
Tolerancias Tl No compatible No compatible No compatible
viawaypoint.n vwp.n No compatible No compatible No compatible
vehicleHeight altura altura Falso número
anchoDelVehículo Ancho Ancho Falso número
vehicleLength Vl largura Falso número
vehicleWeight peso peso Falso entero
vehicleAxles Ejes No compatible No compatible No compatible Route Directions API de Azure Maps admite restricciones de peso por eje que se pueden especificar mediante el parámetro axleWeight
vehicleTrailers Vt No compatible No compatible No compatible La longitud del remolque podría agregarse a la longitud del vehículo que se debe tener en cuenta para las restricciones. 
vehicleSemi semi No compatible No compatible No compatible Los semi-camiones generalmente se encuentran en la categoría de vehículos comerciales. Route Directions API de Azure Maps admite la propiedad isVehicleCommercial que se podría usar para camiones semirremolques. 
vehicleMaxGradient vmg No compatible No compatible No compatible
vehicleMinTurnRadius vmtr No compatible No compatible No compatible
vehicleHazardousMaterials vhm tipo de carga Falso cuerda / cadena Consulte los tipos de carga de vehículos de la API de indicaciones de ruta de Azure Maps para conocer las correspondientes clases de materiales peligrosos del 1 al 9 de EE.UU., y la clasificación genérica de tipos de carga a material peligroso en la API de cálculo de rutas de camión de Mapas de Bing. 
vehicleHazardousPermits Vhp No compatible No compatible No compatible
waypoint.n wp.n características InputWaypointFeaturesItem[] Cierto Punto GeoJSON
weightUnit Wu No compatible No compatible No compatible En Route Directions API de Azure Maps, la unidad de peso es de kilos (kg).

Para más información sobre los parámetros de solicitud de Route Directions API de Azure Maps, consulte Parámetros de URI.

Solicitudes de ejemplo

Solicitud POST de la API de cálculo de rutas de camión de Mapas de Bing:

https://dev.virtualearth.net/REST/v1/Routes/Truck?key={Your-Bing-Maps-Key}

Incluido en el cuerpo de la solicitud:

{
    "waypoints": [{ 
        "latitude": 47.610133,
        "longitude": -122.201478
    },{ 
        "latitude": 47.610096,
        "longitude": -122.192463
    }],
    "vehicleSpec": {
        "vehicleHazardousMaterials": "Flammable"
    }
}

Solicitud POST de la API de Indicaciones de Ruta de Azure Maps:

https://atlas.microsoft.com/route/directions?api-version=2025-01-01&subscription-key={Your-Azure-Maps-Subscription-key} 

Incluido en el cuerpo de la solicitud:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "coordinates": [
            -122.201478, 47.610133 
        ],
        "type": "Point"
      },
      "properties": {
        "pointIndex": "0",
        "pointType": "waypoint"
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "coordinates": [
            -122.192463, 47.610096
        ],
        "type": "Point"
      },
      "properties": {
        "pointIndex": "1",
        "pointType": "waypoint"
      }
    }
  ],
  "RouteOutputOptions": [
      "itinerary"
  ],
  "travelMode": "truck",
  "vehicleSpec": {
    "loadType": [
        "USHazmatClass3",
        "USHazmatClass4"
        ]
    }
}

Campos de respuesta

En la tabla siguiente se enumeran los campos que pueden aparecer en la respuesta HTTP al ejecutar la solicitud Cálculo de una ruta de camión de Mapas de Bing y el equivalente de Azure Maps:

Campo de Bing Maps Campo de Azure Maps Descripción
actualEnd Objeto de característica puntual El objeto de característica de punto con type="waypoint" e inputIndex = last define la ubicación final de la ruta.
actualStart Objeto de característica puntual El objeto de característica puntual con type="waypoint" y inputIndex = 0 define la ubicación inicial enrutable. 
alternateVias rutas alternativas alternateVias de Mapas de Bing identifica las rutas independientes. En Route Directions API de Azure Maps, las rutas alternativas se devuelven como una nueva colección de características en alternativeRoutes
compassDegrees No compatible
compassDirection No compatible
descripción No compatible
Detalles Propiedades Las propiedades del objeto de característica contienen la información de la maniobra. 
distanceUnit No aplicable Route Directions API de Azure Maps devuelve la distancia en metros de forma predeterminada. 
durationUnit No aplicable Route Directions API de Azure Maps devuelve la duración en segundos. 
endPathIndices gama La API de indicaciones de ruta de Azure Maps devuelve el índice inicial y final cubierto por una parte específica de una ruta como un intervalo. 
endWaypoint No compatible En la respuesta de la API de indicaciones de ruta de Azure Maps, el punto de conexión se puede derivar del índice type="waypoint" e inputIndex = last
formattedText formattedText
Consejos No compatible
hintType No compatible
tipoDeIcono No compatible
instrucción instrucción
isRealTimeTransit No compatible
isVia No compatible Route Directions API de Azure Maps no admite viaWaypoint para rutas de camión. 
códigos de ubicación No compatible
identificadorDeUbicación No compatible
punto de maniobra punto de maniobra En Azure Maps, _type=maneuverPoin_t es para objetos de punto en los que se requiere una maniobra. 
tipoDeManiobra tipoDeManiobra
modo No compatible
Nombres Nombres
realTimeTransitDelay No compatible
roadType No compatible
routePathIndex routePathPoint
routeSubLegs subLegs
sideOfStreet sideOfStreet
startPathIndices gama La API de indicaciones de ruta de Azure Maps devuelve el índice inicial y final cubierto por una parte específica de una ruta como un intervalo.  
startWaypoint No compatible En la respuesta de la API de direcciones de ruta de Azure Maps, el punto de partida se puede derivar de type="waypoint" y el índice inputIndex = primero.
towardsRoadName towardsRoadName
trafficCongestion No compatible
trafficDataUsed trafficDataUsed
distancia de viaje distanciaEnMetros
duraciónDelViaje duraciónEnSegundos
travelDurationTraffic durationTrafficInSeconds
modo de viaje modo de viaje

Para más información sobre los campos de respuesta de Route Directions API de Azure Maps, consulte Definiciones.

Ejemplos de respuesta

En el ejemplo JSON siguiente se muestra lo que se devuelve en el cuerpo de la respuesta HTTP al ejecutar la solicitud Calcular una ruta de camión de Mapas de Bing:

{
    "authenticationResultCode": "ValidCredentials",
    "brandLogoUri": "https://dev.virtualearth.net/Branding/logo_powered_by.png",
    "copyright": "Copyright © 2024 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",
    "resourceSets": [
        {
            "estimatedTotal": 1,
            "resources": [
                {
                    "__type": "Route:http://schemas.microsoft.com/search/local/ws/rest/v1",
                    "bbox": [
                        47.610017,
                        -122.201495,
                        47.610133,
                        -122.192518
                    ],
                    "distanceUnit": "Mile",
                    "durationUnit": "Second",
                    "routeLegs": [
                        {
                            "actualEnd": {
                                "type": "Point",
                                "coordinates": [
                                    47.610052,
                                    -122.192518
                                ]
                            },
                            "actualStart": {
                                "type": "Point",
                                "coordinates": [
                                    47.610109,
                                    -122.201495
                                ]
                            },
                            "alternateVias": [],
                            "description": "Main St",
                            "itineraryItems": [
                                {
                                    "compassDirection": "east",
                                    "details": [
                                        {
                                            "compassDegrees": 91,
                                            "endPathIndices": [
                                                1
                                            ],
                                            "locationCodes": [
                                                "114+10725"
                                            ],
                                            "maneuverType": "DepartStart",
                                            "mode": "Driving",
                                            "names": [
                                                "Main St"
                                            ],
                                            "roadType": "Arterial",
                                            "startPathIndices": [
                                                0
                                            ]
                                        }
                                    ],
                                    "iconType": "Auto",
                                    "instruction": {
                                        "formattedText": "<Action>Head</Action> <CmpsDir>east</CmpsDir> on <RoadName>Main St</RoadName> toward <Toward>105th Ave NE</Toward>",
                                        "maneuverType": "DepartStart",
                                        "text": "Head east on Main St toward 105th Ave NE"
                                    },
                                    "isRealTimeTransit": false,
                                    "maneuverPoint": {
                                        "type": "Point",
                                        "coordinates": [
                                            47.610109,
                                            -122.201495
                                        ]
                                    },
                                    "realTimeTransitDelay": 0,
                                    "sideOfStreet": "Unknown",
                                    "towardsRoadName": "105th Ave NE",
                                    "travelDistance": 0.418804,
                                    "travelDuration": 68,
                                    "travelMode": "Driving"
                                },
                                {
                                    "compassDirection": "east", 
                                    "details": [
                                        {
                                            "compassDegrees": 90,
                                            "endPathIndices": [
                                                1
                                            ],
                                            "locationCodes": [
                                                "114+10725"
                                            ],
                                            "maneuverType": "ArriveFinish",
                                            "mode": "Driving",
                                            "names": [
                                                "Main St"
                                            ],
                                            "roadType": "Arterial",
                                            "startPathIndices": [
                                                1
                                            ]
                                        }
                                    ],
                                    "hints": [
                                        {
                                            "hintType": "PreviousIntersection",
                                            "text": "The last intersection before your destination is 110th Pl SE"
                                        }
                                    ],
                                    "iconType": "Auto",
                                    "instruction": {
                                        "formattedText": "<Action>Arrive</Action> at <WaypointName>Stop: Y, X = 47.610096, -122.192463</WaypointName>",
                                        "maneuverType": "ArriveFinish",
                                        "text": "Arrive at Stop: Y, X = 47.610096, -122.192463"
                                    },
                                    "isRealTimeTransit": false,
                                    "maneuverPoint": {
                                        "type": "Point",
                                        "coordinates": [
                                            47.610052,
                                            -122.192518
                                        ]
                                    },
                                    "realTimeTransitDelay": 0,
                                    "sideOfStreet": "Unknown",
                                    "travelDistance": 0,
                                    "travelDuration": 0,
                                    "travelMode": "Driving"
                                }
                            ],
                            "routeSubLegs": [
                                {
                                    "endWaypoint": {
                                        "type": "Point",
                                        "coordinates": [
                                            47.610052,
                                            -122.192518
                                        ],
                                        "description": "Stop: Y, X = 47.610096, -122.192463",
                                        "isVia": false,
                                        "locationIdentifier": "",
                                        "routePathIndex": 1
                                    },
                                    "startWaypoint": {
                                        "type": "Point",
                                        "coordinates": [
                                            47.610109,
                                            -122.201495
                                        ],
                                        "description": "Stop: Y, X = 47.610133, -122.201478",
                                        "isVia": false,
                                        "locationIdentifier": "",
                                        "routePathIndex": 0
                                    },
                                    "travelDistance": 0.418805,
                                    "travelDuration": 68
                                }
                            ],
                            "travelDistance": 0.418805,
                            "travelDuration": 68,
                            "travelMode": "Truck"
                        }
                    ],
                    "trafficCongestion": "Medium",
                    "trafficDataUsed": "None",
                    "travelDistance": 0.418805,
                    "travelDuration": 68,
                    "travelDurationTraffic": 93,
                    "travelMode": "Truck"
                }
            ]
        }
    ],
    "statusCode": 200,
    "statusDescription": "OK",
    "traceId": "bb78d3da62a71f62683cea8e6653806f|MWH0032BED|0.0.0.0|MWH0031C93,Leg0-MWH0031C91"
}

En el ejemplo JSON siguiente se muestra lo que se devuelve en el cuerpo de la respuesta HTTP al ejecutar la solicitud de Get Map Tile de Azure Maps:

{
    "type": "FeatureCollection",
    "features": [ 
        { 
            "type": "Feature", 
            "geometry": { 
                "type": "Point", 
                "coordinates": [ 
                    -122.2015, 
                    47.61013 
                ] 
            }, 
            "properties": { 
                "durationInSeconds": 0, 
                "distanceInMeters": 3.00, 
                "routePathPoint": { 
                    "legIndex": 0, 
                    "pointIndex": 0
                },
                "travelMode": "truck",
                "instruction": {
                    "formattedText": "Leave from <street>Bellevue Way SE</street>",
                    "maneuverType": "DepartStart",
                    "text": "Leave from Bellevue Way SE"
                },
                "towardsRoadName": "Bellevue Way SE",
                "steps": [
                    {
                        "maneuverType": "DepartStart",
                        "routePathRange": {
                            "legIndex": 0,
                            "range": [
                                0,
                                1
                            ]
                        },
                        "names": [
                            "Bellevue Way SE"
                        ]
                    }
                ],
                "type": "ManeuverPoint"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -122.2015,
                    47.61011
                ]
            },
            "properties": {
                "durationInSeconds": 111,
                "distanceInMeters": 724.00,
                "routePathPoint": {
                    "legIndex": 0,
                    "pointIndex": 1
                },
                "travelMode": "other",
                "instruction": {
                    "formattedText": "Turn left onto <street>Main St</street>",
                    "maneuverType": "TurnLeft",
                    "text": "Turn left onto Main St"
                },
                "towardsRoadName": "Main St",
                "steps": [
                    {
                        "maneuverType": "TurnLeft",
                        "routePathRange": {
                            "legIndex": 0,
                            "range": [
                                1,
                                32
                            ]
                        },
                        "names": [
                            "Main St"
                        ]
                    } 
                ],
                "type": "ManeuverPoint"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -122.19195,
                    47.61005
                ]
            },
            "properties": {
                "durationInSeconds": 14,
                "distanceInMeters": 7.00,
                "routePathPoint": {
                    "legIndex": 0,
                    "pointIndex": 32
                },
                "travelMode": "truck",
                "instruction": {
                    "formattedText": "Turn left",
                    "maneuverType": "TurnLeft",
                    "text": "Turn left"
                },
                "steps": [
                    {
                        "maneuverType": "TurnLeft",
                        "routePathRange": {
                            "legIndex": 0,
                            "range": [
                                32,
                                33
                            ]
                        }
                    }
                ],
                "type": "ManeuverPoint"
            }
        }, 
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -122.19195,
                    47.61011
                ]
            },
            "properties": {
                "durationInSeconds": 0,
                "distanceInMeters": 0.00,
                "routePathPoint": {
                    "legIndex": 0,
                    "pointIndex": 33
                },
                "travelMode": "truck",
                "instruction": {
                    "formattedText": "You have arrived. Your destination is on the left",
                    "maneuverType": "ArriveFinish",
                    "text": "You have arrived. Your destination is on the left"
                },
                "sideOfStreet": "Left",
                "steps": [
                    {
                        "maneuverType": "ArriveFinish",
                        "routePathRange": {
                            "legIndex": 0,
                            "range": [
                                33,
                                33
                            ]
                        }
                    }
                ],
                "type": "ManeuverPoint"
            }
        },
        {
            "type": "Feature", 
            "geometry": {
                "type": "MultiLineString",
                "coordinates": []
            },
            "properties": {
                "resourceId": "/ZlIBcVsx0+/BcpEi208gQ==",
                "trafficDataUsed": "FlowAndClosure",
                "distanceInMeters": 734.00,
                "durationInSeconds": 100,
                "departureTime": "2024-04-08T20:20:25+00:00",
                "arrivalTime": "2024-04-08T20:22:30+00:00",
                "type": "RoutePath",
                "legs": []
            }
        }
    ]
}

Uso de transacciones

Bing Maps Calculate a Truck Route API registra tres transacciones facturables por solicitud de API. Route Directions API de Azure Maps registra una transacción facturable por solicitud de API. Para más información sobre las transacciones de Azure Maps, vea Descripción de las transacciones de Azure Maps.

Información adicional

  • Post Directions Batch: use para enviar un lote de consultas a Route Directions API en una única solicitud sincrónica.

Apoyo