Google, похоже, указывает, что мне нужно использовать SSL и предоставить ключ для расчета расстояния, поэтому я пытаюсь переделать свою функцию, чтобы приспособиться, но в результате могу получить только 0.URL, показанный с использованием distancematrix, дает правильное значение при запуске в браузере, но я не уверен, как получить результат в PHP.Похоже, что набор данных $ пуст, поэтому что-то не так в вызовах curl.Любые идеи, чтобы получить расстояние и есть ли способ получить ближайшее расстояние, а не самое быстрое?
function compareDistance($inLatitude,$inLongitude,$outLatitude,$outLongitude,$units) {
// If one of my own addresses is entered, return 0
if ($inLatitude != $outLatitude && $inLongitude != $outLongitude) :
$googlekey = "ABCDEFG123456";
$url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=$inLatitude,$outLatitude&destinations=$outLatitude,$outLongitude&key=$googlekey";
// Retrieve the URL contents
$c = curl_init();
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, $url);
$jsonResponse = curl_exec($c);
curl_close($c);
$dataset = json_decode($jsonResponse);
if (!$dataset)
return 0;
if (!isset($dataset->routes[0]->legs[0]->distance->value))
return 0;
// Google API returns meters: multiply by .00062 to get miles
$miles = ($dataset->routes[0]->legs[0]->distance->value * .00062);
// Convert units
if ($units == "K") :
return $miles * 1.609344;
elseif ($units == "N") :
return $miles * 0.8684;
else :
return $miles;
endif;
else:
return 0;
endif;
}
$ jsonResponse выводит:
{ "destination_addresses" : [ "44.405159,-121.2556414" ], "origin_addresses" : [ "38.257061,44.405159" ], "rows" : [ { "elements" : [ { "status" : "ZERO_RESULTS" } ] } ], "status" : "OK" }