<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>ШТОСМ: заметки с тегом javascript</title>
<link>https://shtosm.ru/tags/javascript/</link>
<description>ШТОСМ</description>
<author>Илья Зверев</author>
<language>ru</language>
<generator>E2 (v3576; Aegea)</generator>

<itunes:owner>
<itunes:name>Илья Зверев</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>ШТОСМ</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Самый быстрый редактор</title>
<guid isPermaLink="false">1554</guid>
<link>https://shtosm.ru/all/samy-bystry-redaktor/</link>
<pubDate>Thu, 21 Jul 2022 13:44:39 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/samy-bystry-redaktor/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/osmtags-shtosm.jpg" width="1400" height="600" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Сегодня я рад показать свой новый редактор OpenStreetMap. Опять. Кажется, этот блог превращается в поток анонсов моих проектов, а новости уходят в &lt;a href="https://twitter.com/shtosm"&gt;твитер&lt;/a&gt; и &lt;a href="https://t.me/shtosm"&gt;телеграм&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;После &lt;a href="https://www.youtube.com/watch?v=yfiAND-bf4c"&gt;выступления на State of the Map&lt;/a&gt; меня спрашивали, а где найти эту волшебную кнопку «Edit Tags» на главной проекта, чтобы быстренько поправить теги? Конечно, такой кнопки там нет: я лишь сварганил панель в консоли разработчика Firefox. Но было бы круто.&lt;/p&gt;
&lt;p&gt;Так что теперь кнопка появилась. Но не на сайте: её добавляют расширения для браузеров. Установите своё из каталога: &lt;a href="https://addons.mozilla.org/ru/firefox/addon/openstreetmap-tags-editor/"&gt;для Firefox&lt;/a&gt;, &lt;a href="https://chrome.google.com/webstore/detail/openstreetmap-tags-editor/gcbcbndjajojkneicbfdaegcghgbdjnj"&gt;для Chrome&lt;/a&gt;. После этого зайдите на страницу любого объекта в OSM и узрите ссылку.&lt;/p&gt;
&lt;p&gt;Очевидно, это расширение — заплатка, которая использует незадокументированные функции и дыры в аутентификации. Например, вам нужно сначала открыть редактор iD, чтобы это расширение заработало. Иногда страницу нужно обновить, чтобы кнопка «Edit Tags» появилась. Расширение может сломаться в любой момент из-за изменений в коде сайта.&lt;/p&gt;
&lt;p&gt;Можно ли сделать этот редактор функцией сайта? Конечно — это почти тривиально, пара часов разработки. Но я устал биться со смотрителями &lt;a href="https://github.com/openstreetmap/openstreetmap-website/pulls"&gt;openstreetmap-website&lt;/a&gt;, так что оставлю согласование и программирование кому-нибудь другому.&lt;/p&gt;
</description>
</item>

<item>
<title>Прощай, Mapbox, и удачи</title>
<guid isPermaLink="false">1534</guid>
<link>https://shtosm.ru/all/gl-js-v2/</link>
<pubDate>Thu, 10 Dec 2020 20:28:46 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/gl-js-v2/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/reactmapgl_part.jpg" width="1200" height="514" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Иллюстрация с сайта библиотеки &lt;a href="https://urbica.github.io/react-map-gl/"&gt;react-map-gl&lt;/a&gt; © Urbica&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Mapbox вчера &lt;a href="https://www.mapbox.com/blog/mapbox-gl-js-v2-3d-maps-camera-api-sky-api-launch"&gt;выпустил&lt;/a&gt; вторую версию своей библиотеки для векторных карт GL JS. С одной стороны, выглядит круто: трёхмерный ландшафт, небо, свободная камера, и всё стало в полтора раза быстрее. С другой — и это всколыхнуло твитер — новая версия &lt;a href="https://github.com/mapbox/mapbox-gl-js/blob/main/CHANGELOG.md#200"&gt;выбросила&lt;/a&gt; открытую лицензию BSD, и каждое использование библиотеки теперь идёт через кассу. Код можно смотреть, но нельзя копировать.&lt;/p&gt;
&lt;p&gt;Последнюю свободную версию Mapbox GL JS 1.13 немедленно форкнули тысячу раз. Главной ветвью будет &lt;a href="https://github.com/MapLibre/maplibre-gl-js"&gt;MapLibre GL&lt;/a&gt;, которая объединила Юру Астрахана из Elastic, Klokan Tech, Stadia Maps, MapTiler, Where Group и других. Благодаря Люку из Stadia, мы избежали раздробления сообщества, собрали руководящую группу и даже набросали &lt;a href="https://docs.google.com/document/d/1UB8VJ6_vMD9Zxfem7cunwa_G-hXo_ZRY1IeF5iGlh4w/view"&gt;меморандум&lt;/a&gt;. Самое время переименовать зависимости в модулях npm и следить за новым проектом.&lt;/p&gt;
&lt;p&gt;Есть и альтернативы: например, легендарный ГИС-комбайн &lt;a href="https://openlayers.org/"&gt;OpenLayers&lt;/a&gt; (уже шестой версии!) умеет показывать векторные тайлы, правда, без WebGL. В твитере и Hacker News советуют попробовать:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tangrams/tangram"&gt;Tangram&lt;/a&gt; — библиотека от Mapzen, 2D и 3D карты как плагин для Leaflet. То есть, привычный обвес на javascript и управление слоями и отображением через файл yaml. Её дополняет Tangram ES для того же самого, но на C++.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CesiumGS/cesium"&gt;CesiumJS&lt;/a&gt; — гигантская библиотека, чтобы нарисовать глобус с объёмными модельками на нём. Написал бы больше, но их сайт не разрешает доступ из Беларуси.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://deck.gl/"&gt;Deck.gl&lt;/a&gt; — для визуализации огромных наборов данных на карте. От Uber, для которых гео — не главное направление бизнеса, поэтому не закроют.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.harp.gl/"&gt;Harp.gl&lt;/a&gt; — примерно то же от Here, чуть медленнее и неудобнее.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/felixpalmer/procedural-gl-js/"&gt;Procedural GL JS&lt;/a&gt; — простые 3D-карты из рельефа на основе Three.js.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mousebird.github.io/WhirlyGlobe/"&gt;WhirlyGlobe&lt;/a&gt; — на замену закрытого полгода назад Mapbox GL Native, SDK для айфонов и андроидов.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Или забить и вернуться к старому надёжному Leaflet: спасибо Ивану, Андрею и другим, что бесконечно полируют и обновляют эту библиотеку. В отличие от древнего форка от Mapbox, который удобнее для быстрого старта, но мёртв уже полтора года.&lt;/p&gt;
&lt;p&gt;Есть ощущение провала: такую популярную библиотеку спрятали под пейволл. На основе GL JS выстроены многие другие открытые проекты, и их владельцы сейчас чешут репу. Но это ощущение непросто обосновать: люди оперативно организовали поддержку, смерть от смены технологий библиотеке не грозит, всё штатно. Mapbox как будто запустил новую библиотеку B2B, которую все забудут через неделю, как забыли &lt;a href="http://shtosm.ru/all/vision-of-a-future/"&gt;Vision SDK&lt;/a&gt;. Как мы раньше ушли на OpenMapTiles и Kosmtik, так и теперь в этот стек векторных тайлов добавим MapLibre GL, поблагодарив Mapbox за шесть лет поддержки.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/mapbox-opensource.png" width="1400" height="600" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Фрагмент старой страницы сайта Mapbox&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Эту заметку я хотел написать в духе «смотрите, какие Mapbox плохиши» со ссылками на Mapnik, OSRM, TileMill, Studio Classic, iD, GL Native. Но если серьёзно, они закрыли всего ничего, какие-то большие проекты, которые либо перестали быть актуальными, либо имеют хорошие альтернативы. При этом, как замечают Брэндон Лиу и Владимир Агафонкин на &lt;a href="https://news.ycombinator.com/item?id=25349104"&gt;Hacker News&lt;/a&gt;, эти большие проекты построены из десятков, если не сотен, маленьких, которые были и будут открытыми. Именно в них главные инженерные достижения, которые стоит брать и переиспользовать.&lt;/p&gt;
&lt;p&gt;Откуда же ощущение? Может быть, из-за OpenStreetMap? Компания Mapbox начиналась как осмерская и они наняли толпу разработчиков, близких к проекту. Затем они догадались, что в OSM денег нет, а есть в конкуренции сервисами с Google Maps. Закрыли всю непрофильную разработку и стали &lt;i&gt;околоосмерской&lt;/i&gt;: поддерживали пару библиотек, помогали снимками, но не закладывались. Mapbox GL JS был какой-то тонкой, последней связью с сообществом открытой картографии. И теперь её оборвали.&lt;/p&gt;
&lt;p&gt;Компания Mapbox так далеко ушла от нашего проекта, что теперь даже Apple и Facebook искушённее в OpenStreetMap, тратят на него больше денег и получают более впечатляющий и более открытый результат — см., например, &lt;a href="https://daylightmap.org/"&gt;Daylight Map Distribution&lt;/a&gt;. Можно сказать, что эпоха Mapbox как открытой компании вчера завершилась. Остались только щепки из отличных технических библиотечек — ничего особенного, у каждой организации такие летят. Разве что эти чаще касаются картографии.&lt;/p&gt;
&lt;p&gt;Пол Рамси &lt;a href="http://blog.cleverelephant.ca/2020/12/mapbox-morrison.html"&gt;копнул чуть глубже&lt;/a&gt; в это ощущение конца. Вчерашнее событие было предсказуемо почти для каждого: когда в открытом проекте участвуют почти исключительно сотрудники одной и той же компании, ничего хорошего не жди. Однако главный нюанс с Mapbox в том, что эта компания — главный конкурент Google Maps на поле открытых технологий. И если компания больше не может поддерживать былую оперсорсную удаль, то это может быть грустным сигналом насчёт финансирования и торжества проприетарных карт. Пожелаем удачи в борьбе.&lt;/p&gt;
</description>
</item>

