我制作了一个使用Google Maps API计算距离的简短代码。我的问题是代码在一台服务器上工作正常,但在另一台服务器上没有。从一个地方复制到另一个地方的是相同的代码。我无法弄清楚什么是错的。 任何人都可以帮助我吗?
$server="https://maps.googleapis.com/maps/api/directions/json?origin=".$from.",Sweden&destination=".$to.",Sweden";
if($stream = fopen( $server,r)){
$klart=json_decode(stream_get_contents($stream),true);
fclose($stream);
$distans = $klart['routes'][0]['legs'][0]['distance'][text];
$kilometer=split(" ",$distans);
$km = $kilometer[0];
$kostnad = $km * ((2.1*1.15)*1.25)/5;
}
谢谢! 安德斯
编辑1:谢谢大家的意见。它似乎是一个javascript干扰了html格式。我添加了一个脚本来自动完成城市(变量$ to和$ from)。当我注释掉javascript时,php代码工作正常。
答案 0 :(得分:2)
原谅延迟添加评论,紧急情况出现,我不得不离开。最初,当我运行代码时,除了$from
& $to
有两个未定义的常量,即r
和text
$from='malmo';
$to='stockholm';
$server="https://maps.googleapis.com/maps/api/directions/json?origin=".$from.",Sweden&destination=".$to.",Sweden";
/* the mode `r` needs to be quoted */
if($stream = fopen( $server,'r')){
$klart=json_decode(stream_get_contents($stream),true);
fclose($stream);
/* the field `text` also needs to be quoted - unless it really is a constant defined elsewhere */
$distans = $klart['routes'][0]['legs'][0]['distance']['text'];
/* as `split` is now deprecated, use preg_split & split string on a space `\s` */
$kilometer=preg_split('@\s@',$distans);
$km = $kilometer[0];
$kostnad = $km * ((2.1*1.15)*1.25)/5;
echo $kostnad;
}
outputs:
369.495