Наконец-то! Я нашел этот архивный пост 2012 года в Google Code: https://code.google.com/archive/p/google-maps-utility-library-v3/issues/176
Суть в том, что в iOS есть действительно давняя ошибка, которая вызывает это, и обходной путь чтобы добавить стиль CSS,
-webkit-transform: translateZ(0px);
к тому, что исчезает. И это решает проблему.
Итак, чтобы исправить мой код из вопроса, я добавил строку ***, как показано ниже.
function onAdd() {
var div = document.createElement('div');
div.style.borderStyle = 'none';
div.style.borderWidth = '0px';
div.style.position = 'absolute';
var img = document.createElement('img');
img.src = this.image_;
img.style.width = '100%';
img.style.height = '100%';
img.style.opacity = this.isAdminMode ? '0.5' : '1';
img.style.position = 'absolute';
img.style.transform = 'rotate(0deg)';
img.style['-webkit-transform'] = 'translateZ(0px)'; // disappearing fix ***
div.appendChild(img);
this.div_ = div;
var panes = this.getPanes();
panes.overlayLayer.appendChild(div);
};