<item>
<title>Кнопки не нужны</title>
<guid isPermaLink="false">1489</guid>
<link>https://shtosm.ru/all/knopki-ne-nuzhny/</link>
<pubDate>Thu, 18 Jul 2019 10:50:46 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/knopki-ne-nuzhny/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/paper_map.jpg" width="1400" height="871" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Вчера &lt;a href="https://t.me/shtosm/251"&gt;в телеграме&lt;/a&gt;, развивая мысль про интерактивные карты как признак ленивого дизайнера, я написал, что кнопки плюс-минус — худшее, что есть в картах после переключателя слоёв. Кажется, многие читатели восприняли это как шутку, а другие поделились контекстом, когда эти кнопки не заменить. Например, когда нужно управлять телефоном одной рукой, или демонстрировать карту на проекторе с пультом. Все эти проблемы — лишь следствие того, что мы слишком привыкли к плюсу и минусу.&lt;/p&gt;
&lt;p&gt;Современные интерактивные карты выглядят гораздо проще классических ГИС: нет панели с полусотней слоёв, нет трёх рядов кнопок управления и панели состояния с рядом загадочных чисел. Мы постепенно избавлялись от лишнего, и теперь карту загораживают только строка поиска и несколько кнопок. К сожалению, для хорошего интерфейса недостаточно убрать лишнее: нужно убрать, а затем переизобрести всё остальное.&lt;/p&gt;
&lt;p&gt;Кнопки изменения масштаба появились от свойств тайловой схемы вкупе с линукс-мышлением. Тайлы, из которых состоит карта, устроены просто: на нулевом масштабе один тайл, на первом — четыре (2×2), на втором — шестнадцать (4×4) и так далее, каждый квадратик делится пополам в обоих измерениях. Линукс-мышление требует максимальной конфигурируемости: вдруг пользователь захочет посмотреть на карту конкретно на 13 масштабе, а мы ему не дадим? Поэтому развитие карт идёт увеличением количества уровней масштаба как &lt;a href="http://shtosm.ru/all/evolyuciya-glagne/"&gt;вглубь&lt;/a&gt;, так и вширь, добавлением промежуточных уровней и переходом на векторные тайлы с непрерывным масштабированием. Больше контроля пользователю!&lt;/p&gt;
&lt;p&gt;Работа с интерактивной картой похожа на управление автомобилем с ручной коробкой передач. Ты дёргаешь рычаг при езде, довёл действия до автоматизма и понимаешь, зачем это делаешь и чем одна передача отличается от другой. Когда приходит дизайнер и &lt;a href="https://ilyabirman.ru/meanwhile/all/designers-and-specialists/"&gt;предлагает убрать&lt;/a&gt; рычаг, первой реакцией будет от него отмахнуться. Но теперь мы ездим на машинах с двумя педалями вместо трёх с рычагом, и всё меньше людей готовы работать частью механизма. То же и с кнопками масштабирования в интерактивных картах: они упрощают жизнь разработчикам javascript-библиотек и усложняют всем остальным, от пользователей до создателей карт.&lt;/p&gt;
&lt;p&gt;Эти кнопки — бич веб-картографии. Как не устаёт &lt;a href="http://городшахты.рф/question/stil-kartografa/answer/14746/"&gt;напоминать&lt;/a&gt; Сергей Голубев, при каждом нажатии на «+» вы видите новую карту, с собственным картостилем и свойствами. На сайте osm.org у нас 20 (двадцать) различных картостилей. Каждое изменение стиля osm-carto затрагивает примерно половину из них, поэтому неудивительно, что дискуссии в репозитории обильно иллюстрированы и могут затягиваться. Но если подумать, действительно ли пользователю нужны все эти карты? Вне компьютера хватает трёх-четырёх: атласа мира, атласа области и карты города. Когда масштабов мало, больше времени остаётся на полировку оформления каждого. А точная настройка интерфейса становится излишней.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/burn_buttons.jpg" width="1400" height="600" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Изменить масштаб можно многими способами, в зависимости от устройства и сайта:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;кнопками плюс-минус на экране;&lt;/li&gt;
&lt;li&gt;теми же кнопками с зажатым shift для большей скорости;&lt;/li&gt;
&lt;li&gt;ползунком масштабирования;&lt;/li&gt;
&lt;li&gt;колёсиком мыши;&lt;/li&gt;
&lt;li&gt;двойным кликом левой кнопкой;&lt;/li&gt;
&lt;li&gt;растягиванием прямоугольника мышью с зажатым shift;&lt;/li&gt;
&lt;li&gt;кнопками «+» и «-» на клавиатуре;&lt;/li&gt;
&lt;li&gt;перетягиванием двумя пальцами на тачпаде или экране;&lt;/li&gt;
&lt;li&gt;щипком или расщипком на экране;&lt;/li&gt;
&lt;li&gt;дважды тыкаешь пальцем, второй раз не отпуская удерживаешь и тянешь вниз или вверх.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Почему так много? Потому что у каждого из этих способов есть недостатки: от сложности обнаружения (последний пункт от Сергея Синицына удивил многих в чате) и отсутствия технической возможности (клавиатура есть не у всех) до неудобства, неточности или низкой скорости отклика.&lt;/p&gt;
&lt;p&gt;Но пользователи обычно приходят к вам не для того, чтобы масштабировать карту. Им все эти способы нафиг не нужны. Они хотят посмотреть на данные или понять взаимоотношение географических объектов. Если остановиться и подумать, что нужно пользователю, может оказаться, что либо не нужна интерактивность целиком, либо не нужно масштабирование, либо не нужны двадцать карт и сложные способы переключения между ними.&lt;/p&gt;
&lt;p&gt;Как пример альтернативной навигации, я сделал &lt;a href="http://osmz.ru/weirdzoom.html"&gt;демонстрационный сайт&lt;/a&gt;. На нём всего одна кнопка: её достаточно для карты, предназначенной для рассматривания. Кроме того, там всего пять уровней масштаба: достаточно, чтобы за три клика найти нужный дом, а не крутить карту туда-сюда, разглядывая промежуточные стили. Наконец, кнопка стоит внизу: так до неё удобнее дотянуться на телефоне.&lt;/p&gt;
&lt;p&gt;Разумеется, для более сложных сайтов одной кнопки может оказаться недостаточно. Но это не повод вестись на традиции и пользоваться стандартными элементами. Всегда можно сделать лучше. Вместо списка нарисовать картинки, вместо картинок встроить карты, вместо карт сделать простой инструмент. Интерактивная карта — всегда зло, но если вы её делаете, думайте о задачах пользователя и не перекладывайте на него свою работу.&lt;/p&gt;
</description>
</item>

<item>
<title>Пакет не нужен</title>
<guid isPermaLink="true">https://shtosm.ru/all/no-bag-thanks/</guid>
<link>https://shtosm.ru/all/no-bag-thanks/</link>
<pubDate>Thu, 27 Apr 2017 13:40:20 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/no-bag-thanks/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/big-changeset-nq8.png" width="700" height="250" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;«Нельзя ли при отправке изменений из maps.me разделять объекты по континентам?» — в очередной раз спрашивают на форуме. А то bbox (ограничительный прямоугольник) слишком большой, неудобно. OpenStreetMap был зачат тысячу лет назад программистом, и это лезет изо всех щелей: удивительно, как самые бессмысленные атрибуты становятся мерилом качества.&lt;/p&gt;
&lt;p&gt;Прямоугольник на карте — это миф. Минимальные и максимальные широта и долгота — так просто нарисовать фигуру в проекции меркатора, но на практике этих чисел не хватит даже чтобы нормально карту распечатать. Пакет правок, который покрывает полмира, мог добавить одну дорогу на Чукотке, но магия чисел и странных проекций заставит вздохнуть: опять эти импортёры делают ченджсеты на всю планету. От пакетов правок мы храним только bbox, поэтому нажмёшь в любом месте планеты на вкладку «история» и наблюдаешь всемирную историю, а не то, что ждал.&lt;/p&gt;
&lt;p&gt;Но даже когда найдёшь нужный пакет правок, останется только бессильно смотреть на его bbox. И на стастраничный список точек, линий и отношений, каждая строчка которого по-своему бесполезна. Ченджсеты — это псевдоупорядочивание. Кажется, что они полезны присвоением метаданных группе объектов, своего рода над-отношения, но на самом деле — метки времени произвольны, их порядок не зависит от номера пакета, комментарии никто не пишет, источник часто врёт, географически, как видим, тоже никто не группирует. Остаётся один полезный атрибут: created_by. Всему остальному верить нельзя.&lt;/p&gt;
&lt;p&gt;То есть, единственная польза от пакета правок — это посмотреть, каким редактором сделаны правки. Все остальные атрибуты: даты, bbox, список объектов — только отвлекают, создавая ложное впечатление группировки и упорядоченности. Которых нет, потому что техническое воплощение API не обещает порядка и не подразумевает удобства. Так, для &lt;a href="http://mmwatch.osmz.ru/"&gt;правок maps.me&lt;/a&gt; я игнорирую пакеты и рассматриваю каждую правку отдельно. Правки на mmwatch — это поток объектов, у которых номер ченджсета лишь бесполезный атрибут. Увы, для сложных правок со взаимосвязанными изменениями (таких как сдвиг линии) такой подход не сработает.&lt;/p&gt;
&lt;p&gt;Примерно об этом я &lt;a href="https://www.youtube.com/watch?v=MKLwLI8fyn0"&gt;говорил на схемотехнике&lt;/a&gt; год назад. О bbox нужно просто забыть: область применения этих прямоугольников ограничена и точно не касается ваших задач. А проблему пакетирования нужно как-то решать. Развязать топологические структуры, группировать по времени и географии, не давать пользователям и приложениям свободы в объединении правок. Это настоящая тема для какого-нибудь будущего API 0.8. А пока приходится работать с тем, что есть.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/osmcha.jpg" width="700" height="300" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Следить за изменениями в регионе можно (нужно!) через &lt;a href="http://zverik.osm.rambler.ru/whodidit/"&gt;WhoDidIt&lt;/a&gt;, искать их — в его &lt;a href="http://simon04.dev.openstreetmap.org/whodidit/"&gt;более быстром форке&lt;/a&gt;. Пакет правок из интерфейса этого сайта можно открыть в &lt;a href="https://wiki.openstreetmap.org/wiki/Achavi"&gt;Achavi&lt;/a&gt;, но иногда может не повезти. Если bbox окажется слишком велик, загрузки правок вы можете не дождаться. Потому что даже лучшие инструменты полагаются на bbox, который, повторюсь, плох примерно для всего.&lt;/p&gt;
&lt;p&gt;Загружать геометрию ченджсетов часто приходится команде по работе с данными в Mapbox. Для этого они сделали и постоянно улучшают сайт &lt;a href="https://osmcha.mapbox.com/"&gt;OSM Changeset Analyzer&lt;/a&gt;, где есть фильтры по любому атрибуту, вплоть до причины для подозрений. Но самые подозрительные пакеты накрывают весь мир, Achavi тут бессилен. Поэтому в этом месяце они сделали то, что давно было пора: &lt;a href="http://www.openstreetmap.org/user/geohacker/diary/40846"&gt;кэширование ченджсетов&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Каждую минуту скрипт скачивает свежие &lt;a href="http://shtosm.ru/all/noveyshaya-istoriya/"&gt;дополненные диффы&lt;/a&gt; и складывает их в хранилище Amazon S3. Затем он раздербанивает эти диффы на пакеты правок и результат тоже загружает туда же. И теперь сервис визуализации Changeset Map, встроенный в OSMCHA, загружает пакеты &lt;a href="https://osmlab.github.io/changeset-map/#48174207"&gt;мгновенно&lt;/a&gt;. Обновите ваши букмарклеты: &lt;a style="background:#eee;padding:5px;border-radius:3px;" title="Пакет правок на карте" href="javascript:(function(){var%20m=/openstreetmap\.org\/changeset\/(\d+)/.exec(location.href);if(m){location.assign('https://osmlab.github.io/changeset-map/#'+m[1]);}})();"&gt;Changeset&lt;/a&gt; (перетащите в закладки).&lt;/p&gt;
&lt;p&gt;Проблемы, конечно, есть, но с ними борются. Например, дополненные диффы &lt;a href="https://github.com/drolbr/Overpass-API/issues/346"&gt;не окончательны&lt;/a&gt; из-за чехарды с транзакциями в базе данных OSM. Их приходится обновлять и обновлять. То же касается и пакетов правок, которые возможно держать открытыми целые сутки, понемногу доливая в них новые объекты. Наконец, история там только новейшая: пакеты старее марта этого года можно не найти. Их загружают, но медленно. Проблему поиска по региону архив тоже не решает, как показывает опыт фильтрации на сайте OSMCHA. Поэтому пользуйтесь им для просмотра недавних правок, а историю ищите на WhoDidIt и Achavi. Неидеально — но пока мы не избавились от концепции пакетов правок, ничего лучше не сделать.&lt;/p&gt;
</description>
</item>

<item>
<title>Leaflet 1.0</title>
<guid isPermaLink="true">https://shtosm.ru/all/leaflet-1-0/</guid>
<link>https://shtosm.ru/all/leaflet-1-0/</link>
<pubDate>Thu, 29 Sep 2016 13:51:08 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/leaflet-1-0/</comments>
<description>
&lt;p&gt;Мы уже не чаяли: 27 сентября, наконец, &lt;a href="http://leafletjs.com/2016/09/27/leaflet-1.0-final.html"&gt;опубликован&lt;/a&gt; релиз библиотеки &lt;a href="http://leafletjs.com/download.html"&gt;Leaflet 1.0.0&lt;/a&gt;. Спустя целых три года после выхода 0.7 и всего год после объявления «мы на финишной прямой к релизу».&lt;/p&gt;
&lt;p&gt;Основным изменением, как всегда, стала скорость: многие функции переписали чуть ли не с нуля. Особенно заметна скорость отрисовки векторных слоёв. Появилась функция &lt;i&gt;flyTo()&lt;/i&gt;, анимированными гифками которой когда-то рекламировали эту версию, и дробные уровни масштаба. Плагин &lt;i&gt;Leaflet.label&lt;/i&gt; больше не нужен: вместо него в ядро добавили класс &lt;i&gt;L.Tooltip&lt;/i&gt;. Ну и взаимодействие между кучей слоёв разных типов теперь должно быть предсказуемее.&lt;/p&gt;
&lt;p&gt;В будущем авторы, уставшие от этого марафона, обещают релизы раз в две-четыре недели. Особых планов на следующие версии нет: только документация, рефакторинг, валидация плагинов.&lt;/p&gt;
</description>
</item>

<item>
<title>Разделяй и оптимизируй</title>
<guid isPermaLink="true">https://shtosm.ru/all/razdelyay-i-optimiziruy/</guid>
<link>https://shtosm.ru/all/razdelyay-i-optimiziruy/</link>
<pubDate>Tue, 01 Sep 2015 01:31:06 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/razdelyay-i-optimiziruy/</comments>
<description>
&lt;p&gt;Владимир Агафонкин давно рассказывает про библиотеку &lt;a href="https://github.com/mapbox/geojson-vt"&gt;geojson-vt&lt;/a&gt;: она нарезает большие файлы GeoJSON на векторные тайлы прямо в браузере (или на сервере, или в нативном коде для смартфонов). Это часть большого стека отрисовки всего в виде векторных тайлов (Mapbox GL JS), про который автор делал много одинаковых &lt;a href="http://www.youtube.com/watch?v=u2ppZYvpeb4"&gt;докладов&lt;/a&gt; в первой половине года.&lt;/p&gt;
&lt;p&gt;Что он сейчас сделал впервые — это написал &lt;a href="https://www.mapbox.com/blog/introducing-geojson-vt/"&gt;статью&lt;/a&gt; про то, какие алгоритмы и решения делают geojson-vt таким быстрым. Вдумчивого чтения там на полчаса, хотя суть укладывается в список в середине: искать подходящие алгоритмы, не делать ненужного, лишнее удалять, и самое главное — профилировать каждую операцию. По сути, то же, что было в Leaflet, но результат куда эффектнее: сотни мегабайт данных обрабатываются пару секунд и отображаются почти мгновенно. Правда, видеозаписи этого чуда найти проще работающих примеров.&lt;/p&gt;
</description>
</item>

<item>
<title>2014</title>
<guid isPermaLink="true">https://shtosm.ru/all/2014/</guid>
<link>https://shtosm.ru/all/2014/</link>
<pubDate>Thu, 15 Jan 2015 03:35:12 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/2014/</comments>
<description>
&lt;p&gt;Это был странный год, который проще определить через то, чего в нём не было.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Не появилось нового редактора, и старые качественно не улучшались. Никто не выпустил качественно новых плагинов для JOSM. В iD до сих пор нет поддержки сервера смещений. Меркартор жыв: недавно один его пользователь утянул петербуржский перекрёсток &lt;a href="http://forum.openstreetmap.org/viewtopic.php?pid=474041#p474041"&gt;в Африку&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Никто не взялся даже за планирование API 0.7. Была пара дискуссий в рассылках и EWG, с предсказуемым «хочешь — сделай». Понятно, что новый API полностью уйдёт с Rails на cgi-map. Понятен начальный фронт работ, но заняться этим банально некому. Всё и так работает, неинтересно. А для остального есть Overpass.&lt;/li&gt;
&lt;li&gt;Несмотря на постоянные «почти готово», в прошлом году не вышла ни одна «мажорная» версия Leaflet. Раньше Владимир делал по 2-3 релиза в год. В грядущей 1.0 &lt;a href="https://github.com/Leaflet/Leaflet/blob/master/CHANGELOG.md"&gt;поменяется&lt;/a&gt; модель тайловых и векторных слоёв и работа с проекциями. На прошлой неделе автор &lt;a href="https://github.com/Leaflet/Leaflet/issues/3124"&gt;призвал&lt;/a&gt; всех участников разработки поднапрячься и выпустить хотя бы бету в этом месяце.&lt;/li&gt;
&lt;li&gt;Mapbox так ускорялся, что перешёл на сверхсветовую скорость, и пропал из поля зрения обычного человека. TileMill во второй версии перешёл на платную модель хранения тайлов, и из-за сложности настройки векторных тайлов толку от самостоятельной сборки исчезающе мало. Компания бешено набирает людей, уже даже просто так, &lt;a href="http://wiki.openstreetmap.org/wiki/Mapbox#Mapbox_Data_Team"&gt;помапить&lt;/a&gt;. Образно выражаясь, конечно: недовольная скоростью обрисовки американских городов, она задействует открытые данные и специалистов по импортам. Всё лучше, чем импорты исподтишка, какими балуются некоторые русские компании.&lt;/li&gt;
&lt;li&gt;Мы очень хотели изменений в Совете OSMF, но не срослось: только отвлекли его участников спорами на месяц. Он продолжает свою полуоткрытую работу, 16-17 февраля они встретятся вживую, и кто-нибудь даст кому-нибудь по лицу, если повезёт. Под шумок Хэнк тянет с выбором места проведения SotM 2015 из двух вариантов. Неопределённость и закрытость — кажется, имманентное свойство Совета.&lt;/li&gt;
&lt;li&gt;Конечно, &lt;a href="http://shtosm.ru/2013/01/14/2/"&gt;новый OWL&lt;/a&gt; так и не закончен, а старый никому не интересен. Единственным средством слежения за правками остаётся Who Did It, который я делал как временное решение, не ожидая, что он будет актуальным и через два года. Ладно хоть Achavi сделал просмотр ченджсетов веселее.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;И хотя никаких технических прорывов не произошло, год был богат на неожиданности.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Главной из которых, конечно, стала карта национального поисковика «Спутник», полностью завязанная на OpenStreetMap и данные в PD.&lt;/li&gt;
&lt;li&gt;Затем Mail.Ru Group купил белорусскую команду Maps.me и вывез её в Москву. Затем устроил аттракцион щедрости, сделав приложение бесплатным. И, наконец, убил собственную онлайн-карту, заменив страницу ссылкой на Maps.me.&lt;/li&gt;
&lt;li&gt;Обычно работы многочисленных студентов с Google Summer of Code медленно покрываются пылью, но в этом году всё наоборот: у нас был только один человек, но тем, что он написал, пользуются сотни осмеров. Да, &lt;a href="http://shtosm.ru/all/plody-programmirovaniya/"&gt;комментариями к ченджсетам&lt;/a&gt;. И они даже года не провисели в пул-реквестах: благодаря шумихе в OSMF, их быстро влили в сайт. Чаще бы выборы.&lt;/li&gt;
&lt;li&gt;Не появился второй новостной блог, но проект &lt;a href="http://www.weeklyosm.eu"&gt;WeeklyOSM&lt;/a&gt; с сентября стабильно переводит немецкие новости на восемь языков (есть добровольцы на русский?), а во вконтакте выросло несколько осмосообществ с очень активными ведущими: псковское, курское, самарское. Ещё у нас &lt;a href="http://www.youtube.com/channel/UCCVT3wAjFnQLNZreO_r0oHw/videos?view=0&amp;flow=grid&amp;sort=da"&gt;летсплеи по JOSM&lt;/a&gt; делают, это вообще космос. И радио.&lt;/li&gt;
&lt;li&gt;Мы редко выбирались на картовстречи в этом году, но качество проведения онлайн-встреч выросло неимоверно: вспомнить крымскую, например, или серию мероприятий &lt;a href="http://habrahabr.ru/post/240911/"&gt;Missing Maps&lt;/a&gt;. Такие встречи вербуют в OSM сразу кучу картографов, и о них широко пишут в крупных газетах (не в России, увы). И по теме вербовки — мы впервые с 2011 года пришли в школу и показали детям редактор карты. Скоро ещё пойдём.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Отсутствие громких новостей непривычно: ни перелицензирования, ни нового редактора — но именно такой год показал, как бурно прогрессирует OSM в мелочах. Вместо одного лидера обнаружились сотни мапперов, программистов и писателей, неукротимо двигавших все аспекты проекта. Чёрт возьми, OpenStreetMap действительно неостановим.&lt;/p&gt;
&lt;p&gt;Две тысячи пятнадцатый будет годом больших игроков: Mapbox и Telenav в Штатах, Спутник и Mail.ru в России. Как бы мне ни хотелось завести старую сказку про редакторов и программистов, осенью стало особенно ясно, что направление развития задают не участники, не OSMF и не Совет, а те, кто вкладывает в OpenStreetMap деньги и рабочее время. Принцип do-ocracy повернулся неожиданной стороной, и большинству участников только предстоит осмыслить, хорошо это или вредно. Год обещает быть интересным.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/tomsk-osm.jpg" width="700" height="300" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Зрелищного видео правок за год никто не сделал, но Дмитрий Афонин прислал отличную картинку, которая и показывает, чего мы добились (это не уникальная карта, а целая серия), и напоминает о первом принципе проверки открытости (распечатать и продать), и намекает на тренд будущего года, когда ввиду обстоятельств люди в России начнут понимать, где в OSM деньги.&lt;/p&gt;
</description>
</item>

<item>
<title>Он снова здесь</title>
<guid isPermaLink="true">https://shtosm.ru/all/openlayers-3/</guid>
<link>https://shtosm.ru/all/openlayers-3/</link>
<pubDate>Thu, 11 Sep 2014 01:44:04 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/openlayers-3/</comments>
<description>
&lt;p&gt;Помните, когда-то в древности была такая библиотека — &lt;a href="http://openlayers.org"&gt;OpenLayers&lt;/a&gt;? В своё время технологический прорыв, она выросла в большого некрасивого монстра, которым пользовались, скорее, от отсутствия альтернатив и от действительно хорошо оттестированного движка, работавшего даже на безнадёжно устаревших браузерах, вроде Opera. Последнее немного затормозило распространение Leaflet (и я был в числе недовольных, когда он захватил osm.org), но ненадолго: теперь библиотекой OpenLayers пользуются либо бородатые ГИС-программисты, либо новички, по несчастью наткнувшиеся на слишком старый учебник.&lt;/p&gt;
&lt;p&gt;Две недели назад многолетняя работа по осовремениванию движка завершилась выпуском версии 3.0.0. На сайте, к сожалению, нет учебника, кроме несуразного &lt;a href="http://openlayers.org/en/v3.0.0/doc/quickstart.html"&gt;quick start&lt;/a&gt; (прошлая версия тоже страдала отсутствием вменяемой документации), потому создаётся впечатление, что получилось стильно, кратко, молодёжно: даже скрипт библиотеки теперь называется &lt;i&gt;ol.js&lt;/i&gt;. В анонсах упор делают на WebGL и трёхмерные карты, хотя в примерах их непросто найти. Если погрузиться в справочник, всплывают страшные конструкции, вроде &lt;i&gt;ol.control.defaults().extend({...})&lt;/i&gt; для банального добавления элементов управления, и понимаешь, что проще не стало.&lt;/p&gt;
&lt;p&gt;Пока писал эту заметку, делал и расширял &lt;a href="http://osmz.ru/ol3.html"&gt;небольшой пример&lt;/a&gt; использования библиотеки, значительно проще официального. Вот что я вынес из этих шести строчек и пары десятков страниц документации:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;чтобы написать шесть строчек кода, нужно прочитать пару десятков страниц документации по API: примеры и учебник только запутают;&lt;/li&gt;
&lt;li&gt;А-А-А-А! нажмите Alt+Shift и подвигайте карту! Включено по умолчанию!&lt;/li&gt;
&lt;li&gt;надеялся, что за это время в команде появился дизайнер, но нет: все элементы интерфейса так же неприглядны;&lt;/li&gt;
&lt;li&gt;по умолчанию прячут копирайты под значок — что в своё время &lt;a href="http://shtosm.ru/all/i/"&gt;не сошло с рук&lt;/a&gt; MapBox-у;&lt;/li&gt;
&lt;li&gt;снова чехарда с проекциями, но полегче: не нужно создавать кучу вспомогательных классов;&lt;/li&gt;
&lt;li&gt;потому что многие константы и объекты можно заменить простыми строками;&lt;/li&gt;
&lt;li&gt;не lat-lon, а lon-lat, как у взрослых;&lt;/li&gt;
&lt;li&gt;снова тысяча мелочей из коробки, вроде библиотеки слоёв, экспорта в PNG, &lt;a href="http://openlayers.org/en/v3.0.0/examples/vector-osm.html"&gt;разбора OSM XML&lt;/a&gt;, кластеринга и heatmap-ов;&lt;/li&gt;
&lt;li&gt;несмотря на обещанный «high-quality documentation», хорошо выглядит только справочник по API, да и то — до первого вопроса про типы параметров функций;&lt;/li&gt;
&lt;li&gt;дробный масштаб — не для солидных людей, судя по отсутствию простого способа его включить;&lt;/li&gt;
&lt;li&gt;надеялся на функциональный аналог Leaflet.draw, но его нет;&lt;/li&gt;
&lt;li&gt;боюсь представить, как к библиотеке пишутся плагины;&lt;/li&gt;
&lt;li&gt;интерактивная карта на главной &lt;a href="http://openlayers.org"&gt;openlayers.org&lt;/a&gt; — самая узкая, что я когда-либо видел.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;В целом, здорово, что OpenLayers жив. Он — необходимый противовес Leaflet, почти полная противоположность: подтормаживает, сложный и насыщенный API (хотя файл js больше всего в три раза), разработчиков команда, версия больше нуля. Поначалу эта заметка должна была быть негативной, но когда разбираешься, как и зачем сделаны некоторые непривычные вещи в библиотеке, понимаешь объём проделанной работы, её суть и адресатов. Пока не стоит бежать переписывать на неё все свои проекты, но после пары минорных релизов и выпуска документации OpenLayers, без сомнения, пошатнёт позиции Leaflet как «монополиста» в пользовательской картографии.&lt;/p&gt;
</description>
</item>

<item>
<title>Новейшая история</title>
<guid isPermaLink="true">https://shtosm.ru/all/noveyshaya-istoriya/</guid>
<link>https://shtosm.ru/all/noveyshaya-istoriya/</link>
<pubDate>Fri, 18 Jul 2014 00:27:33 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/noveyshaya-istoriya/</comments>
<description>
&lt;p&gt;Перед европейской конференцией, в начале июня, Роланд анонсировал в talk@ несколько &lt;a href="https://lists.openstreetmap.org/pipermail/talk/2014-June/069949.html"&gt;нововведений&lt;/a&gt; в Overpass API. Первое — дополненные диффы, которые копились на сервере с &lt;a href="http://shtosm.ru/2012/09/18/1/"&gt;сентября 2012 года&lt;/a&gt;, теперь генерируются на лету. Помимо освобождённого терабайта, это позволяет фильтровать диффы запросами Overpass: например, получать их для выбранной области.&lt;/p&gt;
&lt;p&gt;И раз сервер теперь помнит историю, почему бы не добавить соответствующие запросы — к «чердаку», как называет это Роланд? Дописав в начало &lt;tt&gt;[date:«2014-07-11T08:00:00Z»];&lt;/tt&gt; (с обычными кавычками), получите данные из этого дня, как если бы делали запрос неделю назад. Разумеется, есть аналогичный запрос на разницу между двумя датами. Автор предупреждает, что из-за глюка в обновлениях данные до 2 июня временно ненадёжны.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/achavi-changeset.gif" width="700" height="250" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Норберт Реннер по такому случаю &lt;a href="http://www.openstreetmap.org/user/ikonor/diary/23329"&gt;вернулся&lt;/a&gt; к своему визуализатору правок Achavi. &lt;a href="http://shtosm.ru/2013/03/11/1/"&gt;Старая версия&lt;/a&gt; давно живёт на overpass-api.de, а &lt;a href="http://nrenner.github.io/achavi/"&gt;новая&lt;/a&gt; — на гитхабе автора. Она не спешит качать диффы, а предлагает приблизить интересующее место и нажать кнопку «load» слева вверху. Через несколько секунд вы увидите визуализированные правки за последние сутки. Границы временного интервала можно поменять.&lt;/p&gt;
&lt;p&gt;И, впервые в проекте, можно визуализировать произвольный ченджсет без многочасового ожидания в очереди, просто добавив к адресу &lt;tt&gt;?changeset=123456&lt;/tt&gt;. Да что там, держите букмарклет: &lt;a style="background:#eee;padding:5px;border-radius:3px;" title="Ченджсет на карте" href="javascript:(function(){var%20m=/openstreetmap\.org\/changeset\/(\d+)/.exec(location.href);if(m){location.assign('http://nrenner.github.io/achavi/?changeset='+m[1]);}})();"&gt;Changeset&lt;/a&gt; (перетащите в закладки). Он не покажет отношения, чтобы не замусоривать карту; для этого добавьте &lt;tt&gt;&amp;relations=true&lt;/tt&gt;. Напомню, что тёмно-красным отображается старая геометрия сдвинутых объектов. Теперь ожидание нового OWL станет менее томительным.&lt;/p&gt;
</description>
</item>

