Did you know that right clicking a function and selecting the option 'Go To Definition' can show you all overloads of a function (not only that, but all member of the underlying class) ?
GetClosestVehicle() implements 2 overloads, they are:
public static Vehicle GetClosestVehicle(Vector3 Position, float MaxRadius);
public static Vehicle GetClosestVehicle(Vector3 Position, float MaxRadius, Model ofModel);
You can use the second to get the closest vehicle from a specific position, around a certain radius of a said model, I think that is exactly what you want.
Here is a quick mock up:
Vehicle theUsualSuspect = World.GetClosestVehicle(Player.Character.Position, 20f, Model.FromString("YourModel"));
Not really sure what will return if no match is found, but I guess 'null', so you may want to check for that before using the theUsualSuspect.
If you need to match a model from multiple models, something on these lines is the best approach:
Model[] theUsualSuspects; // Fill the array with the desired models
Vehicle theUsualSuspect;
foreach (Model suspect in theUsualSuspects)
{
theUsualSuspect = World.GetClosestVehicle(Player.Character.Position, 20f, suspect);
if (theUsualSuspect != null)
break;
}
Again, check for nulls.