Re: Как рендерят огромные карты?
От: Pzz Россия https://github.com/alexpevzner
Дата: 18.07.20 10:06
Оценка:
Здравствуйте, Homunculus, Вы писали:

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

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

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


Я бы, наверное, забыл на минутку, что у меня есть конкретный формат SVG, и считал бы, что у меня есть много-много векторов.

Всю-всю поверхность я бы разбил на клеточки, и в каждой клеточке хранил бы те вектора, которые с ней пересекаются (даже если они начинаются и кончаются в другой клеточке).

Для отрисовки, я бы грузил вектора из тех клеточек, которые попадают в окошко, убирал бы повторяющиеся вектора (они могут возникнуть, если какой-то вектор проходит через несколько клеточек), и дальше отрисовывал бы.

Исходный SVG надо один раз переработать, и хранить результат в виде, удобном для поклеточной загрузки. Например, в виде какой-то незамысловатой базы (напрашивается SQLite)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.