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 그렇게 할 수있는 방법이있다
kinkajou

답변:


5

이미지 오류에 기본 이미지를 추가하기 위해 이것을 시도 했습니까?

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

훌륭한 솔루션이 나를 위해 일했습니다.
kinkajou

23

최신 버전의 OpenLayers (2.11 이후)는이를 위해 CSS 클래스를 사용해야합니다.

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

1
style.css에서 : .olImageLoadError {배경색 : 분홍색; 불투명도 : 0.5; 필터 : 알파 (불투명도 = 50); / * IE * /}
ca0v

5

OpenLayers에서 다음 매개 변수를 설정하십시오.

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

참고 문헌 / 자습서 :

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

재로드 시도 IMHO에 대한 3은 허용 오차가 매우 높으며 1로만 낮출 수 있습니다.


이 매개 변수를 추가했지만 여전히 같은 오류 코드를 추가했습니다
kinkajou

openlayers 객체를 만들기 전에 매개 변수를 설정해야합니다.
unicoletti

geoext를 사용 하여이 변수가 편집 표시로 맨 위에 선언되었지만 여전히 작동하지 않습니다. 초기화에 문제가있는 오픈 레이어 만 사용하는 경우에만 작동합니까?
kinkajou

처음부터 geoext를 사용하고 있다고 설명 할 수 있습니다. 그것은 너무 자주 묻는 질문에 있어요 : catb.org/esr/faqs/smart-questions.html
unicoletti

내 나쁜 :( 내 페이지 중 일부는 열린 레이어 만 사용하고 다른 일부는 geoext + openlayers를 사용합니다. 열린 레이어 만 사용하여 시도했지만 다른 것과 붙어 있습니다.
kinkajou

3

그것은 단지 나를 위해 일했다 OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.