Thank you for sharing your code.
Your problem starts when you used
the CreateMarker (a Run time Marker). It is difficult to 'delete' or hide specific Run time markers. You are apparently creating a Marker every time the location changes. I recommend you do not do that. Rely on your StringGrid points and only use TWO DesignTime Markers. I constantly reuse Marker2 by updating its coordinates.
I don't have your BlueTooth connection, I cannot test your Project or understand how your app is supposed to work. I recommend not to use Run time Markers in your app. Instead of making a list of intermediate Run time Markers, make a list of intermediate locations (latitude,longitude) if you need that information or extract it from the Point List.
How I handle the issue of Hiding the origin Marker (I use Marker1) and hide the LineString track and displayi only the destination Marker (assuming the destination is Marker2).
This is how I track using an extension. You might find the article useful.

