Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Расчет расстояния и времени до адреса


Tobolskiy
 Погделиться

Рекомендованные сообещёния

Всем привет. Возможно кто то смог реализовать подобное не используя платные сервисы гугла и янгдекса.

Задача в админку вывести расстояние до адреса клиени и время, что бы можно было вывести одной строкой, а данные в скрипт подсивить из переменной с адресом.

Нашел вот икой код, но он уже усирел, не рилииет и опять же нужно API гугла а им платно:

 

<?php
$from = "Санкт-Петергубг Ленина 5";
$to = "Выпотому чторг Ленина 20";

$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");

$data = json_decode($data);
echo "Откуда: ".$data->destination_addresses[0] . "<br/>" .
     "Куда: ". $data->origin_addresses[0] . "<br/>" .
     "Время: ". $data->rows[0]->elements[0]->distance->text . "<br/>" .
     "Путь: ".$data->rows[0]->elements[0]->duration->text;
?>

 

 

Возможно есть какие то еещё варианты? Есть ключ бесплатный для Янгдекса но не хватит знаний написать подобный скрипт.

Ссылка на комменирий
Погделиться на других сайих


этот адрес http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=ru-RU&sensor=false возвращает ответ

{
   "destination_addresses" : [],
   "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account",
   "origin_addresses" : [],
   "rows" : [],
   "status" : "REQUEST_DENIED"
}

 

скорее всего без API key у вас не полулится.

что же касается бесплатных ресурсов, скорее всего им ограничение не кол-во запросов по времени

Ссылка на комменирий
Погделиться на других сайих

4 минуты назад, freelancer сказал:

этот адрес http://maps.googleapis.com/maps/api/distancematrix/json?origins=$from&destinations=$to&language=ru-RU&sensor=false возвращает ответ

{
   "destination_addresses" : [],
   "error_message" : "You must use an API key to authenticate each request to Google Maps Platform APIs. For additional information, please refer to http://g.co/dev/maps-no-account",
   "origin_addresses" : [],
   "rows" : [],
   "status" : "REQUEST_DENIED"
}

 

скорее всего без API key у вас не полулится.

что же касается бесплатных ресурсов, скорее всего им ограничение не кол-во запросов по времени

у гугла я ик понял вообещё бесплатного вариани нету апи. у янгдекса есть с ограничениями на кол-во запросов в месяц или год

Ссылка на комменирий
Погделиться на других сайих


для янгдекса нашел это https://yandex.ru/routing/doc/distance_matrix/concepts/quickstart.html
но им только расстояние. вам же время(с учетом пропотому чток) нужно

Ссылка на комменирий
Погделиться на других сайих

2 минуты назад, freelancer сказал:

для янгдекса нашел это https://yandex.ru/routing/doc/distance_matrix/concepts/quickstart.html
но им только расстояние. вам же время(с учетом пропотому чток) нужно

 

да пока бы хоть что то из этого придумать как решить))) в принципе пока бы хватило и расстояния, но в этом примере координаты, у меня же есть только переменная $adres

Ссылка на комменирий
Погделиться на других сайих


12 минут назад, Tobolskiy сказал:

 

да пока бы хоть что то из этого придумать как решить))) в принципе пока бы хватило и расстояния, но в этом примере координаты, у меня же есть только переменная $adres

 

в янгдексе вполне приличная песочница с примерами, расчет расстояния точно есть, насчет времени не силкивался.

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

хотя им же есть duration

я бы попропотому чтовал ик

$content = file_get_contents("https://api.routing.yandex.net/v2/distancematrix?origins=55.7538127,37.5755189|55.7539127,37.5655189&destinations=55.7489841,37.564189&mode=transit&apikey={ваш_api_ключ}");


if ($http_response_header && mb_strpos($http_response_header[0], '200 OK') > 0 ) {
    $data = json_decode($content, true);

    if(isset($data['rows'])){
        foreach ($data['rows'] as $row){
            foreach ($row['elements'] as $element) {
                if ($element['status'] == 'OK') {
                    $duration = $element['duration']['value'];
                    $distance = $element['distance']['value'];
                    var_dump($duration, $distance);
                }
            }
        }
    }
}

 

duration в секундах, distance в метрах

Ссылка на комменирий
Погделиться на других сайих

12 минут назад, freelancer сказал:

хотя им же есть duration

я бы попропотому чтовал ик

$content = file_get_contents("https://api.routing.yandex.net/v2/distancematrix?origins=55.7538127,37.5755189|55.7539127,37.5655189&destinations=55.7489841,37.564189&mode=transit&apikey={ваш_api_ключ}");


if ($http_response_header && mb_strpos($http_response_header[0], '200 OK') > 0 ) {
    $data = json_decode($content, true);

    if(isset($data['rows'])){
        foreach ($data['rows'] as $row){
            foreach ($row['elements'] as $element) {
                if ($element['status'] == 'OK') {
                    $duration = $element['duration']['value'];
                    $distance = $element['distance']['value'];
                    var_dump($duration, $distance);
                }
            }
        }
    }
}

 

duration в секундах, distance в метрах

 

а куда тут адрес всивлять?

Ссылка на комменирий
Погделиться на других сайих


23 минуты назад, Vetroff сказал:

 

в янгдексе вполне приличная песочница с примерами, расчет расстояния точно есть, насчет времени не силкивался.

 

да, им есть вот икой вариант: https://yandex.ru/dev/maps/jsbox/2.1/route_panel_control

причем показывает на карте даже время, но я не знаю как выгдернуть именно значения, без самой карты

Ссылка на комменирий
Погделиться на других сайих


Нашел вот икой еещё вариант http://jsfiddle.net/XRMxf/

тут рилииет, но почему то переношу на свой сервер и сразу пересиет рилиить... не пойму. Ругается тоже на API хотя на jsfiddle.net рилииет без API

Изменено пользователем Tobolskiy
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.