Re: Как рендерят огромные карты?
От: gyraboo  
Дата: 08.07.20 12:47
Оценка: 9 (2)
Здравствуйте, Homunculus, Вы писали:

H>У меня есть гигантская детализированная SVG карта города. Размером около 1.5 гигов.

H>Ясно, что и загрузка и рендеринг занимает кучу времени. Надо оптимизировать.

H>Как рендерят большие карты?


В SVG пространственные данные обычно не хранят. Лучше использовать специализированные форматы данных, особенно если город географически большой по размеру (чтобы учесть широту и долготу и текущую проекцию, т.к. проекции есть разные, и нужно понимать в какой именно проекции была изначальная переведенная в svg карта, если это не учитывать то рано или поздно появятся трудноуловимые и труднопонимаемые баги с нарушением координат).

Как рендерить, можно посмотреть опенсорсный GeoServer (это сервер, написанный на Java, который как раз умеет рендерить большие карты) + OpenLayers (это клиентская библиотека, которая позволяет рисовать карты, отдаваемые тем же GeoServer, в браузере).
У него есть несколько способов, но все они завязаны на тайловую структуру, т.е. карта всегда бьется на куски, причем на разных масштабах, и эти тайлы отдаются клиенту.
Отдаются клиенту тайлы либо в виде векторных (тут уже SVG можно использовать), либо растровых изображений. Их как правило кешируют, сервер делает это и на своей стороне, и клиент также может их кешировать у себя.
Отредактировано 08.07.2020 12:57 gyraboo . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.