Files
WebAisMap/README_OFFLINE.md
2026-05-04 08:06:34 +03:00

6.0 KiB

Работа в офлайн режиме

Приложение настроено для работы без подключения к интернету. Все необходимые файлы (библиотека Leaflet и тайлы карты) хранятся локально.

Структура файлов

  • static/leaflet/ - библиотека Leaflet (CSS, JS и изображения)
  • static/xterm/ - терминал в браузере (вкладка «Консоль»), без CDN
    (не удаляйте комментарий sourceMappingURL через splitlines() в Python — в xterm.min.js есть символ U+0085, из‑за него строка «ломается» и появляется SyntaxError в браузере)
  • static/tiles/ - тайлы карты OpenStreetMap

Скачивание тайлов карты

Для работы в офлайн режиме необходимо предварительно скачать тайлы карты для нужной области.

Использование скрипта download_tiles.py

# Скачать тайлы для области Москвы (по умолчанию)
python download_tiles.py

# Скачать тайлы для конкретной области
python download_tiles.py --bounds 55.5,37.5,56.0,38.0 --min-zoom 5 --max-zoom 12

# Скачать тайлы вокруг центра с радиусом
python download_tiles.py --center 55.75,37.62,50 --min-zoom 5 --max-zoom 12

# Указать выходную папку
python download_tiles.py --output static/tiles --min-zoom 5 --max-zoom 12

Параметры скрипта

  • --min-zoom - минимальный уровень масштабирования (по умолчанию: 5)
  • --max-zoom - максимальный уровень масштабирования (по умолчанию: 12)
  • --bounds - границы области в формате: min_lat,min_lon,max_lat,max_lon
  • --center - центр области и радиус в формате: lat,lon,radius_km
  • --output - выходная папка для тайлов (по умолчанию: static/tiles)
  • --delay - задержка между запросами в секундах (по умолчанию: 1.0, минимум рекомендуется 1.0)

Примеры использования

# Москва и окрестности, уровни 5-12
python download_tiles.py --bounds 55.5,37.3,56.0,37.9 --min-zoom 5 --max-zoom 12

# Санкт-Петербург, уровни 5-14
python download_tiles.py --center 59.934,30.306,30 --min-zoom 5 --max-zoom 14

# Большая область (например, весь регион), уровни 3-10
python download_tiles.py --bounds 50.0,20.0,60.0,40.0 --min-zoom 3 --max-zoom 10

Рекомендации по уровням масштабирования

  • Уровни 0-5: Весь мир / континенты (очень мало тайлов, быстро скачивается)
  • Уровни 5-10: Регионы / крупные города (умеренное количество тайлов)
  • Уровни 10-14: Города / районы (много тайлов, может занять время)
  • Уровни 14-19: Детальные карты (очень много тайлов, долгое скачивание)

Важно: Чем больше уровней масштабирования и область, тем больше тайлов нужно скачать. Для начала рекомендуется использовать уровни 5-12 для нужной области.

Запуск приложения

После скачивания тайлов приложение будет работать полностью офлайн:

python main.py

Приложение будет доступно по адресу http://localhost:8000

Примечания

  • Если тайл не найден локально, карта покажет пустое место (серый квадрат)
  • Для полного покрытия области рекомендуется скачать тайлы заранее
  • Размер тайлов зависит от области и уровней масштабирования (может быть от нескольких МБ до нескольких ГБ)

Политика использования тайлов OpenStreetMap

Скрипт настроен для соблюдения политики использования тайлов OpenStreetMap:

  • Используется корректный User-Agent в заголовках запросов
  • Соблюдается минимальная задержка 1 секунда между запросами
  • Обрабатываются ошибки 429 (Too Many Requests) с автоматическим увеличением задержки
  • Используются разные поддомены для распределения нагрузки

Важно: Если вы получаете ошибку "Access blocked", убедитесь, что:

  1. Используется задержка не менее 1 секунды (--delay 1.0 или больше)
  2. Не запускаете несколько экземпляров скрипта одновременно
  3. Не скачиваете слишком много тайлов за короткое время

Для больших областей рекомендуется:

  • Использовать задержку 1.5-2 секунды: --delay 1.5
  • Скачивать тайлы в несколько этапов (разные уровни масштабирования отдельно)
  • Делать перерывы между сессиями скачивания