Saltar al contenido

Obtenga la distancia de conducción entre dos puntos usando la API de Google Maps

No dejes de compartir nuestra web y códigos en tus redes, apóyanos para hacer crecer nuestra comunidad.

Solución:

Bien, encontré una solución usando matriz de distancia: https://developers.google.com/maps/documentation/distancematrix/#DistanceMatrixRequests

Esta función obtiene la latitud y longitud de la ciudad, la dirección y la provincia:

function get_coordinates($city, $street, $province)

    $address = urlencode($city.','.$street.','.$province);
    $url = "http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=Poland";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $response_a = json_decode($response);
    $status = $response_a->status;

    if ( $status == 'ZERO_RESULTS' )
    
        return FALSE;
    
    else
    
        $return = array('lat' => $response_a->results[0]->geometry->location->lat, 'long' => $long = $response_a->results[0]->geometry->location->lng);
        return $return;
    

Esta función calcula la distancia de conducción y la duración del tiempo de viaje:

function GetDrivingDistance($lat1, $lat2, $long1, $long2)

    $url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$lat1.",".$long1."&destinations=".$lat2.",".$long2."&mode=driving&language=pl-PL";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $response_a = json_decode($response, true);
    $dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
    $time = $response_a['rows'][0]['elements'][0]['duration']['text'];

    return array('distance' => $dist, 'time' => $time);

Uso:

$coordinates1 = get_coordinates('Tychy', 'Jana Pawła II', 'Śląskie');
$coordinates2 = get_coordinates('Lędziny', 'Lędzińska', 'Śląskie');
if ( !$coordinates1 || !$coordinates2 )

    echo 'Bad address.';

else

    $dist = GetDrivingDistance($coordinates1['lat'], $coordinates2['lat'], $coordinates1['long'], $coordinates2['long']);
    echo 'Distance: '.$dist['distance'].'
Travel time duration: '.$dist['time'].'';

Regreso:

Distancia: 11,2 km Duración del viaje: 15 min

Puede hacer esto usando la API de matriz de distancia de Google:

// $details = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=Seattle&destinations=San+Francisco&mode=driving&sensor=false";

    //you can also pass latitude/longitude values in origins


   $details = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=41.43206,-81.38992&destinations=San+Francisco&mode=driving&sensor=false";


    $json = file_get_contents($details);

    $details = json_decode($json, TRUE);

    echo "
"; print_r($details); echo "

";

Aquí está el enlace de Google Distance Matrix API: - https://developers.google.com/maps/documentation/distancematrix/?csw=1

Este es el método que tengo. En él, puede ingresar cualquier distancia manual de las sesiones o la base de datos.

$origin      = urlencode($_SESSION['source1']);
$destination = urlencode($_SESSION['dest1']);

$url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=$origin&destinations=$destination&key=Your api key";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response_a = json_decode($response, true);
?>

Ahora la parte difícil era cómo mostrar distancia. Bueno, con la investigación, obtuve esta respuesta:

Puede imprimir este resultado en cualquier lugar. Está funcionando para mí.

valoraciones y reseñas

Si conservas alguna desconfianza y forma de medrar nuestro reseña eres capaz de realizar una observación y con placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.