วิธีหลีกเลี่ยง Pink tiles เมื่อดู DB / Table ว่างเปล่า?


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 เมื่อมุมมองยังไม่มีข้อมูลคือไม่มีแถวชั้นจะเป็นดังแสดงในภาพ
คิงคาจู

... และคุณต้องการทราบวิธีกำจัดไพ่สีแดงใช่ไหม
underdark

@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 {background-color: pink; ความทึบแสง: 0.5; ตัวกรอง: alpha (opacity = 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

โปรดทราบว่า 3 เป็นค่าที่ยอมรับได้สูงมากสำหรับความพยายามในการโหลดซ้ำ IMHO และอาจลดลงเหลือเพียง 1


ฉันได้เพิ่มพารามิเตอร์เหล่านี้ แต่ยังคงมีข้อผิดพลาดเดียวกันฉันได้เพิ่มรหัสด้วย
kinkajou

คุณต้องตั้งค่า params ก่อนที่วัตถุ openlayers ใด ๆ จะถูกสร้างขึ้น
unicoletti

การใช้ geoext ตัวแปรเหล่านี้ถูกประกาศอยู่ด้านบนเนื่องจากการแก้ไขการแสดงของฉัน แต่ก็ยังไม่ทำงาน มันใช้งานได้เฉพาะเมื่อฉันใช้ openlayers เฉพาะปัญหาใด ๆ กับการเริ่มต้นของฉันได้อย่างไร
kinkajou

คุณสามารถอธิบายได้ว่าคุณกำลังใช้ geoext ตั้งแต่ต้น มันอยู่ในคำถามที่พบบ่อยเกินไป: catb.org/esr/faqs/smart-questions.html
unicoletti

ไม่ดีของฉัน :( ดีบางส่วนของหน้าเว็บของฉันใช้เฉพาะชั้นที่เปิดกว้างและคนอื่นใช้ openlayers + geoext พยายามนี้ใช้เพียงชั้นเปิดทำงานได้ดี แต่ติดอยู่กับคนอื่น ๆ
คิงคาจู

3

มันใช้งานได้สำหรับฉัน OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.