Comment éviter les tuiles roses lorsque la vue / table DB est vide?

10

J'ai des vues qui sont spatiales dans le sens où elles sélectionnent une colonne spatiale d'une autre table. Ce tableau est publié à l'aide de geoserver. Cette table est en direct et n'a parfois pas de données du tout. Lorsque la table ne contient aucune donnée, le wms affiché est tout redet l'erreur dans la console Firebug est: entrez la description de l'image ici

Le WMS a renvoyé:

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

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


                });

Utilisation de 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
la source
Quelle est ta question?
underdark
@underdark lorsque la vue n'a pas de données, c'est-à-dire sans ligne, le calque est comme indiqué dans l'image
kinkajou
... et vous voulez savoir comment vous débarrasser des tuiles rouges?
underdark
@underdark oui existe-t-il un moyen de le faire
kinkajou

Réponses:

5

avez-vous essayé ceci pour ajouter une image par défaut en cas d'erreur d'image:

OpenLayers.Util.onImageLoadError = function(){
     this.src = "images/blank.png";
};
Aragon
la source
une excellente solution a fonctionné pour moi.
kinkajou
23

Les versions plus récentes d'OpenLayers (post 2.11) devraient utiliser des classes CSS pour cela.

.olImageLoadError { 
    /* when OL encounters a 404, don't display the pink image */
    display: none !important;
} 
perrygeo
la source
1
De style.css: .olImageLoadError {background-color: pink; opacité: 0,5; filtre: alpha (opacité = 50); / * IE * /}
ca0v
5

Définissez les paramètres suivants dans OpenLayers:

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

Document de référence / tutoriel:

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

Veuillez noter que 3 est une valeur de tolérance très élevée pour les tentatives de rechargement à mon humble avis et pourrait être abaissé à seulement 1.

unicoletti
la source
J'ai ajouté ces paramètres mais toujours la même erreur J'ai ajouté du code aussi
kinkajou
Vous devez définir les paramètres AVANT la création d'un objet openlayers.
unicoletti
en utilisant geoext ces variables ont été déclarées en haut comme mon édition le montre mais cela ne fonctionne toujours pas. Cela ne fonctionne que lorsque j'utilise uniquement des openlayers, un problème avec mon initialisation?
kinkajou
Vous auriez pu expliquer que vous utilisiez le géoext depuis le début. C'est aussi dans la FAQ
unicoletti
mon mauvais :( eh bien certaines de mes pages n'utilisent que des calques ouverts et d'autres utilisent geoext + openlayers ont essayé cela en utilisant uniquement un calque ouvert fonctionne bien mais collé avec d'autres
kinkajou
3

Cela vient de fonctionner pour moi OpenLayers V2.13.1

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