вариант 2 - переопределить тайлы яндекса, так чтобы перехватывать успешные и неуспешные загрузки.
Таким образом можно знать сколько тайлов показалось, а сколько не показалось.
Если серость незагрузок начинает превышать успешные отклики - что-то делаем.
К сожалению красивого варианта это сделать я не знаю(так как нельзя влесть в ITile дефолтного слоя) - только через перегрузку дефотлных слоев "пользовательскими" настроеными на теже самые адреса(что есть немного не верно)
Вариант два - тоже не стабильный, но в "другую" строну - после сдвига карты, по некому таймауту сканировать div тайл контейнера в поисках еррорных тайлов.
Хорош тем что можно совешать чуть более хитрые операции над пустотой, плох не стабильностью опеределения
Я в свое время делал фейковое событие о серых тайлах для спутникового слоя. Для других можно сделать по аналогии.
(function () { // Сохраняем указатель на старый спутниковый слой var oldSatelliteLayer = YMaps.Layers.get("sat");
/** * Свой слой спутниковых снимков * * Нужно из стандартного слоя спутников обязательно брать методы getCopyright и getZoomRange. * В противном случае копирайты отображаться не будут. */ function SatelliteLayer (tileDataSource, options) { YMaps.Layer.call(this, tileDataSource, options);
// Заменяем стандартный спутниковый слой на фейковый, который умеет сообщать о серых тайлах с помощью // дополнительного события ErrorTile, которого нет в официальной поставке API YMaps.Map.prototype.Events.ErrorTile = "load-error-tile"; YMaps.Layers.add("sat", function () { var layer = new SatelliteLayer($.extend( new YMaps.TileDataSource(oldSatelliteLayer.getTileDataSource().getTileUrlTemplate()), { getErrorTileUrl : function () { var map = layer.getMap(); YMaps.Events.notify(map, map.Events.ErrorTile, map); return oldSatelliteLayer.getTileDataSource().getErrorTileUrl(); } } ))