/ / Оптимізація малювання карти - c #, map, gdi +, малюнок, точки

Оптимізація малювання карти - c #, map, gdi +, малюнок, точками

У мене проблеми з оптимізацією малювання карти, подібної Google. Він працює нормально на сотні очок, але коли мова йде про більші суми, як тисячі, він стає нечітким і повільним. Також непомітно це виглядає дивно.

Мені б хотілося знати, як оптимізувати алгоритм малювання, щоб намалювати менше місць, щоб це виглядало як невисокий розмір на Google Maps.

Однак я також малюю зв’язки між місцями, і я не можу це оптимізувати.

Будь ласка, опублікуйте все, що ви можете придумати, я повинен закінчити це і надіслати завтра.

Ось як виглядає:

збільшений зменшено

Відповіді:

0 для відповіді № 1

Думаю, я б спокусився не промальовувати цекоротші за поріг (і я маю на увазі це з точки зору вікна перегляду, а не абсолютної відстані). Це означає, що при зменшенні масштабу карти вам доведеться менше малювати, і карта буде виглядати менш зайнятою, і коли карта буде масштабуватися в лініях між цими сусідніми точками, вони стануть видимими. Редагувати: насправді, подумавши про це ще раз, я думаю, я застосував би це обмеження довжини лише тоді, коли на екрані є велика кількість рядків - або зробимо поріг довжини функцією кількості рядків на екрані.

Думаю, я також спокусився б не малювати лініївід пунктів, які перебувають поза екраном (поза вікном перегляду) або, принаймні, зовсім від екрану (поріг від центру огляду). Я б запропонував спершу спробувати цю зміну.

Ці зміни можуть здатися, що вони приховуватимуть інформацію (і вони будуть), але, як це виглядає, карта настільки зайнята цією інформацією, яка в будь-якому разі є марною.


1 для відповіді № 2

Ось дві ідеї:

  1. Кожен об’єкт, який ми малюємо на карті, має додаткове значення в базі даних, "Рівень масштабування". При збільшенні додаткових елементів буде показано виходячи з цього значення.

  2. Другий шлях до цього - використовувати групування. Якщо елементи починають перетинатися, показуйте одну точку з [10 предметів]. Показуйте елементи під ним лише під час збільшення.


0 для відповіді № 3

деякі підказки:

  1. область кліпу, щоб намалювати точки лише в області кліпу
  2. Ви можете перевірити відкритий код GIS-проекту, подивитися, як вони оптимізують малювання.