2015-09-23 166 views
1

我想根據標記過濾OpenLayers(2)矢量圖層。因此,矢量圖層具有屬性列,該列可以用逗號分隔的標籤填充,例如, 「文化,食物,公園」,而且只有一個標籤,例如「餐飲」。我想顯示所有功能誰有一個標籤「激活」由各自的jquery控制按鈕。OpenLayers中基於標記的過濾器

每個功能僅一個標籤,它正在用下​​面的代碼:

tags = ['school','food','park']; 

activeTags = []; 
function fillArrayOfFilters() { 
    activeLayers = []; 
    $.each(tags, function(id, tag) { 
    if ($('#' + this).hasClass('active') == true) { 
     activeTags.push(tags); 
    }; 
    }); 
    filters = activeLayers.map(function(tag, id) { 
    return new OpenLayers.Filter.Comparison({ 
     type: OpenLayers.Filter.Comparison.EQUAL_TO, 
     property: "tags", 
     value: tag 
     }); 
    }); 
} 

function filter() { 
    var filter = new OpenLayers.Filter.Logical({ 
    type: OpenLayers.Filter.Logical.OR, 
    filters: filters 
    }); 
    filterStrategy.setFilter(filter); 
}; 

我知道存在的OpenLayers LIKE比較。但是,我如何在這種情況下使用它?我想要類似的東西:

new OpenLayers.Filter.Comparison({ 
    type: OpenLayers.Filter.Comparison.LIKE, 
    property: "tags", 
    value: *tag* 
    }); 

回答

0

好的,找到了一個方法 - 很簡單。 一個只需要使用正則表達式對象作爲過濾器值:

new OpenLayers.Filter.Comparison({ 
    type: OpenLayers.Filter.Comparison.LIKE, 
    property: "tags", 
    value: new RegExp(tag) 
    });