Если у вас есть одно единственное изображение как GroundOverlay, я бы сделал следующее:
- Создание IMG тег через Javascript
- Установите его SRC в накладками/layer1.png
- отобразить окно ожидания
- Добавьте в него событие onload, на котором загрузите его как наложение gmaps и закройте окно ожидания.
Прогресс ... это немного больше для браузера. Но загрузка легко, так:
function loadOverlay(){
var img = new Image();
var img_url = "overlays/layer1.png"
img.src= img_url;
$('#wait_for_overlay').show();
img.onLoad = function(){
$('#wait_for_overlay').hide();
var layer1 = new google.maps.GroundOverlay(img_url,imageBounds);
layer1.setOpacity(.5);
layer1.setMap(map);
}
};
Причина, почему это будет работать:
Создание объекта IMG и установив его атрибут «ЦСИ» заставит браузер начать скачать требуемый файл, как только функция javascript делает это.
Браузер помещает это изображение в свой локальный кеш, а затем вызывает функцию onLoad, чтобы увидеть, что должно произойти с ним.
Обратный вызов фактически ничего не делает для переменной img (возможно, он должен убедиться, что он не будет уничтожен в соответствии с правилами закрытия, сделать с ним NOP, если это багги), но вместо этого вызывает карты google функция.
Функция google-maps запросит изображение на том же URL-адресе, в котором браузер будет искать свою таблицу кеша, и немедленно вернет изображение из кеша.
Этот трюк противный, но на самом деле, движок Google Maps будет делать то же самое onLoad thingy в фоновом режиме (так как это работает с двигателями карт).
Я надеюсь, что это удовлетворит ваш вопрос ... нет индикатора выполнения, только индикатор загрузки ... Возможно, вы можете сделать индикатор выполнения, запросив его с XHR и проверить прогресс, я не уверен, но трюк будет то же: сделайте запрос faux, чтобы он попал в кеш.
Уловка Адаама очень яркая. Я думал об этом раньше, но не пошел дальше, поскольку у меня есть одна проблема, что в моем случае я хочу сохранить порядок слоев (может быть более 10 из них). Предварительно загрузив изображение, как сказал Адаам, слои будут создаваться «случайно». Возможно, можно предварительно загрузить все изображения, прежде чем создавать оверлеи, но это может пойти даже противнее. – user1226919