<item>
<title>Без команд</title>
<guid isPermaLink="true">https://shtosm.ru/all/bez-komand/</guid>
<link>https://shtosm.ru/all/bez-komand/</link>
<pubDate>Thu, 13 Mar 2014 09:01:30 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/bez-komand/</comments>
<description>
&lt;p&gt;Вы слышали о плагине &lt;a href="http://wiki.openstreetmap.org/wiki/RU:JOSM/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D0%B8/CommandLine"&gt;CommandLine&lt;/a&gt; для JOSM, написанный Hind-ом: он позволяет запускать любой внешний скрипт, передавая ему часть редактируемых данных и другие параметры. Его непросто настроить, и он отгрызает от карты две строки. Для плагина на языке Python написана пара десятков команд, в основном для работы с геометрией. Альтернатива — писать свой плагин для JOSM, или дополнять существующий, что несколько сложнее (хотя и полезнее в перспективе).&lt;/p&gt;
&lt;p&gt;Но у нас открытый проект, а значит, есть третий путь. Зачем устанавливать какие-то дополнительные программы, когда в Java включён полноценный интерпретатор JavaScript? Плагин &lt;a href="http://gubaer.github.io/josm-scripting-plugin/"&gt;Scripting&lt;/a&gt; задействует его на полную: писать обработчики данных можно на любом поддерживаемом языке, включая Python, Ruby, Groovy и даже &lt;a href="http://wiki.openstreetmap.org/wiki/User:JDub#LISP"&gt;Lisp&lt;/a&gt;, при этом доступна вся внутренняя инфраструктура JOSM. То есть, не нужно заново изобретать парсер файлов OSM, и можно встраивать функции в интерфейс: например, добавлять пункты в меню и кнопки на панель инструментов, обрабатывать новые форматы файлов, запускать сложные интерактивные процессы вроде склеивания линий с учётом тегов и отношений.&lt;/p&gt;
&lt;p&gt;В этом месяце на scripting обратил внимание участник bdiscoe, &lt;a href="http://www.openstreetmap.org/user/bdiscoe/diary/21208"&gt;взявший приз&lt;/a&gt; в американском забеге картографов. Для быстрой обработки дорог он сделал &lt;a href="https://www.openstreetmap.org/user/bdiscoe/diary/21209"&gt;кнопки добавления тегов&lt;/a&gt;, которые повесил на комбинации клавиш (это можно было сделать и пресетами, но скриптом — интереснее). Другие примеры использования куда мощнее: например, в 2011 году severality &lt;a href="http://www.openstreetmap.org/user/severality/diary/13487"&gt;опубликовал скрипт&lt;/a&gt; для создания отношений по белорусской схеме адресации. На питоне пишут внушительные валидаторы: &lt;a href="http://wiki.openstreetmap.org/wiki/Quality_control_with_Python_script_in_JOSM"&gt;веломаршрутов&lt;/a&gt; и &lt;a href="http://wiki.openstreetmap.org/wiki/Quality_Assurance_Tools_script"&gt;всего остального&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Плагину в январе исполнилось три года, его поддерживает один человек — Карл Гуггисберг. Это один из примерно десятка плагинов, исходники которых лежат вне SVN OpenStreetMap, поэтому авторы JOSM не могут незаметно их поправить после очередного волюнтаристского слома API.  А сторонние люди не могут взять и удалить все исходники, как когда-то случилось с no_more_mapping. Единственное, что останавливает других авторов от побега, — отключение от системы централизованной локализации через launchpad.&lt;/p&gt;
</description>
</item>

<item>
<title>MapBBCode Triumphant</title>
<guid isPermaLink="true">https://shtosm.ru/all/mapbbcode-triumphant/</guid>
<link>https://shtosm.ru/all/mapbbcode-triumphant/</link>
<pubDate>Fri, 06 Dec 2013 10:49:32 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/mapbbcode-triumphant/</comments>
<description>
&lt;p&gt;Вчера я выложил новый проект в репозиторий MapBBCode. Он изменит сеть, и победит всех. Одной строчкой вы сможете добавить карту на любую — абсолютно любую — страницу. Например, в штосме не было карт, потому что исходники закрыты. Теперь это не проблема.&lt;/p&gt;
&lt;div class="mapbbcode"&gt;&lt;p&gt;[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]&lt;/p&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="https://github.com/MapBBCode/mapbbcode-loader"&gt;MapBBCode Loader&lt;/a&gt; — это небольшой скрипт, который ищет на странице bb-код карты, и если находит, подгружает библиотеки Leaflet и MapBBCode, после чего заменяет все коды картами. Заодно он вешает на специально обозначенную кнопку редактор карты. Другими словами, это замена полноценным плагинам для движков, в которые сложно встроить MapBBCode правильно.&lt;/p&gt;
&lt;p&gt;Собственно, если скопировать следующий код в адресную строку (в FF не работает, в IE и хроме нужно дописать «javascript:» руками), отработает загрузчик, и вы увидите карты на открытой странице. Проверить можно на примерах в &lt;a href="http://mapbbcode.org/ru/bbcode.html"&gt;спецификации bb-кода&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;javascript:(function(){document.body.appendChild(document.createElement(’script’)).src=’http:/’+’/osmz.ru/mapbb.plain.js’;})();&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Полагаю, теперь ничто не остановит шествие MapBBCode и OSM по интернету. Даже форумные движки с закрытыми исходниками и лень админов. Полная инструкция из пяти простых шагов выложена в репозитории, вместе с исходником.&lt;/p&gt;
</description>
</item>

<item>
<title>The best map library you’ll see ALL DAY</title>
<guid isPermaLink="true">https://shtosm.ru/all/the-best-map-library-youll-see-all-day/</guid>
<link>https://shtosm.ru/all/the-best-map-library-youll-see-all-day/</link>
<pubDate>Mon, 18 Nov 2013 20:33:49 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/the-best-map-library-youll-see-all-day/</comments>
<description>
&lt;p&gt;Казалось, новую версию Leaflet никто не ждёт: 0.6.4 оказалась достаточно хороша для всех, и едва ли кто-нибудь тут натыкался на её баги. Тем не менее, только что Владимир &lt;a href="http://leafletjs.com/2013/11/18/leaflet-0-7-released-plans-for-future.html"&gt;выпустил Leaflet 0.7&lt;/a&gt;. Визуально эту версию не отличить от предыдущей, но программистам она удобнее: например, пропала необходимость подключать отдельный стиль для Internet Explorer. И появился &lt;a href="http://osmz.ru/overzoom.html"&gt;оверзум&lt;/a&gt;: если у какого-то слоя недостаточно уровней масштаба, не беда. В полном &lt;a href="https://github.com/Leaflet/Leaflet/blob/master/CHANGELOG.md"&gt;списке изменений&lt;/a&gt;, неожиданно, нового лишь слегка меньше, чем багфиксов, а в планах на версию 0.8 фичи отсутствуют: только рефакторинг, документация и рефакторинг.&lt;/p&gt;
</description>
</item>

