簡體   English   中英

Geoserver WFS層作為時間戳字段轉換為OpenLayers Vector層上的字符串

[英]Geoserver WFS layer as Timestamp fields converted to string on OpenLayers Vector layer

我正在使用以下代碼在開放層中使用WFS層:

    crashes = new OpenLayers.Layer.Vector(title, {
        strategies: [new OpenLayers.Strategy.BBOX({resFactor: 1}), clusterStrategy],
        minScale: minimumScale,
        visibility:visiblity,
        displayInLayerSwitcher:showInLayerSwitcher,
        protocol: new OpenLayers.Protocol.WFS({
            version: "1.1.0",
            srsName: srid,
            url: wfsUrl,
            featureType: layerName,
            geometryName: geomCol,
            featurePrefix: prefix,
            featureNS :  namespace
        }),
        styleMap: new OpenLayers.StyleMap({
            "default": style,
            "select": {
                fillColor: "red",
                strokeColor: "#32a8a9"
            }
        })             
    }); 

從傳遞參數的函數中獲取。此層很好地工作。

我現在想將過濾器應用於此層,其中之一是在日期字段上使用之間的比較。

                       ,new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.BETWEEN,
                            property: "CRASH_DATE",
                            lowerBoundary: new Date(2011,0,1);,
                            upperBoundary: new Date(2014,0,1);
                        })

似乎所有字段都被轉換為字符串類型,因此嘗試執行此Camparison不會導致返回任何數據:

我也嘗試過創建不返回任何結果的函數過濾器:

                    vehicleCrashLayer.filter = new OpenLayers.Filter.Logical({
                    type: OpenLayers.Filter.Logical.AND,
                    filters: [
                        new OpenLayers.Filter.Spatial({
                            type: OpenLayers.Filter.Spatial.INTERSECTS,
                            value: event.feature.geometry,
                        })            
                        ,new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
                            property: "SEVERITY",
                            value: "Property Damage Only"
                        })                                       
                        ,new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
                            property: "SEVERITY",
                            value: "Not Known"
                        }) 

                        ,new OpenLayers.Filter.Comparison({
                            type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO,
                            property: "SEVERITY",
                            value: "Not Stated"
                        })                     
                        ,new OpenLayers.Filter.Function({
                            name: 'dateBetween',
                            type: OpenLayers.Filter.Function,
                            evaluate: function(feature){
                                 console.log(feature.attributes);
                                 var x=0;
                                 return true;
                                }
                         })                      
                    ]
                });

有人能幫忙嗎。 例子很少而且相去甚遠。

我還沒有測試過,但是您是否嘗試過類似時間戳的值? 用Java語言編寫: new Date().getTime()返回自給定時間以來的毫秒數。 如果您也可以安排數據庫返回該值,則可以使用整數。 這很容易...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM