Hi, Hansvb
In that viewer, I let the TMapViewer do all the jobs. For GeoJSON, I just map file as TMapLayer and features as TMapArea or TMapTrack or TMapPointOfInterest according to their geometry types. The mapping process is done in separated thread.
Since I only have dial-up (phone thetering), the only bottleneck is when it needs to refresh map tiles from internet. Other than that I think TMapViewer draws very fast eventhough I only use its default drawing engine. For my laptop i5 M520 RAM 4GB, I notice TMapViewer still delivers acceptable performance viewing, zooming, scrolling, etc. map with 5 layers. I admit I activate DoubleBuffered for the panel where TMapViewer placed, though. This is the first time I have to use double buffer.
Thank you for your kindness about that app look. It is just a simple app with out-of-the-box Lazarus's components.