Как использовать Leaflet оффлайн?

Хочу чтобы скрипт работал без интернета на базе карт Google Maps, Яндекс.карты или OpenStreetMaps. Как это реализовать? Как скачать? Как прописать ссылку на скачанные карты в скрипте?
Спасибо!
  • Вопрос задан
  • 13629 просмотров
Решения вопроса 1
@ittim
Можно реализовать с картой OpenStreetMaps.
1. Скачать нужный фрагмент карты extract.bbbike.org в формате OSM.
2. Нужно отрендерить тайлы. Вот список приложений для рендеринга wiki.openstreetmap.org/wiki/RU:Rendering. Простой в использовании maperitive.net/.
3.На локальном вэб-сервере разместить папку с тайлами.
4. ссылка в Leaflet http://localhost/Tiles/{z}/{x}/{y}.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ssssergey Автор вопроса
В общем, благодаря ответу ittim мне удалось дойти до 3 пункта из его списка.
Просто хочется поподробнее раскрыть первые два пункта для тех кому интересно.
1. С сайта extract.bbbike.org скачивается нужный вам фрагмент карты. Там в поле:
- "Format" выбираете "OSM XML 7z";
- "Your email adress" вписываете ваш адрес почты, на которую они пришлют фрагмент карты;
- "Name of area to extract" - как-нибудь обзовите фрагмент;
Потом идет кнопка Extract. Ее пока пропускаете. А нажимаете на кнопку поменьше и пониже "here". Ну естественно перед этим нужно навести карту справа на необходимое место. Если промахнулись ничего страшного. Нажимаете на появившуюся кнопку "Select a different area" и все возвращается в исходное положение. После того как вы убедились, что оранжевый прямоугольник покрывает необходимый участок нажимаете "Extract". Все. В течение получаса на вашу почту придет ссылка, по которой вы скачаете свой фрагмент.
2. Скаченные фрагмент это не картинка, а XML данные, которые нужно преобразовать в картинки (tiles). Для этого с сайта maperitive.net скачиваете программку. Запускаете. Заходите File->Open map sources, выбираете скачанный XML фрагмент (предварительно распакованный). Программка задумается ненадолго (в зависимости от размера файла). Заходите в Tools->Generate Tiles. После этого программка будет думать еще дольше. По завершению в папке Tiles внутри программной папки появятся те самые тайлы в формате png.
3. Оказалось, что сервер можно не поднимать. Просто прописываете ссылку на папку с тайлами. Например: d:/Tiles//{z}/{x}/{y}.png

P.S. Оказалось можно пропускать 1 пункт и делать тайлы прямо из программки Maperitive.
P.P.S. Программка Maperitive оказалась непростой. В нижней части имеется поле командной строки, которое позволяет осуществлять гибкую настройку. Например, по умолчанию осуществляется рендеринг пяти уровней зума, но если написать в командной строке generate-tiles minzoom=8 maxzoom=18, то можно зум рендерится с 8 до 18 уровней.

P.P.P.S. Оказалось, что 1 пункт (т.е. локальная подгрузка стороннего источника карт) все-таки необходим, если вы хотите видоизменять карту, применяя так называемые Правила (Rules). Встроенная карта на эти изменения не реагирует. В частности, я пытался сделать так, чтобы названия иностранных населенных пунктов (ну например турецких) отображались на русском или английском, но не на турецком. Или чтобы аэропорты были подписаны. Так вот это удалось сделать только подгрузив карты из локального источника.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы