Was hältst du davon:
Halte dir deine rohe Karte (besser gesagt den aktuellen Ausschnitt) im Programm in einer Variable vom Typ TBitmap (oder als irgendein anderes Format). Auf dein Form legst du dir eine Paintbox deren OnPaint-Ereignis du bedienst. In dem Moment, wo ein OnPaint nötig wird, lässt du eine Funktion losrennen, die eine Kopie von deinem Bitmap anlegt, alle nötigen Kreuze Punkte Wege, Kirchen
usw. einzeichnet und die bemalte Kopie per BitBlt in die PaintBox zeichnet.
Und auf diese Weise hast du gleich auch eine DoubleBufferd-Technologie in dein Programm gebracht, die das Ganze optisch schön macht.
Falls du das so machst, dann ruf zum neu zeichnen nicht die PaintBox.Invalidate/Repaint-Methode auf, denn diese löscht das Bild erst und dann wird es neu gezeichnet. Das bringt bei schnellen Bildwechseln ein unschönes Flackern.