Come evitare i riquadri rosa quando la vista DB / la tabella è vuota?


10

Ho viste che sono spaziali nel senso che selezionano una colonna spaziale da un'altra tabella. Questa tabella è pubblicata usando geoserver. Questa tabella è attiva e a volte non contiene dati. Quando la tabella non contiene dati, il wms visualizzato è tutto rede l'errore nella console di firebug è: inserisci qui la descrizione dell'immagine

Il WMS ha restituito:

>  <?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>

Il codice:

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()
                    ]   


                });

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

Qual è la tua domanda?
underdark

@underdark quando la vista non ha dati, cioè nessuna riga il livello è come mostrato in figura
kinkajou,

... e vuoi sapere come sbarazzarti delle piastrelle rosse?
underdark

@underdark sì, c'è un modo per farlo
kinkajou,

Risposte:


5

hai provato questo per aggiungere qualche immagine predefinita sull'errore immagine:

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

ottima soluzione ha funzionato per me.
Kinkajou,

23

Le versioni più recenti di OpenLayers (post 2.11) dovrebbero usare le classi CSS per questo.

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

1
Da style.css: .olImageLoadError {background-color: pink; opacità: 0,5; filtro: alfa (opacità = 50); / * IE * /}
ca0v,

5

Impostare i seguenti parametri in OpenLayers:

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

Documento di riferimento / tutorial:

http://workshops.opengeo.org/stack-intro/openlayers.html

Si noti che 3 è un valore di tolleranza molto elevato per i tentativi di ricarica IMHO e potrebbe essere ridotto a 1.


Ho aggiunto questi parametri ma sempre lo stesso errore ho aggiunto anche il codice
kinkajou,

È necessario impostare i parametri PRIMA di creare qualsiasi oggetto openlayers.
unicoletti,

usando geoext queste variabili sono state dichiarate in cima come mostra la mia modifica, ma non funziona ancora. Funziona solo quando utilizzo solo openlayer qualsiasi problema con la mia inizializzazione?
Kinkajou,

Avresti potuto spiegare che stavi usando geoext dall'inizio. È anche nella domanda
unicoletti

il mio male :( bene alcune delle mie pagine usano solo livelli aperti e altri usano geoext + openlayers provato questo usando solo il livello aperto funziona bene ma bloccato con altri
kinkajou,

3

Ha funzionato per me OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.