Если маркер установлен с помощью icon1, а затем я дважды вызываю setIcon с иконками icon2 и icon1, маркер в итоге отображается с иконкой 2.
marker.setIcon(icon1);
// Then later on:
marker.setIcon(icon2);
marker.setIcon(icon1);
// marker is displayed with icon2
Мое объяснение состоит в том, что icon2 еще не был загружен с сервера, и маркер обновляется вместе с ним асинхронно, когда изображение завершает загрузку.
Помимо предварительной загрузки всех моих значков в первую очередь (что было бы утомительно в моем проекте, поскольку многие значки имеют динамические имена, которые зависят от содержимого данных на карте), есть способ справиться с этим на стороне js api google maps
Обновление : вот код для его воспроизведения .
Спасибо