Làm thế nào để tránh gạch màu hồng khi chế độ xem DB / Bảng trống?


10

Tôi có các khung nhìn là không gian theo nghĩa là chúng chọn một số cột không gian từ bảng khác. Bảng này được xuất bản bằng geoserver. Bảng này là trực tiếp và đôi khi không có dữ liệu nào cả. Khi bảng không có dữ liệu, các wms hiển thị là tất cả redvà lỗi trong bảng điều khiển fireorms là: nhập mô tả hình ảnh ở đây

WMS đã trả lại:

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

Mật mã:

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


                });

Sử dụng 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
                });     

Câu hỏi của bạn là gì?
underdark

@underdark khi chế độ xem không có dữ liệu tức là không có hàng nào như trong hình
kinkajou

... Và bạn muốn biết làm thế nào để thoát khỏi gạch đỏ?
underdark

@underdark vâng, có cách nào để làm như vậy
kinkajou

Câu trả lời:


5

bạn đã thử điều này để thêm một số hình ảnh mặc định về lỗi hình ảnh:

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

giải pháp tuyệt vời làm việc cho tôi.
kinkajou

23

Các phiên bản mới hơn của OpenLayers (bài 2.11) nên sử dụng các lớp CSS cho việc này.

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

1
Từ style.css: .olImageLoadError {màu nền: hồng; độ mờ đục: 0,5; bộ lọc: alpha (độ mờ = 50); / * IE * /}
ca0v

5

Đặt các tham số sau trong OpenLayers:

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

Tài liệu tham khảo / hướng dẫn:

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

Xin lưu ý rằng 3 là giá trị dung sai rất cao khi tải lại IMHO và có thể hạ xuống chỉ còn 1.


Tôi đã thêm các tham số này nhưng vẫn còn lỗi. Tôi cũng đã thêm mã
kinkajou

Bạn phải đặt các thông số TRƯỚC KHI bất kỳ đối tượng openlayers nào được tạo.
unicoletti

bằng cách sử dụng Geoext, biến này đã được khai báo trên đầu vì bản chỉnh sửa của tôi hiển thị nhưng nó vẫn không hoạt động. Nó chỉ hoạt động khi tôi chỉ sử dụng openlayers bất kỳ vấn đề với khởi tạo của tôi?
kinkajou

Bạn có thể đã giải thích rằng bạn đã sử dụng Geoext ngay từ đầu. Nó cũng ở faq: catb.org/esr/faqs/smart-questions.html
unicoletti

xấu của tôi :( một số trang của tôi chỉ sử dụng các lớp mở và những trang khác sử dụng Geoext + openlayers đã thử điều này bằng cách chỉ sử dụng lớp mở hoạt động tốt nhưng bị mắc kẹt với cái khác
kinkajou

3

Nó chỉ hoạt động với tôi OpenLayers V2.13.1

.olTileImage.olImageLoadError {
    display: none !important;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.