38 заметок с тегом

javascript

Позднее Ctrl + ↑

MapBBCode Triumphant

Вчера я выложил новый проект в репозиторий MapBBCode. Он изменит сеть, и победит всех. Одной строчкой вы сможете добавить карту на любую — абсолютно любую — страницу. Например, в штосме не было карт, потому что исходники закрыты. Теперь это не проблема.

[map=13]60.35371,29.43958(Внезапно,); 60.35761,29.42963 60.35141,29.4298 60.35141,29.44868 60.35778,29.44885 60.35761,29.42945[/map]

MapBBCode Loader — это небольшой скрипт, который ищет на странице bb-код карты, и если находит, подгружает библиотеки Leaflet и MapBBCode, после чего заменяет все коды картами. Заодно он вешает на специально обозначенную кнопку редактор карты. Другими словами, это замена полноценным плагинам для движков, в которые сложно встроить MapBBCode правильно.

Собственно, если скопировать следующий код в адресную строку (в FF не работает, в IE и хроме нужно дописать «javascript:» руками), отработает загрузчик, и вы увидите карты на открытой странице. Проверить можно на примерах в спецификации bb-кода.

javascript:(function(){document.body.appendChild(document.createElement(’script’)).src=’http:/’+’/osmz.ru/mapbb.plain.js’;})();

Полагаю, теперь ничто не остановит шествие MapBBCode и OSM по интернету. Даже форумные движки с закрытыми исходниками и лень админов. Полная инструкция из пяти простых шагов выложена в репозитории, вместе с исходником.

 10 комментариев   2013   javascript

The best map library you’ll see ALL DAY

Казалось, новую версию Leaflet никто не ждёт: 0.6.4 оказалась достаточно хороша для всех, и едва ли кто-нибудь тут натыкался на её баги. Тем не менее, только что Владимир выпустил Leaflet 0.7. Визуально эту версию не отличить от предыдущей, но программистам она удобнее: например, пропала необходимость подключать отдельный стиль для Internet Explorer. И появился оверзум: если у какого-то слоя недостаточно уровней масштаба, не беда. В полном списке изменений, неожиданно, нового лишь слегка меньше, чем багфиксов, а в планах на версию 0.8 фичи отсутствуют: только рефакторинг, документация и рефакторинг.

 1 комментарий   2013   javascript

Карты для всех, даром

На форуме «Проекты Петербурга» обсуждают, в основном, дорожное строительство. Где ремонтируют, где перекрыли, где прокладывают (или уже отменили) новое шоссе. С локализацией темы обсуждения всегда проблемы: «53-81 км — это где?» Пять лет назад нормальным было дать ссылку на карты яндекса или вставить картинку, но XXI век на дворе, лифлету недавно три года исполнилось, почему нельзя просто вставить карту? Почему на местном велосипедном форуме дают ссылки на монструозный gpsies, а марафонщики до сих пор скриншотят пираченный OziExplorer?

Будучи программистом, я постоянно чувствовал, что вся эта дремучесть технологий — моя вина, но только месяц назад взялся за решение задачи. Несмотря на комментарий к коммиту от 1 октября «almost final», и через три дня — «вероятно, последний коммит», разработка идёт до сих пор, но помня об изречении, что дела нельзя закончить, можно лишь прекратить, сегодня я объявляю о выходе версии 1.0 библиотеки MapBBCode: элементарного способа встроить рисование и отображение карт во что угодно.

Основой встраивания стал bb-код [map]...[/map], внутри которого описываются объекты карты. Это простая строка текста, которую можно скопировать куда угодно или редактировать вручную. Функционально это упрощённый GeoJSON. Небольшая javascript-библиотека превращает его в карту на Leaflet и позволяет править не подбором цифр, а рисуя на карте. Посмотреть на неё в деле можно на сайте проекта. Там же есть ссылки на модули для форумов phpBB: в понедельник «Проекты Петербурга» первыми встроили карты, на очереди — велофорумы. Когда-нибудь, надеюсь, библиотеку встроят в vBulletin, SMF, WordPress и MediaWiki.

Как пример использования библиотеки, родился сайт MapBBCode Share. Идея проста: если хранить строки в базе, получится неплохой сайт для обмена картами, простой и доступный, как pastebin или imgur. А из окошка просмотра кода можно скопировать текст на форум, его поддерживающий (или наоборот). Образ сайта в голове начал потрескивать, когда ГИС-Лаб воспользовался сервисом для планирования картовстречи, выложив ссылку на редактирование в открытый доступ. А затем я добавил импорт и экспорт в десяток форматов, библиотеку кодов (чтобы не нужно было хранить закладки локально) и API. Оказалось, что обмен картами — лишь малая часть открывшихся возможностей.

Теперь можно планировать маршрут поездки вместе с друзьями, расставить маркеры, затем поместить карту на форум, и за день до выезда участники прямо из форума загружают GPX с вейпоинтами. Можно импортировать CSV (алгоритм определения его формата эпичен) и сразу получить HTML без внешних зависимостей. Никаких iframe — в отличие от всех остальных сайтов, MapBBCode Share выдаёт полноценную страницу без ссылок на себя. Загрузка треков, сгенерированных роутером OSRM, быстрое редактирование poly-файлов и неминуемый экспорт в GeoJSON — сайт конкурирует не только с geojson.io и uMap, но даже с JOSM. Безопасность на высоте: логин через OpenID (гуглояндексы подходят), немедленно хэшируется, поэтому даже администратор не знает, кто пользуется сайтом, при этом хэш никогда не покидает сервера, API для фильтрации карт по пользователю нет.

Итог работы — более 200 килобайт кода, за 60 килобайт документации, 7 новых плагинов для Leaflet, всё под максимально свободной лицензией WTFPL. Разработка продолжается, но теперь изменения протоколируются, и автор ответственен за обратную совместимость. Пользуйтесь MapBBCode Share и встраивайте модуль в новые форумы и блоги. Сделаем [map] стандартом, а обмен картами — не более сложным, чем обмен картинками или кодом.

Наш человек в MapBox

Сегодня Том Макрайт в третьей подряд заметке блога MapBox про найм талантливых сотрудников опубликовал фотографию и имя Владимира Агафонкина, автора Leaflet. Как известно, у компании есть своя библиотека MapBox.js (недавно вышла версия 1.4), надстройка над Leaflet с приятными плагинами для работы с сервисами компании. Теперь, с приходом Владимира, они вдвое больше джаваскрипта запасут.

До выхода очередной версии лифлета, если посмотреть на историю, остался где-то месяц. Это ненормально, что признаёт и автор: из-за редких релизов пользователи библиотеки месяцами сидят без исправлений ошибок. Одна из причин откладывания версии 0.7 — список исправлений слишком длинный для новой минорной версии (0.6.5), но короткий для мажорной. Такой принцип теряет смысл: библиотека стабильнее с каждым днём, и скоро наполнение ченджлога затянется на год. Поэтому после выпуска новой версии Владимир планирует ускорить цикл релизов и не ждать «подходящего момента».

Конечно, его вклад в картографические приложения не ограничивается Leaflet: во время работы в Cloudmade Владимир в команде из двух человек писал Mapzen, на то время один из лучших веб-редакторов карты. Редактор ограничений поворотов, до сих пор не превзойдённый по наглядности и удобству, — его рук дело. Проект прожил всего год, и был открыт под GPL v2, но сейчас можно найти только заброшенный порт на странный язык Haxe. Опыт разработки редактора, наверняка, пригодится Владимиру после его неминуемого назначения в группу поддержки iD.

В MapBox странным образом накапливаются гитаристы: Том Макрайт играет в группе Teen Mom, Артём Павленко когда-то выступал с Гариком Сукачёвым, а Владимиру удалённый режим работы позволит не отрываться от своей рок-группы Обійми Дощу, слайдом со ссылкой на невероятно длинные песни которой он заканчивает каждую презентацию Leaflet.

 18 комментариев   2013   javascript   mapbox

Вечно молодой, вечно 0.x

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

В блоге автору традиционно нечем хвастаться: в недавней презентации он видит будущее библиотеки в урезании функциональности. Точнее, в выносе её в библиотеки: так, всё редактирование перекочевало в Leaflet.draw. Узнать новую версию Leaflet можно по слегка несуразным кнопкам масштабирования и отсутствию «Powered by» в правом нижнем углу. Список изменений содержит сотни уничтоженных багов и улучшений API. Когда-то этот файл был для меня бессмысленным набором слов, но стоило использовать библиотеку в нескольких своих проектах (советую взглянуть на фотоальбом), как его пункты стали вызывать реакцию «почему это не сделали раньше». OpenLayers окончательно умер для пользовательской картографии: удастся ли третьей версии вернуть ему актуальность?

 6 комментариев   2013   javascript
Ранее Ctrl + ↓

Мнения, высказанные на этом сайте, отражают точку зрения лично автора сайта и ничью больше: ни его бывших или настоящих работодателей, ни семьи и знакомых.