Laden...

Wie realisiert man die Bewegung der Karte von Navi Systemen?

Erstellt von Mr.Ed vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.502 Views
M
Mr.Ed Themenstarter:in
39 Beiträge seit 2006
vor 17 Jahren
Wie realisiert man die Bewegung der Karte von Navi Systemen?

Hallo,
ich spiel gerade ein wenig mit GPS Navigation und möchte ein einfaches Navi Programm schreiben bei der die aktuelle Position auf der Karte angezeigt wird (selbst eingescannte Karte von unserem Dorf). Soweit so gut, hab das ganze jedoch bisher immer nur mit einem kleinen Kartenausschnitt getestet, da die komplette Karte natürlich nicht auf dem PC Bildschirm passt.
Wie könnte man das ganze also lösen? Was ist zu tun?

Optisch gibts 2 Varianten:

  1. So wie bei TOMTOM, also die aktuelle position bleibt immer zentriert und die Karte bewegt sich.

  2. Die Karte bleibt starr und die aktuelle Position fährt über die Karte. Sobald sie den Rand der Karte erreicht hat wird eine neue Kachel geladen.

Ich hab ehrlich gesagt keine ahnung wie ich die beiden Versionen umsetzen soll. Mir geht es wirklich nur allein darum wie man eine große Karte passend aufsplitten kann.

Grüße Mr.ED

B
1.529 Beiträge seit 2006
vor 17 Jahren

Ich finde die erste Möglichkeit besser.
Begründung mal indirekt:
Wenn du die zweite Möglichkeit implementierst und nur am Rand eine neue Kachel einblendest, kann man nicht vorausschauend fahren. Also müsstest du den Wechsel bereits durchführen, bevor der Cursor am Rand angekommen ist. Das bedeutet aber, dass sich der Cursor immer nur über einen kleinen Bildausschnitt bewegt, der Hintergrund periodisch geändert wird und der Cursor springt.
Es ist leicht einzusehen, dass die andere Darstellungsvariante mit dem ruhenden Cursor und der sanft scrollenden Karte ruhiger wirkt, daher besser beobachtbar ist und durch die Ermöglichung einer vorausschauenden Fahrweise sicherlich insgesamt deutlich ergonomischer ist.

Da du mit einer gescannten Karte arbeitest, brauchst du doch bloß ausrechnen, bei welcher Pixelposition sich das Fahrzeug befinden würde und dann einen ausreichend großen Bereich um diese Position aus der Karte auf dem Bildschirm darstellen.
Dazu kannst du bei einigen die Überladungen von Graphics.DrawImage() angeben, welcher Bereich einer Bitmap gezeichnet werden soll.