Обычно там всё же рассказывается, может быть не раскрывая всех нюансов, но всё же. На худой конец всегда можно прочитать документацию по программам - для чего она и что делает.
Зависло, потому что юнити работает в одном потоке и вы его зациклили в while (scoreBonus == true). А корутина начнёт работать только когда ваш вызов метода OnMouseDown завершиться. Соответственно проверки надо делать в Update
1. Не имеет отношение к tile-серверу. Обратитесь к документации leaflet или что там у вас;
2. Создать несколько стилей отображения и соответственно загружать какой вам надо.
2.1. Либо если у вас там векторные тайлы, то можно отключить их отображение на клиенте.
Либо ты знаешь математическую зависимость и можешь рассчитать каждый пиксель (по сути нужен цвет пикселя) в любой момент времени между формой круг и квадрат, и тогда ты пишешь шейдер.
Либо не выпендриваться и сделать покадровую анимацию. Судя по твоему примеру хватить 3-4 кадров.
Рассчитывайте, что проблемы будут. Второй это часть MapJS и предназначена для его работы. А первый, это как раз публичный сервис, если вам нужны тайлы.
Странно, что вы нашли бобра, но не смогли воспроизвести пример, где видно, что никакой source не заполняется, а иконка это часть html, который маркером и показывается.
А тот source, насколько я понимаю, нужен для указание источника фич для маркеров.
Это просто мало банальной практики. Примерно как в математике, мало уметь складывать и умножать, надо нарешать пулл задач, чтобы мочь применять свои знания на практике.
И потом, система компонентов Unity это не совсем то ООП.