我有一段惊人的代码可以计算出两个邮政编码之间的距离;距离(英里)和行驶时间。
现在的问题是 - 我得到的距离很长(例如:10.2454014 英里) 我只希望它只有 1 个小数位(例如 10.2 英里)。
另外,如果不是太难的话——当按原样运行上面的代码时,你会注意到行驶时间是 80 分钟。好吧,这很愚蠢。有谁知道如何让它在超过 60 分钟时以小时为单位表示时间,如果在 60 分钟以下则以分钟为单位?
如果有人可以提供帮助,那就太棒了——这段代码对人们真的很有用!
<?php
function get_driving_information($start, $finish, $raw = false)
{
if(strcmp($start, $finish) == 0)
{
$time = 0;
if($raw)
{
$time .= ' seconds';
}
return array('distance' => 0, 'time' => $time);
}
$start = urlencode($start);
$finish = urlencode($finish);
$distance = 'unknown';
$time = 'unknown';
$url = 'http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$finish.'&sensor=false';
if($data = file_get_contents($url))
{
$xml = new SimpleXMLElement($data);
if(isset($xml->route->leg->duration->value) AND (int)$xml->route->leg->duration->value > 0)
{
if($raw)
{
$distance = (string)$xml->route->leg->distance->text;
$time = (string)$xml->route->leg->duration->text;
}
else
{
$distance = (int)$xml->route->leg->distance->value / 1000 / 1.609344;
$time = (int)$xml->route->leg->duration->value/ 60;
}
}
else
{
throw new Exception('Could not find that route');
}
return array('distance' => $distance, 'time' => $time);
}
else
{
throw new Exception('Could not resolve URL');
}
}
try
{
$info = get_driving_information('fy1 4bj', 'ls1 5ns');
echo $info['distance'].' miles ' . 'That\'s about ' .$info['time'].' minutes drive from you';
}
catch(Exception $e)
{
echo 'Caught exception: '.$e->getMessage()."\n";
}
?>