Я пытаюсь получить расстояние между двумя местоположениями через API Карт Google, используя приведенный ниже PHP-скрипт, который, по-видимому, работает (их размещенный тестовый URL работает, добавляется ниже), но когда я использую код, который они предоставляют на моем собственном сервере, t, похоже, ничего не делает … PHP работает очень хорошо, кстати, и, похоже, он не делает ничего смешного, что потребует от меня что-то включить в моем ini-файле.
Я не уверен, в чем проблема … был весь этот день.
Есть идеи? Может, это мой .ini?
Я не уверен, что мне здесь не хватает. Я использую общий хост, но это не должно меняться. Он должен технически работать так, как есть, так или иначе, поэтому я здесь – мне нужно некоторое понимание.
Веб-сайт с исходным кодом: http://www.codexworld.com/distance-between-two-addresses-google-maps-api-php/#comment-24117
Их демо-версия: http://demos.codexworld.com/distance-between-two-addresses-google-maps-api-php/
Мой полный тестовый код:
<?php /** * * Author: CodexWorld * Function Name: getDistance() * $addressFrom => From address. * $addressTo => To address. * $unit => Unit type. * **/ function getDistance($addressFrom, $addressTo, $unit){ //Change address format $formattedAddrFrom = str_replace(' ','+',$addressFrom); $formattedAddrTo = str_replace(' ','+',$addressTo); //Send request and receive json data $geocodeFrom = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrFrom.'&sensor=false'); $outputFrom = json_decode($geocodeFrom); $geocodeTo = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrTo.'&sensor=false'); $outputTo = json_decode($geocodeTo); //Get latitude and longitude from geo data $latitudeFrom = $outputFrom->results[0]->geometry->location->lat; $longitudeFrom = $outputFrom->results[0]->geometry->location->lng; $latitudeTo = $outputTo->results[0]->geometry->location->lat; $longitudeTo = $outputTo->results[0]->geometry->location->lng; //Calculate distance from latitude and longitude $theta = $longitudeFrom - $longitudeTo; $dist = sin(deg2rad($latitudeFrom)) * sin(deg2rad($latitudeTo)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($latitudeTo)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344).' km'; } else if ($unit == "N") { return ($miles * 0.8684).' nm'; } else { return $miles.' mi'; } } if (!empty($_POST['addrFrom']) && !empty($_POST['addrTo'])) { $addressFrom = htmlspecialchars($_POST['addrFrom']); $addressTo = htmlspecialchars($_POST['addrTo']); $distance = getDistance($addressFrom, $addressTo, "K"); $success = true; } ?> <!DOCTYPE html> <html> <head></head> <body> <form method="post"> <p class="distance"><span>Distance:<?php if ($success == true) { echo ' ' . $distance; } ?></span> </p> <p><label>Address From</label><input type="text" name="addrFrom" value=""></p> <p><label>Address To</label><input type="text" name="addrTo" value=""></p> <p><input type="submit" name="submit" value="Calculate Distance"></p> </form> </body> </html>
Попробуйте это – немного изменили ваш способ сделать это ..:
<?php /** * Author: CodexWorld * Function Name: getDistance() * $addressFrom => From address. * $addressTo => To address. * $unit => Unit type. * **/ function getDistance($addressFrom, $addressTo, $unit){ //Change address format $formattedAddrFrom = str_replace(' ','+',$addressFrom); $formattedAddrTo = str_replace(' ','+',$addressTo); //Send request and receive json data $geocodeFrom = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrFrom.'&sensor=false'); $outputFrom = json_decode($geocodeFrom); $geocodeTo = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrTo.'&sensor=false'); $outputTo = json_decode($geocodeTo); //Get latitude and longitude from geo data $latitudeFrom = $outputFrom->results[0]->geometry->location->lat; $longitudeFrom = $outputFrom->results[0]->geometry->location->lng; $latitudeTo = $outputTo->results[0]->geometry->location->lat; $longitudeTo = $outputTo->results[0]->geometry->location->lng; //Calculate distance from latitude and longitude $theta = $longitudeFrom - $longitudeTo; $dist = sin(deg2rad($latitudeFrom)) * sin(deg2rad($latitudeTo)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($latitudeTo)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344).' km'; } else if ($unit == "N") { return ($miles * 0.8684).' nm'; } else { return $miles.' mi'; } } if (isset($_POST['submit'])) { $addressFrom = htmlspecialchars($_POST['addrFrom']); $addressTo = htmlspecialchars($_POST['addrTo']); $distance = getDistance($addressFrom, $addressTo, "K"); echo $distance; } ?> <!DOCTYPE html> <html> <head></head> <body> <form method="post"> <p><label>Address From</label><input type="text" name="addrFrom" value=""></p> <p><label>Address To</label><input type="text" name="addrTo" value=""></p> <p><input type="submit" name="submit" value="Calculate Distance"></p> </form> </body> </html>