Initial import: WebAisMap
Closes TG-4 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
# Работа в офлайн режиме
|
||||
|
||||
Приложение настроено для работы без подключения к интернету. Все необходимые файлы (библиотека Leaflet и тайлы карты) хранятся локально.
|
||||
|
||||
## Структура файлов
|
||||
|
||||
- `static/leaflet/` - библиотека Leaflet (CSS, JS и изображения)
|
||||
- `static/xterm/` - терминал в браузере (вкладка «Консоль»), без CDN
|
||||
(не удаляйте комментарий `sourceMappingURL` через `splitlines()` в Python — в `xterm.min.js` есть символ U+0085, из‑за него строка «ломается» и появляется SyntaxError в браузере)
|
||||
- `static/tiles/` - тайлы карты OpenStreetMap
|
||||
|
||||
## Скачивание тайлов карты
|
||||
|
||||
Для работы в офлайн режиме необходимо предварительно скачать тайлы карты для нужной области.
|
||||
|
||||
### Использование скрипта download_tiles.py
|
||||
|
||||
```bash
|
||||
# Скачать тайлы для области Москвы (по умолчанию)
|
||||
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)
|
||||
|
||||
### Примеры использования
|
||||
|
||||
```bash
|
||||
# Москва и окрестности, уровни 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 для нужной области.
|
||||
|
||||
## Запуск приложения
|
||||
|
||||
После скачивания тайлов приложение будет работать полностью офлайн:
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
Приложение будет доступно по адресу `http://localhost:8000`
|
||||
|
||||
## Примечания
|
||||
|
||||
- Если тайл не найден локально, карта покажет пустое место (серый квадрат)
|
||||
- Для полного покрытия области рекомендуется скачать тайлы заранее
|
||||
- Размер тайлов зависит от области и уровней масштабирования (может быть от нескольких МБ до нескольких ГБ)
|
||||
|
||||
## Политика использования тайлов OpenStreetMap
|
||||
|
||||
Скрипт настроен для соблюдения [политики использования тайлов OpenStreetMap](https://operations.osmfoundation.org/policies/tiles/):
|
||||
|
||||
- ✅ Используется корректный User-Agent в заголовках запросов
|
||||
- ✅ Соблюдается минимальная задержка 1 секунда между запросами
|
||||
- ✅ Обрабатываются ошибки 429 (Too Many Requests) с автоматическим увеличением задержки
|
||||
- ✅ Используются разные поддомены для распределения нагрузки
|
||||
|
||||
**Важно**: Если вы получаете ошибку "Access blocked", убедитесь, что:
|
||||
1. Используется задержка не менее 1 секунды (`--delay 1.0` или больше)
|
||||
2. Не запускаете несколько экземпляров скрипта одновременно
|
||||
3. Не скачиваете слишком много тайлов за короткое время
|
||||
|
||||
Для больших областей рекомендуется:
|
||||
- Использовать задержку 1.5-2 секунды: `--delay 1.5`
|
||||
- Скачивать тайлы в несколько этапов (разные уровни масштабирования отдельно)
|
||||
- Делать перерывы между сессиями скачивания
|
||||
|
||||
Reference in New Issue
Block a user