Ошибка при определении расстояния между двумя географическими точками с API Яндекс Карт
Пишу скрипт на Python3 по определению расстояния между двумя географическими точками с использованием API Яндекс Карт (api-maps.yandex.ru). Deep Seek написал следующую функцию для этого:
def calculate_route_distance_old(origin, destination):
"""Рассчитывает маршрут через API маршрутизации Яндекс"""
YANDEX_API_KEY = 'мой-апи-ключ' # Получите ключ на https://developer.tech.yandex.ru/
MKAD_COORDINATES = (55.898947, 37.632971) # Базовая точка МКАД
import requests
url = "https://api-maps.yandex.ru/services/route/2.0/"
params = {
'apikey': YANDEX_API_KEY,
'waypoints': f"{origin[1]},{origin[0]}|{destination[1]},{destination[0]}",
'mode': 'driving'
}
print(f"Работает calculate_route_distance")
try:
response = requests.get(url, params=params)
response.raise_for_status()
data = response.json()
ras = data['route']['distance']
print(f"расстояние по маршруту: {ras}")
return data['route']['distance'] # Расстояние в метрах
except Exception as e:
print(f"Ошибка расчета маршрута: {e}")
return None
Но при запуске получаю следующую ошибку от API:
{"statusCode":400,"error":"Bad Request","message":"Error validate query: child \"lang\" fails because [\"lang\" is required]"}
Мой АПИ ключ - коорректен, лимитов достаточно. Кординаты адресы при помощи него сервис отдает корректно.
Ответы (1 шт):
Все оказалось "проще". Функция построения маршрутов, необходимая для замера расстояния, при помощи API Яндекса просто на данный момент является платной (от 226 000 руб/год). Вот ответ их службы подержки на мой вопрос:`
"Возможность построения маршрутов в JavaScript API 3.0 является платной. Для этого необходимо использовать ключ от API Получения деталей маршрута — с тарифами на него можно ознакомиться на сайте API Яндекс Карт.
Бесплатных тарифов API Маршрутизатора на текущий момент у сервиса нет. Мы рассмотрим возможность построения маршрутов в JS API 3.0 с использованием только ключа этого сервиса, но каких-либо сроков пока обозначить не сможем. До тех пор есть смысл оставаться на прежней версии API.
--
Виктор А Поддержка Яндекса
При этом координаты точки по адресу Яндекс Карты отдают и на бесплатном тарифе при соблюдении его ограничений (до 1000 запросов в сутки и тд). По ним можно расстояние определить приблизительно (по прямой) по формуле Гаверсинуса. Но она дает погрешность до 40 и более процентов.