<item>
<title>Карты для всех, даром</title>
<guid isPermaLink="true">https://shtosm.ru/all/karty-dlya-vseh-darom/</guid>
<link>https://shtosm.ru/all/karty-dlya-vseh-darom/</link>
<pubDate>Thu, 31 Oct 2013 23:45:09 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/karty-dlya-vseh-darom/</comments>
<description>
&lt;p&gt;На форуме «Проекты Петербурга» обсуждают, в основном, дорожное строительство. Где ремонтируют, где перекрыли, где прокладывают (или уже отменили) новое шоссе. С локализацией темы обсуждения всегда проблемы: «53-81 км — это где?» Пять лет назад нормальным было дать ссылку на карты яндекса или вставить картинку, но XXI век на дворе, лифлету недавно три года исполнилось, почему нельзя просто вставить карту? Почему на местном велосипедном форуме дают ссылки на монструозный gpsies, а марафонщики до сих пор скриншотят пираченный OziExplorer?&lt;/p&gt;
&lt;p&gt;Будучи программистом, я постоянно чувствовал, что вся эта дремучесть технологий — моя вина, но только месяц назад взялся за решение задачи. Несмотря на комментарий к коммиту от 1 октября «almost final», и через три дня — «вероятно, последний коммит», разработка идёт до сих пор, но помня об изречении, что дела нельзя закончить, можно лишь прекратить, сегодня я объявляю о выходе версии 1.0 библиотеки &lt;a href="http://mapbbcode.org/"&gt;MapBBCode&lt;/a&gt;: элементарного способа встроить рисование и отображение карт во что угодно.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/skandinavia.gif" width="700" height="300" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Основой встраивания стал bb-код [map]...[/map], внутри которого описываются объекты карты. Это простая строка текста, которую можно скопировать куда угодно или редактировать вручную. Функционально это упрощённый GeoJSON. Небольшая javascript-библиотека превращает его в карту на Leaflet и позволяет править не подбором цифр, а рисуя на карте. Посмотреть на неё в деле можно на сайте проекта. Там же есть ссылки на модули для форумов phpBB: в понедельник «Проекты Петербурга» первыми встроили карты, на очереди — велофорумы. Когда-нибудь, надеюсь, библиотеку встроят в vBulletin, SMF, WordPress и MediaWiki.&lt;/p&gt;
&lt;p&gt;Как пример использования библиотеки, родился сайт &lt;a href="http://share.mapbbcode.org/"&gt;MapBBCode Share&lt;/a&gt;. Идея проста: если хранить строки в базе, получится неплохой сайт для обмена картами, простой и доступный, как pastebin или imgur. А из окошка просмотра кода можно скопировать текст на форум, его поддерживающий (или наоборот). Образ сайта в голове начал потрескивать, когда ГИС-Лаб воспользовался сервисом для планирования картовстречи, выложив ссылку на редактирование в открытый доступ. А затем я добавил импорт и экспорт в десяток форматов, библиотеку кодов (чтобы не нужно было хранить закладки локально) и API. Оказалось, что обмен картами — лишь малая часть открывшихся возможностей.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/sharemapbbcode.gif" width="700" height="350" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь можно планировать маршрут поездки вместе с друзьями, расставить маркеры, затем поместить карту на форум, и за день до выезда участники прямо из форума загружают GPX с вейпоинтами. Можно импортировать CSV (алгоритм определения его формата эпичен) и сразу получить HTML без внешних зависимостей. Никаких iframe — в отличие от &lt;i&gt;всех остальных&lt;/i&gt; сайтов, MapBBCode Share выдаёт полноценную страницу без ссылок на себя. Загрузка треков, сгенерированных роутером &lt;a href="http://osrm.at"&gt;OSRM&lt;/a&gt;, быстрое редактирование poly-файлов и неминуемый экспорт в GeoJSON — сайт конкурирует не только с &lt;a href="http://geojson.io/"&gt;geojson.io&lt;/a&gt; и &lt;a href="http://umap.openstreetmap.fr/en/"&gt;uMap&lt;/a&gt;, но даже с JOSM. Безопасность на высоте: логин через OpenID (гуглояндексы подходят), немедленно хэшируется, поэтому даже администратор не знает, кто пользуется сайтом, при этом хэш никогда не покидает сервера, API для фильтрации карт по пользователю нет.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/MapBBCode"&gt;Итог работы&lt;/a&gt; — более 200 килобайт кода, за 60 килобайт документации, 7 новых плагинов для Leaflet, всё под максимально свободной лицензией WTFPL. Разработка продолжается, но теперь изменения протоколируются, и автор ответственен за обратную совместимость. Пользуйтесь MapBBCode Share и встраивайте модуль в новые форумы и блоги. Сделаем [map] стандартом, а обмен картами — не более сложным, чем обмен картинками или кодом.&lt;/p&gt;
</description>
</item>

<item>
<title>Наш человек в MapBox</title>
<guid isPermaLink="true">https://shtosm.ru/all/nash-chelovek-v-mapbox/</guid>
<link>https://shtosm.ru/all/nash-chelovek-v-mapbox/</link>
<pubDate>Mon, 28 Oct 2013 19:24:57 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/nash-chelovek-v-mapbox/</comments>
<description>
&lt;p&gt;Сегодня Том Макрайт в третьей подряд заметке блога MapBox про найм талантливых сотрудников опубликовал &lt;a href="https://www.mapbox.com/blog/vladimir-agafonkin-joins-mapbox/"&gt;фотографию и имя&lt;/a&gt; Владимира Агафонкина, автора Leaflet. Как известно, у компании есть своя библиотека MapBox.js (недавно вышла &lt;a href="https://www.mapbox.com/blog/mapboxjs-140/"&gt;версия 1.4&lt;/a&gt;), надстройка над Leaflet с приятными плагинами для работы с сервисами компании. Теперь, с приходом Владимира, они вдвое больше джаваскрипта запасут.&lt;/p&gt;
&lt;p&gt;До выхода очередной версии лифлета, если посмотреть на &lt;a href="https://github.com/Leaflet/Leaflet/blob/master/CHANGELOG.md"&gt;историю&lt;/a&gt;, остался где-то месяц. Это ненормально, что признаёт и автор: из-за редких релизов пользователи библиотеки месяцами сидят без исправлений ошибок. Одна из причин откладывания версии 0.7 — список исправлений слишком длинный для новой минорной версии (0.6.5), но короткий для мажорной. Такой принцип теряет смысл: библиотека стабильнее с каждым днём, и скоро наполнение ченджлога затянется на год. Поэтому после выпуска новой версии Владимир планирует ускорить цикл релизов и не ждать «подходящего момента».&lt;/p&gt;
&lt;p&gt;Конечно, его вклад в картографические приложения не ограничивается Leaflet: во время работы в Cloudmade Владимир в команде из двух человек писал &lt;a href="http://wiki.openstreetmap.org/wiki/Mapzen"&gt;Mapzen&lt;/a&gt;, на то время один из лучших веб-редакторов карты. Редактор ограничений поворотов, до сих пор не превзойдённый по наглядности и удобству, — его рук дело. Проект прожил всего год, и был открыт под GPL v2, но сейчас можно найти только заброшенный порт на странный язык Haxe. Опыт разработки редактора, наверняка, пригодится Владимиру после его неминуемого назначения в группу поддержки iD.&lt;/p&gt;
&lt;p&gt;В MapBox странным образом накапливаются гитаристы: Том Макрайт играет в группе Teen Mom, Артём Павленко когда-то выступал с Гариком Сукачёвым, а Владимиру удалённый режим работы позволит не отрываться от своей рок-группы &lt;a href="http://rain.in.ua/ru.html"&gt;Обійми Дощу&lt;/a&gt;, слайдом со ссылкой на невероятно длинные песни которой он заканчивает каждую презентацию Leaflet.&lt;/p&gt;
</description>
</item>

<item>
<title>Вечно молодой, вечно 0.x</title>
<guid isPermaLink="true">https://shtosm.ru/all/leaflet-0-6/</guid>
<link>https://shtosm.ru/all/leaflet-0-6/</link>
<pubDate>Thu, 27 Jun 2013 00:07:08 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/leaflet-0-6/</comments>
<description>
&lt;p&gt;Казалось, этим летом новая версия Leaflet не выйдет: новые тикеты появлялись быстрее, чем закрывались старые. Но пару дней назад Владимир выбрал из них самые важные, поставил майлстоун, и в течение двухдневного марафона, организованного MapBox, с помощью других программистов эти тикеты уничтожил. Несколько часов назад &lt;a href="http://leafletjs.com/2013/06/26/leaflet-0-6-released-dc-code-sprint-mapbox.html"&gt;Leaflet 0.6 вышел&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;В блоге автору традиционно нечем хвастаться: в недавней &lt;a href="https://speakerdeck.com/mourner/leaflet-past-present-future"&gt;презентации&lt;/a&gt; он видит будущее библиотеки в урезании функциональности. Точнее, в выносе её в библиотеки: так, всё редактирование перекочевало в &lt;a href="https://github.com/Leaflet/Leaflet.draw"&gt;Leaflet.draw&lt;/a&gt;. Узнать новую версию Leaflet можно по слегка несуразным кнопкам масштабирования и отсутствию «Powered by» в правом нижнем углу. &lt;a href="https://github.com/Leaflet/Leaflet/blob/master/CHANGELOG.md"&gt;Список изменений&lt;/a&gt; содержит сотни уничтоженных багов и улучшений API. Когда-то этот файл был для меня бессмысленным набором слов, но стоило использовать библиотеку в нескольких своих проектах (советую взглянуть на &lt;a href="http://textual.ru/lk130518/"&gt;фотоальбом&lt;/a&gt;), как его пункты стали вызывать реакцию «почему это не сделали раньше». OpenLayers окончательно умер для пользовательской картографии: удастся ли третьей версии вернуть ему актуальность?&lt;/p&gt;
</description>
</item>

<item>
<title>Осмерский улей</title>
<guid isPermaLink="true">https://shtosm.ru/all/osmerskiy-uley/</guid>
<link>https://shtosm.ru/all/osmerskiy-uley/</link>
<pubDate>Sat, 04 May 2013 09:57:58 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/osmerskiy-uley/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://shtosm.ru/pictures/hexmap.gif" width="700" height="250" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Написав читалку потока диффов на javascript, Том Макрайт не устаёт экспериментировать с его визуализацией. На этот раз правки &lt;a href="http://osmlab.github.io/osm-fresh-hex/"&gt;распределены по сотам&lt;/a&gt;: пара минут — и красивый скриншот для презентации охвата OpenStreetMap готов.&lt;/p&gt;
&lt;p&gt;До «&lt;a href="http://osmlab.github.io/show-me-the-way/"&gt;телевизора&lt;/a&gt;», кстати, добралась команда MapBox, и теперь он выглядит космически круто.&lt;/p&gt;
</description>
</item>

