2.8 KiB
3.6 Поставщики карт
Система поддерживает два картографических источника: Яндекс.Карты и Google Maps. Соответствующие модули реализованы в файлах yandex_map.py и google_map.py.
\section{Яндекс.Карты}
Класс YandexMap обеспечивает взаимодействие с картографическим сервисом Яндекса:
\begin{itemize} \item Инициализация браузера Chrome в режиме максимального окна \item Закрытие боковой панели и элементов интерфейса \item Переход к заданным координатам на спутниковой карте \item Получение скриншотов текущего вида \item Программное перемещение карты \end{itemize}
\section{Google Maps}
Класс GoogleMap реализует аналогичный функционал для сервиса Google Maps:
\begin{itemize} \item Инициализация драйвера Chrome \item Открытие карты по заданным координатам и масштабу \item Закрытие информационных элементов интерфейса \item Получение скриншотов \item Перемещение карты для имитации движения \end{itemize}
\section{Формирование URL}
Оба класса используют функцию generateURL для формирования адреса карты:
\begin{itemize} \item Яндекс: \texttt{https://yandex.ru/maps/.../?l=sat&ll=lat,lon&z=zoom} \item Google: \texttt{https://www.google.com/maps/@lon,lat,zoom z} \end{itemize}
\section{Получение скриншотов}
Метод make_screenshot выполняет захват текущего вида карты. Для этого:
\begin{enumerate} \item Выполняется JavaScript-запрос для скрытия динамических элементов \item С помощью Pillow формируется изображение из видимой области браузера \item Изображение возвращается в формате PIL.Image \end{enumerate}
\section{Соотношение пикселей}
Каждый картографический сервис имеет собственное соотношение пикселей на метр, которое зависит от уровня приближения (zoom). Эти коэффициенты определяются константами в файле constants.py.