Рано или поздно, у вас может возникнуть необходимость получить расстояние в киломметрах между несколькими точками. Раньше для решения подобных задач, я использовал яндекс api, но в один прекрасный момент яндекс стал блокировать меня, чтобы убрать блокировку, он предлагал использовать ключ, используя который придется соблюдать существенные ограничения.
Поэтому для решения данной проблемы я обратился к гуглу. Гугл дает бесплатный функционал в рамках 200 с чем то баксов, т.е. если ваши запросы к google api не превышают этой суммы, то вы можете использовать этот функционал бесплатно. Запросы вы можете выполнять по идее на любом удобном для вас языке программирования, у меня это php.
Приведу пример кода php, который позволяет получить расстояние маршрута в котором есть четыре точки. Ниже кода я распишу подробно, как работает этот код.
function fetchUrl($url, $postFields = array()){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if(!empty($postFields)) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); } $response = array(); $response['html'] = curl_exec($ch); $response['err'] = curl_errno($ch); $response['errmsg'] = curl_error($ch); $response['header'] = curl_getinfo($ch); curl_close($ch); return $response; } $start = urlencode("Воронеж Новосибирская 13"); $dop = urlencode("via:Воронеж Ленинский 1|via:Воронеж Перхоровича 5"); $end = urlencode("Воронеж Московский проспект 82"); $googleMaps = fetchUrl("https://maps.googleapis.com/maps/api/directions/json?origin=".$start."&destination=".$end."&waypoints=".$dop."&key=Ваш ключ&language=ru"); $json = json_decode($googleMaps["html"], true); print_r($json);
Функция fetchUrl выполняет запрос к сайту. Переменная $start - это начальная точка. Переменная $dop - это промежуточные точки. Обратите внимание, что вначале добавляется via:, а между промежуточноми точками стоит знак |. Переменная $end - это конечная точка. В $json будет массив с данными в котором можно найти информацию по движению по этим точкам, информация о километраже содержится тут - $json["routes"][0]["legs"][0]["distance"]
В заключении скажу, что не стоит доверять на 100% доверять данным, которые вы получаете от google api, как показал мой опыт, некоторые точки гугл почему-то не определяет и возвращает пустой результат.