¿Cómo evitar los mosaicos de color rosa cuando la vista / tabla de base de datos está vacía?


10

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 redy el error en la consola firebug es: ingrese la descripción de la imagen aquí

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
                });     

¿Cuál es tu pregunta?
oscuro

@underdark cuando la vista no tiene datos, es decir, ninguna fila de la capa es como se muestra en la foto
kinkajou

... y quieres saber cómo deshacerte de los azulejos rojos?
oscuro

@underdark sí, ¿hay alguna manera de hacerlo
kinkajou

Respuestas:


5

¿Intentaste esto para agregar alguna imagen predeterminada en el error de imagen:

OpenLayers.Util.onImageLoadError = function(){
     this.src = "images/blank.png";
};

La gran solución funcionó para mí.
kinkajou

23

Las versiones más recientes de OpenLayers (post 2.11) deberían usar clases CSS para esto.

.olImageLoadError { 
    /* when OL encounters a 404, don't display the pink image */
    display: none !important;
} 

1
Desde style.css: .olImageLoadError {background-color: pink; opacidad: 0.5; filtro: alfa (opacidad = 50); / * IE * /}
ca0v

5

Establezca los siguientes parámetros en OpenLayers:

// Avoid pink error tiles
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
OpenLayers.Util.onImageLoadErrorColor = "transparent";

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.


Agregué estos parámetros pero aún el mismo error. También agregué código
Kinkajou

Debe establecer los parámetros ANTES de que se cree cualquier objeto de capas abiertas.
unicoletti

usando geoext, esta variable se declaró en la parte superior como muestra mi edición, pero aún así no funciona. Solo funciona cuando estoy usando solo capas abiertas ¿Algún problema con mi inicialización?
kinkajou

Podría haber explicado que estaba usando geoext desde el principio. También está en las preguntas frecuentes
unicoletti

my bad :( bueno, algunas de mis páginas solo usan capas abiertas y otras usan geoext + las capas abiertas intentaron esto usando solo la capa abierta funciona bien pero se pegó con otras
kinkajou

3

Simplemente funcionó para mí OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.