Трудно сказать, что не так, поскольку вы не предоставляете полученную ошибку или код, который создает маркер. Попытка угадать, что, скорее всего, происходит, что код, который вы запускаете для создания маркеров и, возможно, для инициализации карты, выполняется не синхронно, а асинхронно. Это определенно будет иметь место, если есть некоторые вызовы ajax, и это означает, что система map / manager не готова к моменту вызова последней строки javascript, но через некоторый период времени и, конечно, после выхода из функции .
Чтобы избежать setTimeout, который, помимо прочего, привнесет ненужную задержку и его очень легко сломать, если в определенных условиях требуется больше времени, вам нужно взглянуть на код, который создает маркеры, и посмотреть, есть ли определен обратный вызов / событие, которое отмечает завершение процедуры инициализации.