Как получить дальность в км?

Рейтинг: -1Ответов: 2Опубликовано: 18.05.2023

нашел код на php, для получения дальности в км, с сохранением начальной точки + суммированием предыдущих км, но код не пашет API ключ вставил, увидел что api вроде как обновился, попробовал обновить код, чот не вышло, тыкните пж чо не так то?

session_start();
 
$distance = 0;
 
if (isset($_POST['submit'])) {
    $origin = $_POST['origin'];
    $destination = $_POST['destination'];
    $mode = 'driving';
    $url = 'https://api-maps.yandex.ru/services/route/2.0/route.json?' . http_build_query([
            'origin' => $origin,
            'destination' => $destination,
            'mode' => $mode,
            'apikey' => 'ваш_ключ_API'
        ]);
 
    // Отправляем запрос и получаем ответ
    $response = file_get_contents($url);
    $data = json_decode($response, true);
 
    // Получаем дальность километража из ответа API
    $distance += $data['route']['distance'];
 
    $_SESSION['origin'] = $origin;
}
 
if (isset($_POST['reset'])) {
    $distance = 0;
}
 
if (isset($_SESSION['origin'])) {
    $origin = $_SESSION['origin'];
} else {
    $origin = 'Москва';
}
 
?>
 
<form method="post">
    <label for="origin">Откуда:</label>
    <input type="text" name="origin" id="origin" value="<?php echo $origin; ?>"><br>
 
    <label for="destination">Куда:</label>
    <input type="text" name="destination" id="destination"><br>
 
    <input type="submit" name="submit" value="Рассчитать расстояние">
    <input type="submit" name="reset" value="Обнулить расстояние">
</form>
 
<?php
echo 'Дальность километража от ' . $origin . ' до ' . $destination . ': ' . $distance . ' км';
?>``` 

Ответы

▲ 0
...
// Отправляем запрос и получаем ответ
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
...
▲ 0

Для работы без карты и нормального JS Яндекс сделал Матрицу расстояний с краткими и понятными ответами, включающими дистанцию.

А работа с JS кодом, которую вы ведёте, получающим нужную вам дистанцию из маршрута на карте, требует отображения самой карты. А с ней в песочнице уже есть готовый пример отображения расстояния.

Добавлю также, что ПС Яндекса запрещает прямые http-запросы в сервис, минуя JS API Яндекс Карт. Разработка же коммерческих решений, которые в любой момент за нарушение условий сервиса могут сломаться – плохая практика.