/ / Optymalizacja rysowania mapy - c #, mapa, gdi +, rysunek, punkty

Optymalizacja rysunku mapy - c #, mapa, gdi +, rysunek, punkty

Mam problem z optymalizacją rysowania mapy podobnej do Google. Działa OK dla setek punktów, ale jeśli chodzi o większe ilości, takie jak tysiące, robi się niewyraźny i powolny. Również unzoomed wygląda dziwnie.

Chciałbym wiedzieć, jak zoptymalizować algorytm rysowania w celu narysowania mniejszej liczby miejsc, aby wyglądało to tak, jakby nie wyświetlało się w Mapach Google.

Jednak również rysuję linki między miejscamii nie mogę tego zoptymalizować.

Proszę, opublikujcie cokolwiek tylko wymyślicie, muszę to zakończyć i wysłać jutro.

Oto jak to wygląda:

zbliżony pomniejszony

Odpowiedzi:

0 dla odpowiedzi № 1

Myślę, że pokusiłbym się nie rysować tegosą krótsze niż próg (i mam na myśli to w kategoriach widoku, a nie bezwzględnych odległości). Oznacza to, że gdy mapa jest pomniejszona, będziesz musiał mniej rysować, a mapa będzie wyglądać mniej zajęta, a gdy mapa zostanie powiększona, linie między tymi pobliskimi punktami staną się widoczne. Edycja: myśląc o tym trochę więcej, myślę, że zastosowałbym to ograniczenie długości tylko wtedy, gdy na ekranie jest duża liczba linii - lub ustawiłbym próg długości jako funkcję liczby linii na ekranie.

Myślę, że pokusiłbym się nie rysować liniiktóre pochodzą z punktów, które znajdują się poza ekranem (poza rzutnią) lub przynajmniej całkiem daleko od ekranu (próg od centrum rzutni). Sugerowałbym najpierw wypróbowanie tej zmiany.

Zmiany te mogą wydawać się ukrywać informacje (i będą), ale na obecnym etapie mapa jest tak zajęta, że ​​przedstawione informacje i tak są prawie bezużyteczne.


1 dla odpowiedzi nr 2

Oto dwa pomysły:

  1. Każdy obiekt, który rysujemy na mapie, ma dodatkową wartość w bazie danych, „Poziom powiększenia”. Podczas powiększania wyświetlane będą dodatkowe elementy na podstawie tej wartości.

  2. Drugim sposobem na to jest grupowanie. Jeśli elementy zaczynają się nakładać, pokaż jeden punkt z [10 elementów]. Pokaż tylko elementy znajdujące się pod nim podczas powiększania.


0 dla odpowiedzi № 3

kilka wskazówek:

  1. obszar wycięcia, aby narysować punkty tylko w obszarze wycięcia
  2. możesz sprawdzić projekt GIS opensource, zobaczyć, jak optymalizują rysunek.