<item>
<title>Прямой эфир III</title>
<guid isPermaLink="true">https://shtosm.ru/all/pryamoy-efir-iii/</guid>
<link>https://shtosm.ru/all/pryamoy-efir-iii/</link>
<pubDate>Mon, 15 Apr 2013 10:40:33 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/pryamoy-efir-iii/</comments>
<description>
&lt;p&gt;Ежеминутные дополненные диффы от Overpass API пока используют по одному и тому же назначению: визуализируют правки. Свои подходы уже демонстрировали &lt;a href="http://shtosm.ru/all/javascript-pirozhki/"&gt;Том Макрайт&lt;/a&gt; и &lt;a href="http://shtosm.ru/2013/03/11/1/"&gt;Норберт Реннер&lt;/a&gt;, но только сейчас Айан Диис сделал &lt;a href="http://osmlab.github.io/show-me-the-way/"&gt;копию «телевизоров»&lt;/a&gt; гугля и яндекса. Это было несложно: достаточно взять готовые слой Bing и читалку диффов на javascript. Каждый день появляются новые инструменты для обработки данных OSM, и из них можно составить всё больше удивительных приложений.&lt;/p&gt;
</description>
</item>

<item>
<title>Данные без базы</title>
<guid isPermaLink="true">https://shtosm.ru/all/data-without-base/</guid>
<link>https://shtosm.ru/all/data-without-base/</link>
<pubDate>Thu, 04 Apr 2013 23:28:36 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/data-without-base/</comments>
<description>
&lt;div class="e2-text-calliope-formatted"&gt;Michal Migurski уже месяц &lt;a href="http://mike.teczno.com/notes/postgreslessness-mapnik-vectiles.html"&gt;работает&lt;/a&gt; над избавлением картографов от необходимости ставить PostgreSQL, импортировать планету и настраивать репликацию: вместо этого он предлагает задействовать плагин к Python Datasource для мапника, скачивающий данные тайлами в &lt;a href="http://tilestache.org/doc/TileStache.Goodies.VecTiles.mvt.html"&gt;бинарном формате MVT&lt;/a&gt; (Mapnik Vector Tiles). Позавчера он делал &lt;a href="http://mike.teczno.com/img/Geomeetup-slides-2013-04.pdf"&gt;доклад&lt;/a&gt; на конференции GeoMeetup, где упомянул, что сервер тайлов &lt;a href="http://www.openstreetmap.us/~migurski/vector-datasource/"&gt;уже работает&lt;/a&gt;. Он выдаёт четыре слоя — дороги, их названия, землепользование и водоёмы. Испытав свой плагин, Michal заметил, что большая времени уходит на скачивание тайла: впрочем, едва ли кто оставит этот источник данных после отладки стиля.&lt;br /&gt;&lt;br /&gt;Впервые тему векторных тайлов поднял OJW &lt;a href="http://lists.openstreetmap.org/pipermail/talk/2008-May/026811.html"&gt;пять лет назад&lt;/a&gt;. Изначально он хотел выдавать куски OSM по запросу: в то время планета весила в семь раз меньше, и это можно было считать разумным. В 2011 году идею разрезания данных на квадраты &lt;a href="http://shtosm.ru/2011/09/27/2/"&gt;оживили&lt;/a&gt; в OSMT — но ненадолго, на пару дней. Единственным проектом, который использует тайлы не в формате json, остался &lt;a href="http://www.opensciencemap.org/"&gt;OpenScienceMap&lt;/a&gt;: картографическое приложение для Android непонятного назначения. И ещё у Cloudmade есть &lt;a href="http://developers.cloudmade.com/wiki/vector-stream-server"&gt;тайлы в SVG&lt;/a&gt;: когда-то, наверное, этот формат считался перспективной заменой растровым.&lt;br /&gt;&lt;br /&gt;Самыми известными векторными тайлами остаются GeoJSON-тайлы для &lt;a href="http://shtosm.ru/2011/06/11/1/"&gt;Kothic JS&lt;/a&gt;: написав в 2011 году их рендерер на JavaScript, Komяpa качественно удивил сообщество. Увы, несмотря на оптимизм программистов, плодами работы стали лишь зависшие багрепорты для основных браузеров, несколько слайдов, демонстрирующих мощь русскоязычных программистов, и &lt;a href="https://github.com/mdaines/ceramic"&gt;генератор тайлов&lt;/a&gt;, написанный в рамках Google Summer of Code прошлого года. Месяц назад, после долгого перерыва, гитхабовские репозитории сервера и библиотеки неожиданно активизировались: возможно, мы всё-таки увидим настоящий проект на основе Kothic JS.&lt;/div&gt;</description>
</item>

<item>
<title>JavaScript-пирожки</title>
<guid isPermaLink="true">https://shtosm.ru/all/javascript-pirozhki/</guid>
<link>https://shtosm.ru/all/javascript-pirozhki/</link>
<pubDate>Thu, 28 Mar 2013 09:23:09 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/javascript-pirozhki/</comments>
<description>
&lt;p&gt;Том Макрайт, один из разработчиков редактора iD, вытаскивает из последнего маленькие полезные фрагменты кода в отдельные библиотеки и публикует их &lt;a href="https://github.com/osmlab"&gt;на гитхабе&lt;/a&gt;. Из заметного:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;реализация &lt;a href="https://github.com/osmlab/ohauth"&gt;OAuth&lt;/a&gt; и основывающаяся на ней библиотека &lt;a href="https://github.com/osmlab/osm-auth"&gt;аутентификации в OSM&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;модуль для работы с &lt;a href="https://github.com/osmlab/osm-gpx"&gt;базой GPS-треков&lt;/a&gt; и плагин &lt;a href="https://github.com/osmlab/osm-gpx-tile"&gt;GPX-тайлов&lt;/a&gt; для лифлета (&lt;a href="http://macwright.org/gpstile/#14/51.1118/40.2918"&gt;пример&lt;/a&gt;);&lt;/li&gt;
&lt;li&gt;библиотека для &lt;a href="https://github.com/osmlab/osm-stream"&gt;подключения к потоку&lt;/a&gt; дополненных диффов и почему-то включающая её методом копипасты страница с &lt;a href="https://github.com/osmlab/osm-live-map"&gt;отображением свежих правок&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>

<item>
<title>Очеви</title>
<guid isPermaLink="true">https://shtosm.ru/2013/03/11/1/</guid>
<link>https://shtosm.ru/2013/03/11/1/</link>
<pubDate>Mon, 11 Mar 2013 10:42:07 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/2013/03/11/1/</comments>
<description>
&lt;div class="e2-text-calliope-formatted"&gt;&lt;img src="https://shtosm.ru/pictures/achavi.gif" alt="" width="700" height="250" /&gt;&lt;br /&gt;&lt;br /&gt;Разбор OSM XML в браузере — новый тренд этого года. На этот раз парсер писал Норберт Реннер — для &lt;a href="http://wiki.openstreetmap.org/wiki/Achavi"&gt;Achavi&lt;/a&gt;, визуализатора потока дополненных диффов от Overpass API. Если нажать «live», сайт начнёт ежеминутно опрашивать сервер и показывать, что в мире изменилось. Минут через десять данных станет так много, что всё начнёт тормозить и глючить, но на то и альфа-версия.&lt;br /&gt;&lt;br /&gt;Мысль научить Rails Port выдаче JSON приходила многим. Только в октябре Том Макрайт &lt;a href="http://lists.openstreetmap.org/pipermail/dev/2012-October/025742.html"&gt;упомянул&lt;/a&gt; её в числе задач для MapBox. Пол Хартман традиционно ответил ссылкой на коммит 2010 года, добавляющий JSON в cgimap. Формат сейчас отключен, конечно. Первый раз поддержкой формата озаботился Джеффри Уоррен за год до того коммита: он &lt;a href="http://unterbahn.com/2009/07/serving-osm-json-alongside-xml-from-the-openstreetmap-rails-port/"&gt;дописал&lt;/a&gt; свой экземпляр Rails Port, но к тому времени в SVN уже рос cgimap, и правки были неактуальны.&lt;/div&gt;</description>
</item>


</channel>
</rss>