Create a while loop that clones the previous map’s position. This is an example of what you could do(using a part, however).
local part = workspace.Part
local lastPart = part
while true do
local clone = part:Clone()
clone.Position = lastPart.Position + Vector3.new(-1*clone.Size.X,0,0)
clone.Parent = game.Workspace
lastPart = clone
task.wait(1)
end
One thing that you can do is create a model of the road (add some parts for scenery, etc…) nad have 5 copies of it. On the middle segment, use a spatial query function like game.Workspace: GetPartBoundsInBox() on the middle segment only about 10 times a second. When the vehicle leaves the segment, move the query to the next segment and move the last segment to be in front using Model:PivotTo(). You can just keep doing that forever.
The caveat though is that at some point, you are going to have to move the entire structure back to origin because the coordinate numbers will get too high.
If you are moving a model, then :PivotTo(CFrame) is what you use. If you are moving a part, you can use Part.Position(Vector3) to change it’s position.