Intereting Posts
Сделайте строчку в нижнем регистре, куда ее поместить Php: Предупреждение: заголовок может содержать не более одного заголовка, а новая строка обнаружена в Проблема с простым фильтром профанации PHP WordPress: изменить подменю администратора Формирование заказа скрипта из метода registerScript в Yii конвертировать текст в изображение в php Удостоверение формы Symfony 2.3 с помощью handleRequest безумно медленное Разбор отдельного массива PHP в Javascript Не удается получить предыдущий месяц из DateTime в PHP. Является ли это (довольно большой) ошибкой? как получить дату на прошлой неделе (вторник или любой другой день) в php? Twitter Распечатать неправильное имя экрана Как работает «почта» PHP? таблицы сопоставления дампов php Пользовательские сообщения с одним и тем же слизком. Перенаправление на неправильный пост с одинаковым слизнем Выходной массив PHP в неупорядоченный список

Расстояние от точки A до B с помощью Google Maps, PHP и MySQL

Кто-нибудь может помочь. Мне просто нужен простой скрипт. У меня есть форма, размещенная на другой странице. два поля формы:

fromaddress и toaddress

Единственное, что мне нужно – это сценарий, который показывает мне расстояние в км и время, которое требуется с помощью карт Google. Я нашел десятки сценариев, но я не могу заставить его работать. Карта уже существует с этим кодом, который, кажется, работает идеально.

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key=AIzaSyDdDwV6_l5n2bS3gM6NBCla3RFLtIFc_HE&sensor=false"></script><script type="text/javascript"> var directionDisplay; var directionsService = new google.maps.DirectionsService(); var map; function initialize() { directionsDisplay = new google.maps.DirectionsRenderer(); var myOptions = { zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP, } map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); directionsDisplay.setMap(map); var start = "<? echo $_POST[fromaddress]; ?>"; var end = "<? echo $_POST[toaddress]; ?>"; var request = { origin:start, destination:end, travelMode: google.maps.DirectionsTravelMode.DRIVING }; directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); } }); } $(document).ready(function(){ initialize(); }); </script> 

Но как мне отображать расстояние и время. Лучший вариант – получить его в значении php, например:

 $distance = some-code; $time = some-code-too; 

Большое спасибо за помощь.

Solutions Collecting From Web of "Расстояние от точки A до B с помощью Google Maps, PHP и MySQL"

Для этого вам нужно использовать разные API. Прежде всего, не используйте JS, а PHP, вот фрагмент кода, который должен работать для вас;)

 $from = "Więckowskiego 72, Łódź"; $to = "Gazowa 1, Łódź"; $from = urlencode($from); $to = urlencode($to); $data = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=en-EN&sensor=false"); $data = json_decode($data); $time = 0; $distance = 0; foreach($data->rows[0]->elements as $road) { $time += $road->duration->value; $distance += $road->distance->value; } echo "To: ".$data->destination_addresses[0]; echo "<br/>"; echo "From: ".$data->origin_addresses[0]; echo "<br/>"; echo "Time: ".$time." seconds"; echo "<br/>"; echo "Distance: ".$distance." meters"; 

Вывод:

 To: Gazowa 1, 91-076 Łódź, Poland From: Więckowskiego 72, Łódź, Poland Time: 206 seconds Distance: 1488 meters 

Вы можете рассчитать полную продолжительность маршрута и расстояние, объединив все ноги:

  function computeTotals(result) { var totalDist = 0; var totalTime = 0; var myroute = result.routes[0]; for (i = 0; i < myroute.legs.length; i++) { totalDist += myroute.legs[i].distance.value; totalTime += myroute.legs[i].duration.value; } totalDist = totalDist / 1000. document.getElementById("total").innerHTML = "total distance="+totalDist.toFixed(2) + " km ("+(totalDist*0.621371).toFixed(2)+" miles), time="+totalTime+" seconds"; } 

назовите это так:

  directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) { directionsDisplay.setDirections(response); computeTotals(response); } }); 

рабочий пример