2016-06-10 2 views
0

Мы запускаем Open Layers 3.15. Иногда мы получаем отброшенную или неудачную плитку. В настоящее время он ничего не отображает (что может смущать наших пользователей), поэтому мы хотели бы заменить это на плитку, в которой говорится «нет данных» или что-то еще. Я попытался поднять событие и заменить источник плитки, напримерOpenlayers 3 Замените неисправную плиту

  source.on('tileloaderror', function(){ 
       source.setUrl('./images/map/failureTile.png'); 
      }); 

, но проблема с этим, вместо того, чтобы делать это на 1 плитку, он делает это для всего слоя, мы не» Я хочу этого.

Кто-нибудь знает, как мы можем это сделать только для плитки, которая потерпела неудачу, а не для всего слоя?

+0

Не могли бы вы рассказать нам, какой слой вы создаете? Например. Плитка, изображение и т. Д. Как пояснение, 'source.setUrl' должен иметь заполнители для координат. Эти заполнители заменяются фактическими значениями до того, как будет сделан запрос к созданному URL-адресу. – xnakos

+0

Привет, я создаю ol.layer.Tile – Status420

ответ

0

Плитка, которая не загружалась, должна иметь отдельный класс (.olImageLoadError). Вы можете определить правило CSS, которое не отображает эти элементы.

.olImageLoadError { 
    display: none !important; 
} 
+0

Спасибо, но что бы я хотел сделать, это замена плитки, которая не сработала с нашей собственной (то есть серой плитки с «нет данных», написанной на ней) , Конечно, если есть способ сделать это через css, это также сработает для нас. – Status420

+0

класс должен быть на изображении. вы можете заставить источник вместо дисплея. –

+0

Я думаю, что это функция openlayers 2, а не openlayers 3 one, которую я могу сказать. – Status420

0

Вы можете попробовать это:

source.on('tileloaderror', function(event) { 
    event.tile.getImage().src = './images/map/failureTile.png'; 
}); 

Вам нужен параметр event, что вы можете получить плитку, что не удалось, так что вы можете изменить изображение плитки в.

Внимание: Я проверил код выше, используя tileloadend вместо tileloaderror, потому что мои плитки никогда не терпят меня. :) Я использовал смоделированную частоту отказа, используя Math.random(), и некоторые случайные фрагменты были заменены указанным изображением. Я не могу придумать причину, по которой код выше не будет работать. Если вы подтвердите это, я удалю это предупреждение из своего ответа. Я тестировал его на OpenLayers 3.14.2 и на источнике OSM.

+0

Спасибо, я попробовал это, и он меняет URL-адрес, но не перезагружает изображение. – Status420