¿Cómo calculo la distancia usando las API de mapas de Google?

programación


Hola

Estoy creando un software para una compañía de taxis y quiero calcular la distancia desde el punto de recogida hasta el punto de entrega y me proporcionarán la tarifa. ¿Cómo puedo lograr esto usando PHP?

Lo que he probado:

Ya intenté usar la API de distancia pero no me funciona.

Solución 1

Suponiendo que está utilizando la API Distance Matrix (y no la API Directions), el formulario de solicitud debe ser:

https://maps.googleapis.com/maps/api/distancematrix/outputFormat?parameters

Y su código debería verse así:

https://maps.googleapis.com/maps/api/distancematrix/json?destinations=New%20York%20City%2C%20NY&origins=Washington%2C%20DC%7CBoston&units=imperial&key=YOUR_API_KEY

Obviamente, debe reemplazar “YOUR_API_KEY” con su clave API de Google para la cual necesita configurar una cuenta de facturación y Maps Javascript API activado. El conjunto completo de parámetros opcionales se describe a continuación. Recibirás una respuesta en formato JSON (o XML si reemplazas json? con xml? que necesitas analizar. A continuación se muestra un ejemplo de código PHP para analizar una solicitud API de Distance Matrix. Toda la información que necesitas la puedes encontrar en Solicitud y respuesta de la API Distance Matrix | Google para desarrolladores[^].

PHP
<?php
// We need to get the JSON response into a string variable $jsonResponse
// First assign the URL of the Distance Matrix API request to a string
$url = 'href="https://maps.googleapis.com/maps/api/distancematrix/outputFormat?parameters';

// Use file_get_contents() to send a GET request to the URL
$jsonResponse = file_get_contents($url);

// Decode the JSON response
$data = json_decode($jsonResponse, true);

// Check if the status is OK
if ($data['status'] == 'OK') {
    // Loop through each row (origin-destination pair)
    foreach ($data['rows'] as $row) {
        // Loop through each element (information about the origin-destination pair)
        foreach ($row['elements'] as $element) {
            // Check if the status is OK
            if ($element['status'] == 'OK') {
                // Get the distance and duration
                $distance = $element['distance']['text'];
                $duration = $element['duration']['text'];

                // Print the distance and duration
                echo "Distance: $distance\n";
                echo "Duration: $duration\n";
            } else {
                echo "Error: " . $element['status'] . "\n";
            }
        }
    }
} else {
    echo "Error: " . $data['status'] . "\n";
}
?>

Solicitud de API de matriz de distancia:
https://maps.googleapis.com/maps/api/distancematrix/outputFormat?parameters

Dónde outputFormat podría ser cualquiera json o xml.

Y parameters incluir :

origins

El punto de partida para calcular la distancia y el tiempo de viaje. Puede proporcionar una o más ubicaciones en forma de dirección, coordenadas de latitud/longitud o un ID de lugar.
destinations

Una o más ubicaciones a las que calcular la distancia y el tiempo de viaje.
mode (opcional)
Especifica el modo de transporte. Las opciones incluyen conducir, caminar, andar en bicicleta y utilizar el transporte público.
units (opcional)
Especifica el sistema de unidades que se utilizará al expresar la distancia como texto. Las opciones incluyen métrico e imperial.
departure_time (opcional)
Especifica la hora de salida deseada como un número entero en segundos desde la medianoche del 1 de enero de 1970 UTC.
traffic_model (opcional)
Especifica las suposiciones que se utilizarán al calcular el tiempo en el tráfico. Las opciones incluyen best_guess, pesimista y optimista.

Miguel

コメント

タイトルとURLをコピーしました