Hio.
Ich bin gerade am Programmieren (ohh mein Deutschlehrer wird sich freuen, wenn er das liest) einer Karte, die GPS-Koordinaten (mit GPS mein ich das Global Positioning System) visualisiert.
Mein jetziges Vorgehen zum Zeichnen der Karte sieht so aus:
1. (Koordinatenpositionen in meinem virtuellen Koordinatensystem evtl. updaten (wenn sich z.B. die Skalierung der Karte geändert hat))
2. Koordinaten über eine Schleife alle zeichnen
3. Verbindungslinien zu den Koordinaten zeichnen (2. und 3. ist nicht gerade der Performancebrüller, aber ich muss meine Karte maximal nur 1x pro Sekunde neu zeichnen, dann ist das noch okay.)
4. Restliche Infos zeichnen (wie einen Maßstabbalken, aktuelle Position, et cetera).
5. Aktuelle Position und Richtung als kleines spitzes Dreieck zeichnen.
Damit ist die Karte gezeichnet. So jetzt meine erste Frage: Ist mein bisheriges Vorgehen so okay? Oder kann man das noch anders machen?
Jetzt zu meiner nächsten Frage.
Nach dem 5. Punkt aus der Liste oben, werden die Tools eingezeichnet (wenn sie aktiviert sind). Ein Beispiel für ein solches „Tool“ wäre z.B. ein Lineal mit dem man Entfernungen auf der Karte messen kann. Dieses Lineal wird dann über alles Bisherige drüber gezeichnet. Und da ist jetzt das Problem (und das ist nicht nur, nur bei diesem Tool so). Das Lineal funktioniert nämlich so: Man klickt auf eine Stelle in der Karte. Eine Markierung wird dann an dieser Stelle gezeichnet und wenn man nun den Cursor bewegt, wird eine Verbindungslinie von der Markierung zum Cursor gezeichnet. Das sollte recht flüssig laufen, sonst sieht’s so aus, als wäre der Rechner völlig überlastet. Um dieses „Stacksen“ wegzubekommen, zeichne ich meine Karte jedes Mal neu, wenn sich der Cursor bewegt. Das Problem ist nur, dass das dann ziemlich auf die Performance geht (2,8 GHz Prozessor 100 % ausgelastet ). Eigentlich müsste ja nur das Lineal neu gezeichnet werden, nicht aber die ganze Karte. Was kann ich hier machen?
Ich wäre für jede Hilfe dankbar. Den Sourcecode kann ich im Moment leider noch nicht veröffentlichen, da es sich im Moment noch um ein geschlossenes Projekt handelt. Ich werde hier aber auf jeden Fall dann den Link zu der Projektseite bekannt geben – wenn es mal so weit ist .
Gruß
Lutz
Ich bin gerade am Programmieren (ohh mein Deutschlehrer wird sich freuen, wenn er das liest) einer Karte, die GPS-Koordinaten (mit GPS mein ich das Global Positioning System) visualisiert.
Mein jetziges Vorgehen zum Zeichnen der Karte sieht so aus:
1. (Koordinatenpositionen in meinem virtuellen Koordinatensystem evtl. updaten (wenn sich z.B. die Skalierung der Karte geändert hat))
2. Koordinaten über eine Schleife alle zeichnen
3. Verbindungslinien zu den Koordinaten zeichnen (2. und 3. ist nicht gerade der Performancebrüller, aber ich muss meine Karte maximal nur 1x pro Sekunde neu zeichnen, dann ist das noch okay.)
4. Restliche Infos zeichnen (wie einen Maßstabbalken, aktuelle Position, et cetera).
5. Aktuelle Position und Richtung als kleines spitzes Dreieck zeichnen.
Damit ist die Karte gezeichnet. So jetzt meine erste Frage: Ist mein bisheriges Vorgehen so okay? Oder kann man das noch anders machen?
Jetzt zu meiner nächsten Frage.
Nach dem 5. Punkt aus der Liste oben, werden die Tools eingezeichnet (wenn sie aktiviert sind). Ein Beispiel für ein solches „Tool“ wäre z.B. ein Lineal mit dem man Entfernungen auf der Karte messen kann. Dieses Lineal wird dann über alles Bisherige drüber gezeichnet. Und da ist jetzt das Problem (und das ist nicht nur, nur bei diesem Tool so). Das Lineal funktioniert nämlich so: Man klickt auf eine Stelle in der Karte. Eine Markierung wird dann an dieser Stelle gezeichnet und wenn man nun den Cursor bewegt, wird eine Verbindungslinie von der Markierung zum Cursor gezeichnet. Das sollte recht flüssig laufen, sonst sieht’s so aus, als wäre der Rechner völlig überlastet. Um dieses „Stacksen“ wegzubekommen, zeichne ich meine Karte jedes Mal neu, wenn sich der Cursor bewegt. Das Problem ist nur, dass das dann ziemlich auf die Performance geht (2,8 GHz Prozessor 100 % ausgelastet ). Eigentlich müsste ja nur das Lineal neu gezeichnet werden, nicht aber die ganze Karte. Was kann ich hier machen?
Ich wäre für jede Hilfe dankbar. Den Sourcecode kann ich im Moment leider noch nicht veröffentlichen, da es sich im Moment noch um ein geschlossenes Projekt handelt. Ich werde hier aber auf jeden Fall dann den Link zu der Projektseite bekannt geben – wenn es mal so weit ist .
Gruß
Lutz