Защита OpenLayers от закрытия правительства

Я новичок в OpenLayers и работаю над существующим приложением. Он объединяет несколько разных слоев на одной карте, и один из слоев попадает в картографический сервис Геологической службы США, StreamStats. Благодаря текущему закрытию правительства поток в настоящее время возвращает не фрагменты карты, а HTML-страницу с надписью «Из-за закрытия федерального правительства usgs.gov и большинство связанных веб-сайтов недоступны».

Как мы это настроили, мы показываем всплывающее окно «сейчас загружаются данные ...» и добавляем StreamStats в качестве векторного слоя. Когда он инициализируется, мы очищаем всплывающее окно. Однако, поскольку OpenLayers возвращает только HTML-страницу, кажется, что она никогда не инициализируется, и всплывающее окно просто сидит там. Как мне добавить обработчик событий в OpenLayers, чтобы лучше обрабатывать ошибки, если новый слой получает бесполезные данные из картографической службы?

Вот фрагмент кода:

streamStatsKmlLayer = new OpenLayers.Layer.Vector("StreamStats Basin", {
   projection: new OpenLayers.Projection("EPSG:4326"),
   strategies: [new OpenLayers.Strategy.Fixed()],
   protocol: new OpenLayers.Protocol.HTTP({
      url: sskmlurl,
      format: new OpenLayers.Format.KML({
         maxDepth: 0,
         extractStyles: true,
         extractAttributes: false
      })
   })
});
map.addLayer(streamStatsKmlLayer);

person SkippyFlipjack    schedule 04.10.2013    source источник


Ответы (1)


Возможно, вы можете использовать какую-либо другую технологию (jQuery ajax, сервлет,...) для проверки заданного URL-адреса фрагмента карты (по вашему выбору) и анализа результата. Даже не запускать код OpenLayers, если результатом будет HTML и показать какое-то сообщение? Выглядит безумно видеть эти сайты закрытыми, по крайней мере, они сохранили жизненно важные...

person Christophe Roussy    schedule 07.10.2013
comment
Спасибо -- я думаю, я не совсем понимаю временной аспект. Если я отправляю запрос Ajax, я включаю функцию обратного вызова, когда он возвращается. Я не знаю, как это сделать с OpenLayers, чтобы получать уведомления о том, что плитки должны быть готовы к оценке. - person SkippyFlipjack; 07.10.2013
comment
Вы делаете это до того, как добавите этого провайдера в список доступных провайдеров. Убедитесь, что у вас есть запасной провайдер, если это возможно. - person Christophe Roussy; 08.10.2013