php - 使用Google Maps API获取两点之间的行车距离并计算时间

时间:2016-11-05 20:42:28

标签: php google-maps

如何显示时间示例16:00有任何想法如何制作这个?

function GetDrivingDistance($lat1, $lat2, $long1, $long2)
        {
            $url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=".$lat1.",".$long1."&destinations=".$lat2.",".$long2."&mode=driving&language=de";
            $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);
    }
    //$pickuplocation = 'Herbststrasse 5';
    //$droplocation = 'Pastorstrasse 5';
    $coordinates1 = get_coordinates('wien', 'Stefan Esders Platz 1', '');
    $coordinates2 = get_coordinates('wien', 'Pastorstrasse 1', '');
    if ( !$coordinates1 || !$coordinates2 )
    {
        echo 'Bad address.';
    }
    else
    {
        $dist = GetDrivingDistance($coordinates1['lat'], $coordinates2['lat'], $coordinates1['long'], $coordinates2['long']);
        echo 'Entfernung: <b>'.$dist['distance'].'</b><br>Fahrzeit: <b>'.$dist['time'].'</b>';
    }
    ?>
  

Entfernung:662 km Fahrzeit:6 Stunden,56 Minuten

我需要显示时间示例6:56任何可以帮助吗?

1 个答案:

答案 0 :(得分:0)

而不是从响应中获取“文本”字段:

$dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
$time = $response_a['rows'][0]['elements'][0]['duration']['text'];

尝试以下值:

$dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
$time = $response_a['rows'][0]['elements'][0]['duration']['value'];

这是总秒数,你可以自己编程,你可以随意格式化。

$hours = floor($time / 3600);
$mins = floor($time / 60 % 60);
$secs = floor($time % 60);