Wie vermeide ich rosa Kacheln, wenn die DB-Ansicht / Tabelle leer ist?

10

Ich habe Ansichten, die räumlich sind, in dem Sinne, dass sie eine räumliche Spalte aus einer anderen Tabelle auswählen. Diese Tabelle wird mit Geoserver veröffentlicht. Diese Tabelle ist live und enthält manchmal überhaupt keine Daten. Wenn die Tabelle keine Daten enthält, wird nur wms angezeigt, redund der Fehler in der Firebug- Konsole lautet: Geben Sie hier die Bildbeschreibung ein

Das WMS gab zurück:

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

Der Code:

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


                });

Verwenden von 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
                });     
Kinkajou
quelle
Was ist deine Frage?
Underdark
@underdark Wenn die Ansicht keine Daten hat, dh keine Zeile, ist die Ebene wie in Bild gezeigt
Kinkajou
... und Sie möchten wissen, wie Sie die roten Kacheln loswerden können?
Underdark
@underdark ja gibt es eine Möglichkeit, dies zu tun
Kinkajou

Antworten:

5

Haben Sie dies versucht, um ein Standardbild bei einem Bildfehler hinzuzufügen:

OpenLayers.Util.onImageLoadError = function(){
     this.src = "images/blank.png";
};
Aragon
quelle
tolle Lösung hat bei mir funktioniert.
Kinkajou
23

Neuere Versionen von OpenLayers (nach 2.11) sollten hierfür CSS-Klassen verwenden.

.olImageLoadError { 
    /* when OL encounters a 404, don't display the pink image */
    display: none !important;
} 
Perrygeo
quelle
1
Von style.css: .olImageLoadError {Hintergrundfarbe: pink; Opazität: 0,5; Filter: Alpha (Deckkraft = 50); / * IE * /}
ca0v
5

Stellen Sie in OpenLayers folgende Parameter ein:

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

Referenzdokument / Tutorial:

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

Bitte beachten Sie, dass 3 meiner Meinung nach ein sehr hoher Toleranzwert für Nachladeversuche ist und auf nur 1 gesenkt werden kann.

Unicoletti
quelle
Ich habe diese Parameter hinzugefügt, aber immer noch den gleichen Fehler Ich habe auch Code hinzugefügt
Kinkajou
Sie müssen die Parameter festlegen, bevor ein Openlayers-Objekt erstellt wird.
Unicoletti
Mit Geoext wurde diese Variable oben deklariert, wie meine Bearbeitung zeigt, aber es funktioniert immer noch nicht. Es funktioniert nur, wenn ich nur OpenLayer verwende. Gibt es Probleme mit meiner Initialisierung?
Kinkajou
Sie hätten erklären können, dass Sie von Anfang an Geoext verwendet haben. Es ist auch in der FAQ: catb.org/esr/faqs/smart-questions.html
Unicoletti
mein schlechtes :( Nun, einige meiner Seiten verwenden nur offene Ebenen und andere verwenden Geoext + OpenLayer. Ich habe versucht, nur offene Ebenen zu verwenden. Das funktioniert gut, bleibt aber bei anderen
Kinkajou
3

Es hat gerade bei mir funktioniert OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
MSS
quelle