我正在使用Sencha Touch + OpenLayers來開發一個演示應用程序。一個功能是獲取GeoServer中的功能數據目錄。我想使用Ext.List來顯示要素圖層的名稱。我想下面的代碼:Sencha Touch + OpenLayers:未能創建一個包含Openlayers.request.Get函數的列表
App.AddFeatureLayerList = Ext.extend(Ext.List, {
createStore: function(){
Ext.regModel('WFSLayers', {
fields: ['name', 'title', 'srs', 'featureNS']
});
var data = [];
var request = OpenLayers.Request.GET({
url: root+'/geoserver/ows?service=wfs&version=1.0.0&request=GetCapabilities',
handler: function(response){
var XMLformat = new OpenLayers.Format.XML();
var xml = XMLformat.read(response.responseText);
var CAPformat = new OpenLayers.Format.WFSCapabilities();
cap = CAPformat.read(xml);
for (var i = 0; i < cap.featureTypeList.featureTypes.length; i++) {
var featureT = cap.featureTypeList.featureTypes[i];
data.push({
name: featureT.name,
title: featureT.title,
srs: featureT.srs,
featureNS: featureT.featureNS
});
}
return new Ext.data.Store({
model: 'WFSLayers',
sorters: 'title',
data: data,
getGroupString: function(record){
return record.get('title')[0];
},
});
}
});
},
initComponent: function(){
this.store = this.createStore();
this.itemTpl = new Ext.XTemplate('<span class="gx-layer-item">{name}</span>');
this.grouped = true;
this.listeners = {
itemtap: function(dataview, index, item, e){
}
};
App.AddFeatureLayerList.superclass.initComponent.call(this);
}
});
Ext.reg('app_addFeatureLayerList', App.AddFeatureLayerList);
但是,我得到了一個錯誤:
Uncaught DataView requires tpl, store and itemSelector configurations to be defined.
那麼如果我刪除代碼:
new Ext.data.Store({
model: 'WFSLayers',
sorters: 'title',
data: data,
getGroupString: function(record){
return record.get('title')[0];
},
});
,並把它們傳遞給this.store
通話後「 this.createStore()
「,我會得到一個空的列表。但是,我追蹤了數組data
,結果顯示它有數據,但商店是空的。
我無法找到它有什麼問題。任何人都可以幫我給我一些提示?
欣賞所有幫助!
@Simon - 對不起,但我上面寫的不是答案。我使用OpenLayers Sencha Touch示例查看了mobile-sencha.js代碼,並且它們具有itemtap:拼寫方式相同。我猜你已經看過那個了?也許從WFS中分離圖層檢索可能會使事情變得更加複雜,並指出這是一個問題?希望你找到了答案。也許回覆,如果如此,我會對自己感興趣。 – teknocreator