我从stackoverflow中获取此代码来计算地址:
$from = urlencode($from);
$to = urlencode($to.', Челябинс');
$data = file_get_contents('http://maps.googleapis.com/maps/api/distancematrix/json?origins='.$from.'&destinations='.$to.'&language=ru-RU&sensor=false&mode=driving');//&key=AIzaSyDAJ05io1966D_KmF7lbRsucehr8GtUBqk');
$data = json_decode($data);
$time = 0;
$distance = 0;
foreach($data->rows[0]->elements as $road) {
$time += $road->duration->value;
$distance += $road->distance->value;
}
$table[0]=$distance;
$table[1]=$time;
一旦我的计算机上有文件,它就能正常工作。 但是,当我把它放在网上时,它就不再起作用了。
有人会知道它可能出现什么问题吗? 我还读到,对于API,我们需要一个密钥,但在我的情况下,它来自我想要使用它的HTML / PHP网站。
提前感谢您的帮助
编辑:
可以找到关于这个问题的好文章:
[Why doesn't file_get_contents work?
实际上问题是(如果我理解正确)由于服务器的参数,我得到以下消息:
警告:file_get_contents():http://封装器被禁用 服务器配置by allow_url_fopen = 0
这是我们可以自己修改的参数吗?或者我们是否要求网络托管商修改它?
答案 0 :(得分:0)
如图所示,需要更改PHP.INI文件中的allow_url_fopen参数。我做到了,现在工作正常。 在我的情况下(hostpapa托管)我可以自己做。
答案 1 :(得分:0)
距离矩阵现在是必填项,必须通过google api密钥,而密钥距离矩阵不起作用。
请使用以下示例代码:
$distance_data = file_get_contents(
'https://maps.googleapis.com/maps/api/distancematrix/json?&origins='.urlencode($origin).'&destinations='.urlencode($destination).'&key=AIzaSyD6YkF-BVV1LNLOz5n3zeL9bi1farzUX8k'
);
$distance_arr = json_decode($distance_data);