DB视图/表为空时如何避免出现粉红色图块?


10

从某种意义上说,我有一些空间视图,它们从其他表中选择了一些空间列。该表是使用geoserver发布的。该表是活动的,有时根本没有数据。当表中没有数据时,显示的wms全部都存在,red并且在Firebug控制台中的错误是: 在此处输入图片说明

WMS返回:

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

编码:

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


                });

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

你的问题是什么?
昏暗

@underdark当视图没有数据即没有行如上图的层
蜜熊

...而您想知道如何摆脱红砖?
昏暗

@underdark是有没有办法这样做
蜜熊

Answers:


5

您是否尝试过在图像错误上添加一些默认图像的方法:

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

伟大的解决方案为我工作。
kinkajou 2012年

23

较新版本的OpenLayers(2.11版)应该为此使用CSS类。

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

1
来自style.css:.olImageLoadError {background-color:pink; 不透明度:0.5; 过滤器:alpha(opacity = 50); / * IE * /}
ca0v 2012年

5

在OpenLayers中设置以下参数:

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

参考文件/指南:

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

请注意,对于重新加载尝试恕我直言,3是一个非常高的公差值,可能会降低到仅1。


我添加了这些参数,但仍然有同样的错误,我也添加了代码
kinkajou 2012年

必须在创建任何openlayers对象之前设置参数。
unicoletti

使用geoext时,如我的编辑所示,这些变量已在顶部声明,但仍然无法正常工作。仅当我仅使用openlayers时,初始化才有问题吗?
kinkajou 2012年

您可能已经解释说您从一开始就使用geoext。它也在常见问题解答中
unicoletti

我的坏:(以及我的一些网页只使用开放层和其他人使用geoext +的OpenLayers尝试过这种使用只开放层工作正常,但只能和其他
蜜熊

3

它对我有用OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.