Tengo vistas que son espaciales en el sentido de que seleccionan alguna columna espacial de otra tabla. Esta tabla se publica utilizando geoserver. Esta tabla está en vivo y en algún momento no tiene datos. Cuando la tabla no tiene datos, el wms que se muestra es todo red
y el error en la consola firebug es:
El WMS devolvió:
> <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE
> ServiceExceptionReport SYSTEM
> "http://192.168.70.65:80/geoserver/schemas/wms/1.1.1/WMS_exception_1_1_1.dtd"> <ServiceExceptionReport version="1.1.1" > <ServiceException>
> java.lang.NullPointerException
> null
> </ServiceException></ServiceExceptionReport>
El código:
function init(){
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 1;
OpenLayers.Util.onImageLoadErrorColor = "transparent";
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
numZoomLevels: 21,
maxExtent: new OpenLayers.Bounds(-20037508, -20037508,20037508, 20037508.34),
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher({'ascending':false}),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.OverviewMap(),
new OpenLayers.Control.KeyboardDefaults()
]
});
Usando GeoExt:
<script src="http://localhost/geoserver/www/ext/adapter/ext/ext-base.js" type="text/javascript"></script>
<script src="http://localhost/geoserver/www/ext/ext-all.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="http://localhost/geoserver/www/ext/resources/css/ext-all.css"/>
<link rel="stylesheet" href="http://localhost/geoserver/www/openLayers/theme/default/style.css" type="text/css" />
<script src="http://localhost/geoserver/www/openLayers/OpenLayers.js" type="text/javascript"></script>
<script src="http://localhost/geoserver/www/geoext/lib/GeoExt.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="http://localhost/geoserver/www/geoext/resources/css/geoext-all.css"/>
<script>
OpenLayers.Util.onImageLoadErrorColor = 1;
OpenLayers.Util.onImageLoadErrorColor = "transparent";
Ext.BLANK_IMAGE_URL = "http://localhost/geoserver/www/ext/resources/images/default/s.gif";
var app, items = [], controls = [];
var lon = 85.344;
var lat = 27.7;
var zoom = 12;
var url = "http://localhost/geoserver/wms";
Ext.onReady(function() {
app = new Ext.Viewport({
layout: "border",
items: items
});
Respuestas:
¿Intentaste esto para agregar alguna imagen predeterminada en el error de imagen:
fuente
Las versiones más recientes de OpenLayers (post 2.11) deberían usar clases CSS para esto.
fuente
Establezca los siguientes parámetros en OpenLayers:
Documento de referencia / tutorial:
http://workshops.opengeo.org/stack-intro/openlayers.html
Tenga en cuenta que 3 es un valor de muy alta tolerancia para los intentos de recarga en mi humilde opinión y podría reducirse a solo 1.
fuente
Simplemente funcionó para mí OpenLayers V2.13.1
fuente