public void setNewRoute(Route route) {
        
        m_CurrentRoute = route;
    	
    	/* Interrupt any previous active route downloader */
    	if(m_RouteTileDownloader != null) {
    		m_RouteTileDownloader.interrupt();
    		m_RouteTileDownloader = null;
    		m_DownloaderState = null;
    	}
    	
        //TODO: Hack check if the map was loaded otherwise a NPE will occurs 
        // in m_RouteTileDownloader.initRoute as it's need a TMFD 
    	// will be replaced by a better handling of map initialization
    	if (m_TileMapControl.getTileMapFormatDesc() == null) {
    	    if(LOG.isWarn()) {
                LOG.warn("PredictRouteTileHandler.setNewRoute()", 
                        "the map is not loaded, cannot predict tiles without TMFD");
            }
    	    return;
    	}
    	
    	/* Set the route to the route downloader and start the thread */
    	if(m_CurrentRoute != null) {
	    	m_RouteTileDownloader = new RouteTileDownloader(m_TileMapControl, m_RealCam, m_VectorMapModule);
	    	m_RouteTileDownloader.setScreenHeight(m_ScreenHeight);
	    	m_DownloaderState = m_RouteTileDownloader.getDownloadState();
	    	if(m_RouteTileDownloader.initRoute(m_CurrentRoute,m_IsVisible)) {	    	
    	    	m_DownloaderState.setDownloading(true);
    	    	m_Scheduler.schedule(m_RouteTileDownloader, WorkScheduler.PRIORITY_HIGH);
	    	}
    	}
    }