Foreach loop inside foreach loop?

Your 2nd foreach loop is a bug. $slug is a string with a single value, and you cannot pass a string to a foreach loop. If you set debug to true, you will see an error message telling you just this.

You can simply just do

//Different markers for different types    
$car_type = get_the_terms( $post->ID, 'car-type' );

//Apparently it don't get the slug if it's not in foreach loop 
foreach ( $car_type as $type ) { 

    $slug = $type->slug;
    $marker_image="https://www.my-site.com/media/markers/marker_" . $slug . '.png';  
}