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

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

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

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.


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;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.