在我的SAPUI5-App中,我有一个GeoMap(sap.ui.vbm.GeoMap),其中显示了一些Spots(sap.ui.vbm.Spots)。每个Spot都有一个分配的季度(例如2012-Q3,2012-Q4,...)。在这个GeoMap之上,我有一个RangeSlider(sap.ui.commons.RangeSlider),我可以选择一系列的季度(例如从2012年到第四季度到2014年到第三季度)。根据RangeSlider中的选定区域,只应在GeoMap上显示关联的Spots。 Image of my Application
到目前为止我已经实现了这一点,如果我缩小RangeSlider中的范围,GeoMap上将显示正确的Spots。
但是这是我的问题,如果我在RangeSlider中扩展范围,并不是所有相关的Spots都会显示在GeoMap上。有些景点不见了。 Image: Not all Spots will be shown
我的阅读是,我的过滤器一定有问题。
这是我对RangeSlider的事件处理程序的代码:
onRangeChanged: function(oEvent){
var oValue1 = oEvent.getSource().getValue();
var oValue2 = oEvent.getSource().getValue2();
var aFilter = [];
for (var i = oValue1; i <= oValue2; i++) {
var sQuarter = oEvent.getSource().mProperties.labels[i];
aFilter.push(new Filter("EVENT_QUARTAL", FilterOperator.Contains, sQuarter));
}
var combinedFilter = new sap.ui.model.Filter(aFilter, false);
var oSpots = this.getView().byId("SpotsEvent");
var oListBinding = oSpots.getBinding("items");
oListBinding.filter(combinedFilter);
},
这是我的View with the Spots和RangeSlider的代码片段:
...
<commons:RangeSlider
id="RangeSlider"
min="0"
max="15"
stepLabels="true"
smallStepWidth="1"
width="1070px"
value="0"
value2="15"
change="onRangeChanged"
class="sapUiSmallMarginBegin">
</commons:RangeSlider>
...
<vbm:Spots
id="SpotsEvent"
items="{/Events/0}">
<vbm:items>
<vbm:Spot
id="spotEvent"
click="onClickSpot"
position="{path: 'EVENT_GEOKOORDINATEN',
formatter: '.Formatter.formatPosition'}"
type="Error"
text="{BRANDSCORE}">
</vbm:Spot>
</vbm:items>
</vbm:Spots>
我希望有人可以帮助我。