Calcula el resumen de la ruta

Para usar Text Search (nuevo) o Nearby Search (nuevo) para calcular la duración y la distancia del viaje a cada lugar de la respuesta, haz lo siguiente:

  1. Pasa el parámetro routingParameters.origin en la solicitud para especificar las coordenadas de latitud y longitud del origen del enrutamiento. Este parámetro es obligatorio para calcular la duración y la distancia a cada lugar en la respuesta.

  2. Incluye routingSummaries en la máscara de campo para que la respuesta incluya el array routingSummaries. Este array contiene la duración y la distancia desde el origen de la ruta hasta cada lugar de la respuesta.

El Explorador de APIs te permite realizar solicitudes en vivo para que puedas familiarizarte con la API y sus opciones:

En la siguiente solicitud, calcularás la duración y la distancia del viaje a cada lugar en la respuesta de Text Search (nuevo):

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

La respuesta contiene dos arrays JSON: el array places contiene los lugares coincidentes, y el array routingSummaries contiene la duración y la distancia para viajar a cada lugar:

{
  "places": [
    {
      object (Place)
    }
  ]
  "routingSummaries": [
    {
      object (RoutingSummary)
    }
}

Cada elemento del array routingSummaries se encuentra en la ubicación del array correspondiente al lugar del array places. Es decir, el elemento en routingSummaries[0] corresponde al lugar en places[0].

La longitud del array de routingSummaries es la misma que la del array de places. En el caso de que el routingSummary de un lugar no esté disponible, la entrada del array estará vacía.

Dado que este ejemplo calcula la duración y la distancia desde el origen del enrutamiento hasta cada lugar, el campo routingSummaries.legs de la respuesta contiene un solo objeto Leg que incluye los objetos duration y distanceMeters desde el origen del enrutamiento hasta el lugar.

{
  "places": [
    {
      "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Gözleme King Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    
  ]
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "597s",
          "distanceMeters": 2607
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0"
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0"
    },
   
  ]
}

En este ejemplo, puedes ver que la duración y la distancia desde el origen de la ruta hasta el primer lugar en los resultados son de 597 segundos y 2,607 metros.

En este ejemplo, calcularás la duración y la distancia del viaje a cada lugar en la respuesta de la Búsqueda cercana. En este ejemplo, se buscan restaurantes en Sídney, Australia, y se establecen la restricción de ubicación y el origen de la ruta en las mismas coordenadas de latitud y longitud:

  curl -X POST -d '{
    "includedTypes": ["restaurant"],
    "maxResultCount": 10,
    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": -33.8688,
          "longitude": 151.1957362},
        "radius": 500.0
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": -33.8688,
        "longitude": 151.1957362
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \
  -H "X-Goog-FieldMask: places.displayName,routingSummaries" \
  https://places.googleapis.com/v1/places:searchNearby

No es necesario que uses las mismas coordenadas para el locationRestriction y el origen del enrutamiento. Por ejemplo, puedes establecer locationRestriction en el punto central de Sídney para sesgar los resultados de la búsqueda hacia ese círculo. Sin embargo, luego estableces el origen de la ruta en las coordenadas de tu casa, es decir, en una ubicación diferente dentro del círculo de búsqueda. Luego, la solicitud sesga los resultados de la búsqueda hacia el círculo y calcula los resúmenes de la ruta en función de la ubicación de tu casa.

Especifica las opciones de viaje

De forma predeterminada, los cálculos de duración y distancia son para un automóvil. Sin embargo, puedes controlar el tipo de vehículo, así como otras opciones, en la búsqueda.

  • Usa el parámetro routingParameters.travelMode para establecer el modo de transporte en DRIVE, BICYCLE, WALK o TWO_WHEELER. Para obtener más información sobre estas opciones, consulta Tipos de vehículos disponibles para las rutas.

  • Usa la propiedad routingParameters.routingPreference para establecer la opción de preferencia de enrutamiento en TRAFFIC_UNAWARE (predeterminada), TRAFFIC_AWARE o TRAFFIC_AWARE_OPTIMAL. Cada opción tiene diferentes niveles de calidad y latencia de los datos. Para obtener más información, consulta Cómo especificar si se deben incluir datos de tráfico y de qué manera.

    La propiedad routingParameters.routingPreference sí afecta las indicaciones que se incluyen en el campo directionsUri de la versión preliminar (pre-DG), ya que Google Maps muestra las opciones de tráfico cuando se abre el vínculo.

  • Usa la propiedad routingParameters.routeModifiers para especificar avoidTolls, avoidHighways, avoidFerries y avoidIndoor. Para obtener más información sobre estas opciones, consulta Cómo especificar las características de la ruta que se deben evitar.

En el siguiente ejemplo, especificarás el modo de viaje como DRIVE y evitarás las autopistas:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    },
    "travelMode":"DRIVE",
    "routeModifiers": {
      "avoidHighways": true
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

Pruébalo

El Explorador de APIs te permite realizar solicitudes de ejemplo para que te familiarices con la API y sus opciones.

  1. Selecciona el ícono de la API api en el lado derecho de la página.

  2. De manera opcional, edita los parámetros de la solicitud.

  3. Selecciona el botón Ejecutar. En el diálogo, elige la cuenta que deseas usar para hacer la solicitud.

  4. En el panel del Explorador de APIs, selecciona el ícono de pantalla completa fullscreen para expandir la ventana del Explorador de APIs.