Migración de la API Calculate a Route de Bing Maps
En este artículo se explica cómo la API Calculate a Route de Bing Maps a la API Route Directions de Azure Maps. Route Directions de Azure Maps es una API que devuelve la ruta ideal entre un origen y un destino para automóviles (conducción), camiones comerciales y rutas a pie. La ruta tiene en cuenta factores como el tráfico actual y las velocidades típicas de la carretera en el día solicitado de la semana y la hora del día.
Requisitos previos
- Una cuenta de Azure
- Una cuenta de Azure Maps
- Una clave de suscripción u otra forma de Autenticación con Azure Maps
Diferencias destacadas
- La API Calculate a Route de Bing Maps admite una solicitud GET. La API Route Directions de Azure Maps admite una solicitud POST.
- La API Calculate a Route de Bing Maps admite formato de respuesta XML y JSON. La API Route Directions de Azure Maps admite el formato GeoJSON.
- La API Calculate a Route de Bing Maps requiere que los puntos de referencia y viaWaypoints estén en formato de latitud y longitud, mientras que Azure Maps requiere que estén en formato de longitud y latitud, tal como se define en el formato GeoJSON.
- La API Calculate a Route de Bing Maps admite puntos de referencia y viaWaypoints como puntos, puntos de referencia o direcciones. La API Route Directions de Azure Maps solo admite puntos. Para convertir un punto de referencia o una dirección a un punto, puede usar la API Get Geocoding de Azure Maps.
- La API Calculate a Route de Bing Maps admite el enrutamiento de tránsito. La API Route Directions de Azure Maps no.
- 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 le permite limitar la residencia de datos a las áreas geográficas (geoáreas) de Europa (EU) 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 el á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 las 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 en la documentación de obtención de indicaciones de ruta de Azure Maps.
Parámetros de solicitud
En la tabla siguiente se enumeran los parámetros de solicitud de Cálculo de una ruta de Bing Maps y el equivalente de 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 |
---|---|---|---|---|---|
avoid | Evite | False | string | Estos son los avoid equivalentes de la API Calculate a Route de Bing Maps en la API Route Directions de Azure Maps, donde se admiten: tolls: tollRoads ferry: ferries borderCrossings: borderCrossings minimizeDrivingSideTurn: no compatible minimizeAgainstDrivingSideTurn: no compatible minimizeUTurn: no compatible minimizeTolls: no compatible highways: limitedAccessHighways minimizeHighways: no compatible |
|
dateTime | dt | departAt | False | string | La API Route Directions de Azure Maps también admite el parámetro arriveAt que se usa para especificar la fecha y hora deseadas de llegada. No se puede usar con departAt. |
distanceBeforeFirstTurn | dbft | No compatible | No compatible | No compatible | |
distanceUnit | du | No se requiere | No se requiere | No se requiere | En la API Route Directions de Azure Maps, la unidad de distancia es metros. |
heading | hd | heading | False | integer | |
itineraryGroups | ig | No compatible | No compatible | ||
maxSolutions | maxSolns | maxRouteCount | False | Entero | |
optimize | optmz | optimizeRoute | False | String | Estos son los optimizeRoute equivalentes de la API Calculate a Route de Bing Maps en la API Route Directions de Azure Maps: time: fastestWithoutTraffic timeWithTraffic: fastestWithTraffic La API Route Directions 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 | False | boolean | |
routeAttributes | ra | routeOutputOptions | False | string | Estos son los routeOutputOptions equivalentes de la API Calculate a Route de Bing Maps en la API Route Directions de Azure Maps: routePath: routePath regionTravelSummary: regionTravelSummary La API Route Directions de Azure Maps admite más valores, como itinerary y routeSummary. Consulte RouteOutputOption para obtener más información. |
routePathOutput | rpo | routeOutputOptions | False | string | La API Route Directions de Azure Maps admite la devolución de las coordenadas de la geometría de la ruta de acceso de ruta pasando routeOutputOptions=routePath en la solicitud. |
timeType | tt | No compatible | No compatible | No compatible | La API Route Directions de Azure Maps no admite el enrutamiento de tránsito. |
tolerances | tl | No compatible | No compatible | No compatible | |
travelMode | travelMode | False | String | Estos son los travelMode equivalentes de la API Calculate a Route de Bing Maps en la API Route Directions de Azure Maps: Conducción: conducción Caminar: caminar Tránsito: no compatible Azure Maps admite el "camión" de travelMode adicional para el cálculo de ruta de camiones. |
|
viaWaypoint.n | vwp.n | Características InputWaypointFeaturesItem[] |
Verdadero | GeoJSON Point | waypoint y viaWaypoint se especifican como características, que es un parámetro obligatorio. Sin embargo, solo waypoint es un pointType obligatorio y la solicitud se puede realizar sin viaWaypoint. En la API Calculate a Route de Bing Maps, viaWaypoint puede ser un punto, un punto de referencia o una dirección, mientras que, en la API Route Directions de Azure Maps, debe ser un punto. Para convertir un punto de referencia o una dirección a un punto, puede usar la API Get Geocoding de Azure Maps. La API Calculate a Truck Route de Bing Maps requiere que viaWaypoints esté en formato de latitud y longitud, mientras que Azure Maps requiere que estén en formato de longitud y latitud, tal como se define en el formato GeoJSON. |
waypoint.n | wp.n | features InputWaypointFeaturesItem[] | Verdadero | GeoJSON Point | En la API Calculate a Route de Bing Maps, waypoint puede ser un punto, un punto de referencia o una dirección, mientras que, en la API Route Directions de Azure Maps, debe ser un punto. Para convertir un punto de referencia o una dirección a un punto, puede usar la API Get Geocoding de Azure Maps. La API Calculate a Route de Bing Maps requiere que los puntos de referencia estén en formato de latitud y longitud, mientras que Azure Maps requiere que estén en formato de longitud y latitud, tal como se define en el formato GeoJSON. |
Para obtener más información sobre los parámetros de solicitud de la API Route Directions de Azure Maps, consulte Parámetros de URI.
Ejemplos de solicitud
Solicitud de la APICalculate a Route de Bing Maps:
http://dev.virtualearth.net/REST/V1/Routes/driving?wp.0=47.610173,-122.204171&wp.1=47.612440,-122.204171key={Your-Bing-Maps-Key}
Solicitud POST de la API Route Directions de Azure Maps:
https://atlas.microsoft.com/route/directions?api-version=2023-10-01-preview&subscription-key={Your-Azure-Maps-Subscription-key}
Incluido en el cuerpo de la solicitud:
{
"type": "FeatureCollection",`
"features": [
{
"type": "Feature",
"geometry": {
"coordinates": [
-122.204171,47.610173
],
"type": "Point"
},
"properties": {
"pointIndex": 0,
"pointType": "waypoint"
}
},
{
"type": "Feature",
"geometry": {
"coordinates": [
-122.204171,47.612440
],
"type": "Point"
},
"properties": {
"pointIndex": 1,
"pointType": "waypoint"
}
}
]
}
Campos de respuesta
En la tabla siguiente se enumeran los campos que pueden aparecer en la respuesta HTTP al ejecutar la solicitud de Find a Location by Address de Bing Maps y el equivalente de Azure Maps:
Campo de Bing Maps | Campo de Azure Maps | Descripción |
---|---|---|
actualStart | Objeto de característica de punto | Objeto Point feature con type="waypoint" y inputIndex = 0 define la ubicación inicial enrutable. |
actualEnd | Objeto de característica de punto | Objeto Point feature con type="waypoint" y inputIndex = last define la ubicación final enrutable. |
alternateVias | alternativeRoutes | alternateVias de Bing Maps identifica las rutas independientes. En Azure Maps, las rutas alternativas se devuelven como una nueva colección de características en alternativeRoutes. |
compassDegrees | compassDegrees | |
compassDirection | compassDirection | |
description | No compatible | |
detalles | properties | Las propiedades del objeto de característica contienen la información de la maniobra. |
distanceUnit | No aplicable | La API Route Directions de Azure Maps devuelve la distancia en metros. |
durationUnit | No aplicable | La API de indicaciones de ruta de Azure Maps devuelve la duración en segundos. |
endPathIndices | range | 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 Route Directions de Azure Maps, el punto de conexión se puede derivar de type="waypoint" y inputIndex = last index |
formattedText | formattedText | |
sugerencias | No compatible | |
hintType | No compatible | |
iconType | No compatible | La API Calculate Route de Bing Maps especifica el tipo de icono para representar el modo de desplazamiento en las aplicaciones de usuario. Por ejemplo, si una ruta de conducción tiene una ruta de ferry parcial, el icono podría usarse para identificar visualmente los diferentes modos de viaje en una ruta. La API Calculate Route de Azure Maps no admite iconType, pero el modo de desplazamiento se puede derivar de la propiedad travelMode en la respuesta. |
instrucción | Instrucción | |
isRealTimeTransit | No compatible | |
isVia | viaWaypoint | En la respuesta de la API Route Directions de Azure Maps, via waypoint se devuelve como "type": "ViaWaypoint" |
locationCodes | No compatible | |
locationIdentifier | No compatible | |
maneuverPoint | maneuverPoint | En Azure Maps, type=maniobraPoint para objetos de punto donde se requiere una maniobra. En la API Calculate a Route de Bing Maps, maneuverPoint está en formato latitud/longitud, mientras que en Azure Maps está en formato de longitud/latitud, tal como se define en el formato GeoJSON. |
maneuverType | maneuverType | |
mode | No compatible | |
nombres | nombres | |
realTimeTransitDelay | No compatible | |
roadType | roadType | |
routePathIndex | routePathPoint | |
routeSubLegs | subLegs | |
sideOfStreet | sideOfStreet | |
startPathIndices | range | 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 Route Directions de Azure Maps, startWaypoint se puede derivar de type="waypoint" y inputIndex = first index |
towardsRoadName | towardsRoadName | |
trafficCongestion | trafficCongestion | |
trafficDataUsed | trafficDataUsed | |
travelDistance | distanceInMeters | |
travelDuration | durationInSeconds | |
travelDurationTraffic | durationTrafficInSeconds | |
travelMode | travelMode |
Para obtener más información sobre los campos de respuesta de la API de indicaciones de ruta 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 de Calculate a Route de Bing Maps:
{
"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.610173,
-122.204193,
47.611674,
-122.203012
],
"id": "v70,h570425388,i0,a0,cen-US,dAAAAAAAAAAA1,y0,s1,m1,o1,t4,wfPMbJhrOR0Cq8j0jEY1ewA2~AF2UnBAtW6QAAADgAQAAAAAA0~MTAybmQgQXZlIE5F0~~~~~~~~v12,wkWEVb2TOR0Cq8j0jEY1ewA2~AF2UnBAdU6QAAADgAQAAgD8A0~MTAzcmQgQXZlIE5F0~~~~~~~~v12,k1,pZ3NpLXBvaQ2-VHJ1ZQ2,pWC1GRC1GTElHSFQ1-Z3NpLXBvaQ2,p-,p-,p-",
"distanceUnit": "Kilometer",
"durationUnit": "Second",
"routeLegs": [
{
"actualEnd": {
"type": "Point",
"coordinates": [
47.611674,
-122.203084
]
},
"actualStart": {
"type": "Point",
"coordinates": [
47.610173,
-122.20414
]
},
"alternateVias": [],
"description": "102nd Ave NE, NE 1st St",
"endTime": "/Date(1713305954789-0700)/",
"itineraryItems": [
{
"compassDirection": "north",
"details": [
{
"compassDegrees": 356,
"endPathIndices": [
1
],
"maneuverType": "DepartStart",
"mode": "Driving",
"names": [
"102nd Ave NE"
],
"roadType": "Street",
"startPathIndices": [
0
]
}
],
"exit": "",
"iconType": "Auto",
"instruction": {
"formattedText": null,
"maneuverType": "DepartStart",
"text": "Head north on 102nd Ave NE toward NE 1st Pl"
},
"isRealTimeTransit": false,
"maneuverPoint": {
"type": "Point",
"coordinates": [
47.610173,
-122.20414
]
},
"realTimeTransitDelay": 0,
"sideOfStreet": "Unknown",
"tollZone": "",
"towardsRoadName": "NE 1st Pl",
"transitTerminus": "",
"travelDistance": 0.114,
"travelDuration": 36,
"travelMode": "Driving"
},
{
"compassDirection": "east",
"details": [
{
"compassDegrees": 89,
"endPathIndices": [
4
],
"maneuverType": "TurnRight",
"mode": "Driving",
"names": [
"NE 1st St"
],
"roadType": "Street",
"startPathIndices": [
1
]
}
],
"exit": "",
"iconType": "Auto",
"instruction": {
"formattedText": null,
"maneuverType": "TurnRight",
"text": "Turn right onto NE 1st St"
},
"isRealTimeTransit": false,
"maneuverPoint": {
"type": "Point",
"coordinates": [
47.611206,
-122.204193
]
},
"realTimeTransitDelay": 0,
"sideOfStreet": "Unknown",
"tollZone": "",
"transitTerminus": "",
"travelDistance": 0.106,
"travelDuration": 22,
"travelMode": "Driving"
},
{
"compassDirection": "northwest",
"details": [
{
"compassDegrees": 302,
"endPathIndices": [
5
],
"maneuverType": "TurnLeft",
"mode": "Driving",
"names": [
"103rd Ave NE"
],
"roadType": "Street",
"startPathIndices": [
4
]
}
],
"exit": "",
"iconType": "Auto",
"instruction": {
"formattedText": null,
"maneuverType": "TurnLeft",
"text": "Turn left onto 103rd Ave NE"
},
"isRealTimeTransit": false,
"maneuverPoint": {
"type": "Point",
"coordinates": [
47.611629,
-122.203012
]
},
"realTimeTransitDelay": 0,
"sideOfStreet": "Unknown",
"tollZone": "",
"transitTerminus": "",
"travelDistance": 0.007,
"travelDuration": 21,
"travelMode": "Driving"
},
{
"compassDirection": "northwest",
"details": [
{
"compassDegrees": 302,
"endPathIndices": [
5
],
"maneuverType": "ArriveFinish",
"mode": "Driving",
"names": [
"103rd Ave NE"
],
"roadType": "Street",
"startPathIndices": [
5
]
}
],
"exit": "",
"hints": [
{
"hintType": "PreviousIntersection",
"text": "The last intersection before your destination is NE 2nd St"
}
],
"iconType": "Auto",
"instruction": {
"formattedText": null,
"maneuverType": "ArriveFinish",
"text": "Arrive at 103rd Ave NE"
},
"isRealTimeTransit": false,
"maneuverPoint": {
"type": "Point",
"coordinates": [
47.611674,
-122.203084
]
},
"realTimeTransitDelay": 0,
"sideOfStreet": "Unknown",
"tollZone": "",
"transitTerminus": "",
"travelDistance": 0,
"travelDuration": 0,
"travelMode": "Driving"
}
],
"routeRegion": "WWMX",
"routeSubLegs": [
{
"endWaypoint": {
"type": "Point",
"coordinates": [
47.611674,
-122.203084
],
"description": "103rd Ave NE",
"isVia": false,
"locationIdentifier": "0|93|148|156|16|29|83|164|0|0|0|224|1|0|0|128|63|0|47.611674,-122.203084",
"routePathIndex": 5
},
"startWaypoint": {
"type": "Point",
"coordinates": [
47.610173,
-122.20414
],
"description": "102nd Ave NE",
"isVia": false,
"locationIdentifier": "0|93|148|156|16|45|91|164|0|0|0|224|1|0|0|0|0|0|47.610173,-122.20414",
"routePathIndex": 0
},
"travelDistance": 0.227,
"travelDuration": 80
}
],
"startTime": "/Date(1713305874789-0700)/",
"travelDistance": 0.227,
"travelDuration": 80,
"travelMode": "Driving"
}
],
"trafficCongestion": "None",
"trafficDataUsed": "None",
"travelDistance": 0.227,
"travelDuration": 80,
"travelDurationTraffic": 71,
"travelMode": "Driving"
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "47969a89fd7bc08f1a922bf92f4a7541|MWH0032B15|0.0.0.0|MWH0031C9B, Leg0-MWH0031C8C"
}
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.20414,
47.610173
]
},
"properties": {
"durationInSeconds": 36,
"distanceInMeters": 114.00,
"exitIdentifier": "",
"signs": [],
"instruction": {
"formattedText": "<Action>Head</Action> <CmpsDir>north</CmpsDir> on <RoadName>102nd Ave NE</RoadName> toward <Toward>NE 1st Pl</Toward>",
"maneuverType": "DepartStart",
"text": "Head north on 102nd Ave NE toward NE 1st Pl"
},
"towardsRoadName": "NE 1st Pl",
"routePathPoint": {
"legIndex": 0,
"pointIndex": 0
},
"compassDirection": "north",
"travelMode": "driving",
"steps": [
{
"maneuverType": "DepartStart",
"routePathRange": {
"legIndex": 0,
"range": [
0,
1
]
},
"names": [
"102nd Ave NE"
],
"compassDegrees": 356.00,
"roadType": "Street"
}
],
"type": "ManeuverPoint"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.204193,
47.611206
]
},
"properties": {
"durationInSeconds": 22,
"distanceInMeters": 106.00,
"exitIdentifier": "",
"signs": [],
"instruction": {
"formattedText": "<Action>Turn</Action> <TurnDir>right</TurnDir> onto <RoadName>NE 1st St</RoadName>",
"maneuverType": "TurnRight",
"text": "Turn right onto NE 1st St"
},
"routePathPoint": {
"legIndex": 0,
"pointIndex": 1
},
"compassDirection": "east",
"travelMode": "driving",
"steps": [
{
"maneuverType": "TurnRight",
"routePathRange": {
"legIndex": 0,
"range": [
1,
4
]
},
"names": [
"NE 1st St"
],
"compassDegrees": 89.00,
"roadType": "Street"
}
],
"type": "ManeuverPoint"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.203012,
47.611629
]
},
"properties": {
"durationInSeconds": 21,
"distanceInMeters": 7.00,
"exitIdentifier": "",
"signs": [],
"instruction": {
"formattedText": "<Action>Turn</Action> <TurnDir>left</TurnDir> onto <RoadName>103rd Ave NE</RoadName>",
"maneuverType": "TurnLeft",
"text": "Turn left onto 103rd Ave NE"
},
"routePathPoint": {
"legIndex": 0,
"pointIndex": 4
},
"compassDirection": "northwest",
"travelMode": "driving",
"steps": [
{
"maneuverType": "TurnLeft",
"routePathRange": {
"legIndex": 0,
"range": [
4,
5
]
},
"names": [
"103rd Ave NE"
],
"compassDegrees": 302.00,
"roadType": "Street"
}
],
"type": "ManeuverPoint"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-122.203084,
47.611674
]
},
"properties": {
"durationInSeconds": 0,
"distanceInMeters": 0.00,
"exitIdentifier": "",
"signs": [],
"instruction": {
"formattedText": "<Action>Arrive</Action> at <WaypointName>103rd Ave NE</WaypointName>",
"maneuverType": "ArriveFinish",
"text": "Arrive at 103rd Ave NE"
},
"routePathPoint": {
"legIndex": 0,
"pointIndex": 5
},
"compassDirection": "northwest",
"travelMode": "driving",
"steps": [
{
"maneuverType": "ArriveFinish",
"routePathRange": {
"legIndex": 0,
"range": [
5,
5
]
},
"names": [
"103rd Ave NE"
],
"compassDegrees": 302.00,
"roadType": "Street"
}
],
"type": "ManeuverPoint"
}
},
{
"type": "Feature",
"geometry": {
"type": "MultiLineString",
"coordinates": []
},
"properties": {
"resourceId": "v70,h570425388,i0,a0,cen-US,dAAAAAAAAAAA1,y0,s1,m1,o1,t0,wfPMbJhrOR0Cq8j0jEY1ewA2~~~~~~~~~~v12,wkWEVb2TOR0Cq8j0jEY1ewA2~~~~~~~~~~v12,k1,qatt:1",
"trafficCongestion": "Mild",
"trafficDataUsed": "None",
"distanceInMeters": 227.00,
"durationInSeconds": 80,
"departureTime": "2024-04-16T22:22:27+00:00",
"arrivalTime": "2024-04-16T22:23:47+00:00",
"type": "RoutePath",
"legs": []
}
}
]
}
Uso de transacciones
Al igual que la API Calculate Route de Bing Maps, la API Route Direction 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: se usa para enviar un lote de consultas a la API Route Directions en una única solicitud sincrónica.
Soporte técnico