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レイヤーは図のようになります
kinkajou

...そして、あなたは赤いタイルを取り除く方法を知りたいですか?
アンダーダーク

@underdarkはいそうするどのような方法がある
キンカジュー

回答:


5

画像エラーでいくつかのデフォルト画像を追加するためにこれを試しましたか?

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

素晴らしい解決策が私のために働いた。
金華城

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はIMHOのリロード試行の許容値が非常に高く、1に下げることもできることに注意してください。


これらのパラメーターを追加しましたが、それでも同じエラーが発生しました。コードも追加しました
kinkajou

openlayersオブジェクトを作成する前に、paramsを設定する必要があります。
ユニコレッティ

geoextを使用して、これらの変数は私の編集が示すように上部で宣言されましたが、それでも機能しません 初期化でopenlayersのみを使用している場合にのみ機能しますか?
金華城

最初からgeoextを使用していたと説明できたでしょう。これもよくある質問
unicoletti

私の悪い:(私のページのほか、いくつかの唯一のオープン層を使用し、他はgeoext +のOpenLayersを使用して、この唯一のオープン層は罰金が、他にこだわってみました作品を使用
キンカジュー

3

それはちょうど私のために働いたOpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.