Ну как же без шума? Довольно широко обсуждалось в списках рассылки (хотя они слабо интересуют обычных участников), плюс новость на штосме. Время генерации тайлов зависит от браузера, в опере всё довольно шустро.
Я помянул отсутствие не шума вообще, а только «особого шума», под которым понимаю появление блогозаписи на Хабрахабре или другое событие сходных масштабов информационного резонанса.
Поздравляю!!! Теперь есть клиент и MapCSS может стать стандартом :)
Пару вопросов:
— раскажите reprpoint — это опорная точка объекта (почему не взята просто точка тайла)?
— properties — это просто набор osm тэгов объекта?
— поддерживаются мультиполигоны или хотя бы coastline?
— ради интереса если сжать эти данные в какой-то бинарный формат сколько получится разница по сравнению с osm pbf?
P. S.: это точно прорыв, осталось дождаться различных красивых стилизаций карты (ночной, для автомобиля) :)
reprpoint — точка, в которой надо рисовать иконку. Если полигон большой, то в тайл может попасть только его маленький кусочек — иконку не надо рисовать несколько раз в разных тайлах. Ну и кроме того, у полигонов вида «бублик» эта точка должна лежать не в дырке, а на самом полигоне.
properties — просто теги. Название позаимствовано из geojson.
Мультиполигоны поддерживаются.
coastline нарезается как полигон natural=coastline.
В JS ничего быстрее json.gz нету, весить будет точно больше — данные на разных зумах повторяются, пусть и с генерализацией. Зато выборка однозначно на порядок быстрее.
А рендереров для MapCSS навалом же. Kothic, Halcyon, JOSM, Komap/Mapnik, ceyx,…
Kothic JS может работать самостоятельно, просто мне как принимающему участие в разработке и Leaflet и Kothic JS было очень логично их интегрировать в демонстрационных целях. :)
Все замечательно. Красиво и опрятно. Но с такой скоростью отрисовки многие пользователи будут просто покидать сайт не дождавшись загрузки очередного слоя.
Возможно я один такой, но не думаю.
Севастополь, SevStar 20Mbps
AMD Athlon II X2 2.9
2GB RAM
Машинка может и не совсем новая, но в данном случае не справляется.
Можно скриншоты в Хроме/Фоксе/Опере/IE9, с открытой картой и отрисованным на правой панельке временем рендерина?
У меня аналогичная машина, больше 1-3с редко когда бывает.
А ведь конкретно просил скриншот, а не абстрактную копипасту абстрактных данных :)
Какой это браузер (судя по тормозам — фокс)? Какой размер экрана? (четыре тайла — уже как минимум 1280х1024).
Какая, в конце концов, операционная система?
Спасибо.
Похоже, у вас нашлись проблемы посерьёзнее — на надписях отсутствует полужирный, и некоторые буквы как-то странно обрезаны.
Посмотреть, как оно «могло бы» выглядеть, можно, нажав кнопку «Compare with Mapnik».
Учтите, что это пока не рекомендуемое решение для онлайн-карт, а proof of concept «на вырост» — браузеры по скорости быстро подтянутся, а разрабатывать библиотеку надо начинать уже сейчас. :) Тем более что скажем в Хроме, IE9, FF4 производительность вполне неплохая.
Первый шаг сделан, поздравляю!
Надеюсь когда-нибудь это будет также летать, как векторные google maps v5 на android.
Потребуется и сжатый бинарный формат (чтобы зря не расходовать трафик на текстовые вектора).
Для ускорения вывода можно и WebGL попробовать.
Кстати, здесь недавно был анонс мобильного приложения, которое тоже отображало osm в векторах, решив проблему избыточных данных, возможно стоит совместно выработать единый формат. Потому что рендеринг в браузере — это хорошо, но более приготовые данные отоборажались бы намного быстрее.
Данные в тайлах уже приготовлены, и в .js с gzip-сжатием уже весят значительно меньше аналогичных .png.
Основная проблема — тормознутый рендеринг самих браузеров, в основном — отрисовка текста.
WebGL на двухмерных данных, а тем более на тексте, не сильно поможет, если не помешает.
Сравнивал с SVG по скорости? Если в эти тайтлы положить уже готовые векторные svg?
p.s. да, js пока для этого тормозной, и binary arrays тоже пока тормозные — blog.n01se.net/?p=248. Думаю на silverlight летало бы, если даже обычные png тайтлы там очень плавные и быстрые — www.bing.com/maps/explore/.
js сам по себе очень шустр — применение стилей и js занимает сотни миллисекунд, там оптимизировать нечего и незачем.
Тормозит конкретно отрисовка текста. Спросить у браузера ширину сотни букв — и уже набегает полсекунды. Нарисовать те же сотню букв — в хроме займёт секунду, в фоксе все пять. Это надо фиксить разработчикам браузеров, изнутри js с этим ничего не сделаешь. Точка.
Силверлайт — проприетарная технология, в связи с этим абсолютно неинтересная. На хабре уже от флеша плюются, а флеш и тот текст на порядок шустрее браузеров рисует :)
Но на флэше я например никогда таких быстрых карт, как по ссылке выше, не видел. Да и на js не видел, до появления GPU-ускорения в IE9 и FF4.
Может рендерит буквы в кэш-буфер, и уже затем битмэпом их выводить? Здесь же не сто разных шрифтов используется.
Спрашивать ширину у браузера как я понимаю нужно только в случае полноценного рендера. Если просчитать всё это заранее на сервере, то и опрашивать ширину букв уже ведь и не нужно?
Сравнить с svg всё же было бы интересно.
Если сосчитать всё на сервере, то зачем нам вообще рендеринг на клиенте? Тут как раз вся соль в том, что можно нарисовать всё разными стилями.
Рисовать мелкие повёрнутые надписи картинками… ребята, которые делают виндовый Сафари, так и делают. Рекомендую в нём посмотреть osmosnimki.ru/kothic/text-rotate — там забавные артефакты местами :)
SVG — не сравнивал и не хочу, смысла в нём для карт ноль, разве что для печати.
А про скорость — вот, три дня прошло от первого тикета в Хромовскую багзиллу, и Kothic JS в последних билдах у меня уже отрисовывается мгновенно. Пруфскриншот.
Так что рекомендую попинать всех знакомых и незнакомых разработчиков браузеров в багзиллы, авось подтянутся и тоже ускорятся :)
Ну если не считать ничего на сервере, тогда пускай оно тянет сразу из planet.osm в реальном времени :)
Кстати, можно кэшировать сгенерированные ранее тайтлы на клиенте, чтобы они каждый раз не просчитывались при прокрутке карты или масштабировании.
А код библиотеки открыто лежит на гитхабе, github.com/kothic/kothic-js — мы всегда рады Pull Request'ам с исправлениями и доработками в области быстродействия.
Или, в качестве временного решения (пока браузеры затыкают дыры), flashcanvas? Если флеш быстрее рендерит текст. Он, правда, в оригинале только для IE, но, наверное, можно и в других браузерах завести.
Спустя столько лет стоит сказать о прогрессе:
maps.me (mapswithme) для мобильных стал чуть ли не самым известным в мире проектом с osm в основе
www.youtube.com/watch?v=lj4SS1NTqyY — появился www.mapbox.com/mapbox-gl-js/examples с webgl на клиенте
Kothic JS: рендерер OpenStreetMap, поддерживающий MapCSS/0.2, портировали на джаваскрипт, рисующий по холсту