А зачем рендерить надписи? пускай рендерная подложка будет без надписей, а надписи отображать сверху в динамическом слое! и не надо тысячу рендеров тогда.
браузером рендерить чтоли?
на карте ж не просто текст
во-первых, его края качественно сглажены
во-вторых, вокруг многих надписей полупрозрачный ореол
в-третьих, чтобы текст повторял контур улиц, он должен быть корректно искривлён
в-четвёртых, для текста нужна хорошая поддержка Юникод, как на уровне шрифта, так и на уровне рендера
всё это сделать на стороне клиента не так уж и просто, особенно учитывая вопросы совместимости
Так можно текст накладывать вторым слоем .PNG тайлов
но их ведь всё равно надо чем-то отрендерить и где-то хранить
и если позволить юзеру задавать языки списком (Ru, Uk, En, default), то требуемых комбинаций для рендера будет бесконечное количество
приводили же пример рендера с задаваемым приоритетом языка именований. урл только вспомнить не могу.
наложить поверх без-name-овой карты и юзать в свое удовольствие.
в начале темы как раз эта ссылка и есть
проблема в тормозах и глюках, из-за которых такой вариант не годится для каждодневного использования
Только рендерить браузером.
Ничего плохого в этом нет, к этому нужно стремиться — данные на сервере, представление на клиенте.
Гугл со своими векторными гипертекстовыми картами так и делает, НЯП. Поэтому они так тормозят.
А Яндекс использует смешанный вариант, часть рендерится на сервере, часть на клиенте.
И что?
во-первых, его края качественно сглажены
https://developer.mozilla.org/ru/docs/Web/SVG/Attribute/shape-rendering
http://stackoverflow.com/questions/22161624/how-to-render-svg-elements-with-crisp-edges-while-still-keeping-anti-aliasing
во-вторых, вокруг многих надписей полупрозрачный ореол
https://developer.mozilla.org/ru/docs/Web/SVG/Attribute/stroke-opacity
в-третьих, чтобы текст повторял контур улиц, он должен быть корректно искривлён
Что значит “корректно искривлён”? Как реальном мире - так и на экране.
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath
в-четвёртых, для текста нужна хорошая поддержка Юникод, как на уровне шрифта, так и на уровне рендера
всё это сделать на стороне клиента не так уж и просто
Конечно не просто. Уже сделано 10 лет назад.
Если кто-то не осиливает суровый SVG, то для эникейщиков с хабра написали http://d3js.org/. Ей тоже уже 4 года. На ней УЖЕ написан редактор (а не тупая рендерилка): iD. Многоязычный редактор. Использующий overpass-api как бекэнд. Фильтрующий данные на низких зумах.
А Яндекс использует смешанный вариант, часть рендерится на сервере, часть на клиенте.
Так я это и имел ввиду - леса, поля, домики пускай рендеряться заранее, тексты и пои прямо в браузере с возможностью динамически переключить язык и фильтровать пои. Почему это не сделают на главной странице osm? неужели при вводе данных в базу никому не надо посмотреть как будет выглядеть карта на другом языке?
Почему это не сделают на главной странице osm?
А почему вы не заработаете миллиард долларов?
Этим надо заниматься, а никто не занимается, т.к. никто не обязан этого делать.
Так я это и имел ввиду - леса, поля, домики пускай рендеряться заранее, тексты и пои прямо в браузере с возможностью динамически переключить язык и фильтровать пои. Почему это не сделают на главной странице osm? неужели при вводе данных в базу никому не надо посмотреть как будет выглядеть карта на другом языке?
Меньшинству - нужно. Меня устраивают надписи на местном языке на http://tile.openstreetmap.org/. В Японии - на японском, очень логично.
Выучить местные правила произношения куда полезнее чем иметь надписи на вашем родном языке (не уместном в этой местности) и не уметь сказать ни слова на местном языке в реальном мире.
никому не надо посмотреть как будет выглядеть карта на другом языке?
И какой толк? Местному жителю вы что скажете? Куда ткнёте пальцем?
http://wiki.openstreetmap.org/wiki/Map_internationalization
http://nomino.openstreetmap.fr/
http://developer.skobbler.de/mapcreator
Мы для питерского портала общественного транспорта делали поддержку 3-х языков.
В принципе - ничего сложного, просто места нужно больше.
Применимость этого ограничена людьми не способными произнести названия на местном языке. Да, такие люди есть. Увеличивать затраты на память только потому что кто-то не умеет сказать несколько надписей на одном из 200 языков… Не оправдано, местного языка почти всегда достаточно. Кроме территорий с несколькими языками. Как произнесённое вслух “Saint Peterburg” поможет вам задать вопрос Ивану?
Пока кто-то сидит в автомобиле и слушает инструкции на английском как свернуть в Kolpino это работает.
Я не хочу видеть как питер выглядит на японском, нет. Не показывайте мне карты с японскими надписями когда спрашиваете вопрос. Я буду отвечать вам на русском, на котором вы даже название сказать не в состоянии. Вам питер нужно иероглифами написать чтобы вы хоть слово сказали. Я не знаю японское письмо и произношение.
Английский вторым языком ещё куда ни шло, дальше - смысла нет. Языков далеко не 200. Это Википедию успели только на 200 перевести.
Более того языки географичны.
Если кто-то не осиливает суровый SVG…
SVG каждый браузер рендерит по-своему.
http://www.w3schools.com/svg/tryit.asp?filename=trysvg_text2
Для каких-то применений это может быть незначимой мелочью.
На карте же от этого зависит очень важная вещь - сможет прочесть пользователь конкретную надпись или нет.
каждый браузер рендерит по-своему.
Да. И что?
Каждая система имеет свою графическую подсистему (directx vs opengl).
У них есть версии. Все версии разные и путать их нельзя.
Каждая видеокарта/чип будет исполнять инструкции по своему (ati vs nvidia vs что-там-на-андроидах)
У вас есть хоть какая программа которая:
- будет учитывать физическое разрешение монитора / пикселя
- будет не зависеть от ОС
- будет не зависеть от версии графической подсистемы
- будет не зависеть от ошибок в железе
Для каких-то применений это может быть незначимой мелочью.
Нет, вы лучше скажите для каких применений это значительный недостаток, делающий SVG абсолютно нефункциональным.
На карте же от этого зависит очень важная вещь - сможет прочесть пользователь конкретную надпись или нет.
Вы недооцениваете когнитивные способности человека распознавать абстрактные объекты-образы.
Больше века кривой почерк врача читается, а машинный текст текст без пары пикселей как это нравится пользователю X сразу нечитаем. Все три надписи я прочитал, пикселей в них не отличал.
Больше века кривой почерк врача читается, а машинный текст текст без пары пикселей как это нравится пользователю X сразу нечитаем. Все три надписи я прочитал, пикселей в них не отличал.
решил проверить рендер SVG браузерами на реальном примере
признаю, нечитаемости достичь не удалось
однако эффекты в стиле “корявый почерк врача” получил в избытке:
в первом варианте буквы прыгают вверх-вниз (у_л_ица)
во втором варианте страдает кернинг (А_к_адемика)
в третьем - текст получился длиннее, чем надо
также все три варианта различаются толщиной текста
в итоге, раздражение пользователя получить можно, унифицированный дизайн - нет
в итоге, раздражение пользователя получить можно, унифицированный дизайн - нет
Кого это волнует? Не будем небоскрёбы строить потому что кто-то с них упасть может и убиться.
shape-rendering: geometricPrecision
text-rendering: geometricPrecision
https://developer.mozilla.org/ru/docs/Web/SVG/Attribute/shape-rendering
https://developer.mozilla.org/ru/docs/Web/SVG/Attribute/text-rendering
Как это похоже на баг репорт? В каком браузере у вас буквы “плясали”?Какая версия браузера? Какая система, версия?
http://stackoverflow.com/questions/7968795/is-it-safe-to-use-the-css-rule-text-rendering-optimizelegibility-on-all-text
http://aestheticallyloyal.com/public/optimize-legibility/
http://stackoverflow.com/questions/15385911/better-svg-rotated-text-rendering
А кто-нить пробывал казать OSM как SVG?
А кто-нить пробывал казать OSM как SVG?
http://wiki.openstreetmap.org/wiki/SVG
IMHO, для броузеров более перспективно делать на базе canvas: http://kothic.org/
А кто-нить пробывал казать OSM как SVG?
- Открываете http://www.openstreetmap.org
- Справа есть кнопка “поделиться”
- формат SVG
- ставим галочку “Выбрать размер вручную”
- рисуем прямоугольник где нужно
- нажимаем кнопочку “скачать”
http://wiki.openstreetmap.org/wiki/SVG#Ways_to_create_an_SVG_map_from_OpenStreetMap