Посмотрите, как далеко вы можете проехать за отведенное время, с помощью полигонов Leaflet и TravelTime API.

Мы покажем вам, как рисовать полигоны времени в пути, также известные как изохроны, с помощью простого кода HTML и JavaScript и данных, предоставленных API TravelTime, на карте Leaflet.

В этом примере мы будем использовать геокодер TravelTime API, чтобы получить координаты Белого дома в Вашингтоне, округ Колумбия, а затем отправить эти координаты и параметры поездки в качестве поиска по временной карте обратно в API. Полученные полигональные данные будут отображены на карте Leaflet. В конечном результате вы увидите, до каких районов на карте можно добраться за 60 минут на общественном транспорте. Мы также сможем выбирать из различных видов транспорта, таких как ходьба, езда на велосипеде, общественный транспорт и многое другое.

Фрагменты кода, представленные в этом руководстве, вставляются в интегрированное окно разработки CodePen, где вы можете манипулировать кодом и видеть результат в реальном времени. Чтобы образец заработал и нарисовал изохрону, сначала нужно вставить ключ API в CodePen — Запросите ключ API для API поиска TravelTime, нажав здесь.

Основы

Чтобы создать изохрону, пользователь должен указать параметры поискового запроса API, в том числе:

  • Место отправления или прибытия;
  • Вид транспорта
  • Ограничение времени в пути
  • Время суток

После отправки запроса API TravelTime получает запрос и возвращает ответ в формате JSON. Ответ включает координаты точек. Эти точки показывают границы фигур, достижимых за время прохождения.

Запрос и ответ карты времени API TravelTime

Связь с API работает путем отправки запроса в формате JSON, и API возвращает ответ в формате JSON с данными многоугольника, которые мы увидим в примере кода.

Вот как выглядит запрос API без информации заголовка, более подробная информация о поиске Time Map и его параметрах доступна в Документация API времени в пути.

запрос API

Ответ JSON после успешного запроса API включает координаты. Эти точки показывают границы фигур, достижимых за соответствующее время в пути.

ответ API

Визуализация на карте

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

Изохронный_алгоритм

На изображении выше показано, как этот ответ будет отображаться на карте Leaflet. Это может быть реализовано с использованием любого языка программирования или картографической системы, которую вы предпочитаете. Это самый простой способ сгенерировать запрос и отобразить ответ с помощью JavaScript.

Пишем наш пример кода

Во-первых, нам нужно определить параметры для поиска.

  • Преобразование названия начального местоположения в координаты с помощью геокодера;
  • Введите время отправления в формате ISO.
  • Переведите 1 час времени в пути в секунды, что равно 60 минут х 60 секунд.

Эти значения обычно будут в запросе JSON, в нашем примере мы устанавливаем их как переменные.

Как упоминалось ранее, для выполнения запроса к API TravelTime необходим ключ API, что можно получить здесь. Ключ API добавляется в информацию заголовка запроса API, в переменные APPLICATION_ID и API_KEY. Они необходимы для аутентификации запроса и обычно находятся на стороне сервера вашего приложения.

Переменные

Геокодирование

В качестве начального местоположения мы указали Белый дом, Вашингтон, округ Колумбия, но API принимает только координаты широты и долготы. Чтобы преобразовать адрес в координаты, мы используем TravelTime Geocoder.

Геокодирование

Запрос к API
Теперь, когда у нас есть все необходимое для запроса, мы можем использовать код, который будет генерировать запрос к поиску API Time Map. Формируется JSON offset_search и отправляется в HTTP-запросе.

Отправка запроса

Отрисовка результата

В этом примере мы используем бесплатный Leaflet.js для интерактивной карты и листов карты Mapbox. Переменная mymap задает начальное местоположение карты при загрузке примера кода.

Тайлы карты

Отрисовка самой изохроны обрабатывается этим скриптом.

Рисунок

Чтобы увидеть весь упомянутый код в действии, попробуйте наш CodePen.

КодПен

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *