У меня есть следующий код для создания запроса в PHP, чтобы получить ответ от Google Distance Matrix API:
//get info from google
$map_url = 'https://maps.googleapis.com/maps/api/distancematrix/json';
$midnight = strtotime('tomorrow midnight');
$params = array(
'units' => 'metric',
'origins' => str_replace(' ', '+', str_replace('.', '', $arr['address'])),
'destinations' => str_replace(' ', '+', str_replace('.', '', $rink_arr['address'])),
'traffic_model' => 'best_guess',
'departure_time' => $midnight + $rink_arr['avg_time'],
'key' => 'API_KEY'
);
//get data
$url = $map_url.'?'.http_build_query($params);
$json = file_get_contents($url);
echo '<pre>';
echo $url.'<br><br>';
print_r($json);
echo '</pre>';
exit();
Когда я запускаю этот код, я получаю следующий ответ:
https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=2141+Southview+Ave%2C+Innisfil%2C+ON+L9S+1H4&destinations=190+Bayview+Dr%2C+Barrie%2C+ON+L5N+9B4&traffic_model=best_guess&departure_time=1479523235&key=API_KEY
{
"destination_addresses" : [],
"origin_addresses" : [],
"rows" : [],
"status" : "INVALID_REQUEST"}
Но вот ловушка, когда я копирую URL из приведенного выше ответа и вставляю его в браузер, он работает. Я получаю следующий ответ:
{
"destination_addresses" : [ "190 Bayview Dr, Barrie, ON L4N 2Z4, Canada" ],
"origin_addresses" : [ "2141 Southview Ave, Innisfil, ON L9S 1H4, Canada" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "9.0 km",
"value" : 9027
},
"duration" : {
"text" : "13 mins",
"value" : 758
},
"duration_in_traffic" : {
"text" : "12 mins",
"value" : 720
},
"status" : "OK"}
]
}
],
"status" : "OK"}
Кто-нибудь сталкивался с подобной проблемой и знает, почему это так? Я попытался изменить URL-адрес, но не имеет смысла, что он работает в браузере, а не в file_get_contents. Я также попробовал cURL и получил тот же ответ. Спасибо за любую помощь, которую вы оказываете.
Задача ещё не решена.
Других решений пока нет …