Круг, вероятно, не появляется, потому что вы рисуете его до загрузки изображения. Измените свое последнее утверждение на:
// Lets not init until the image is actually done loading
topMap.onload = function() {
init();
}
Причина, по которой он работает после нажатия кнопки «Обновить», заключается в том, что изображение теперь предварительно загружено в кэш.
Вы всегда должны ждать загрузки любых изображений, прежде чем пытаться их нарисовать, иначе на холсте ничего не появится.