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

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

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

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.


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;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.