Sencha Touch + OpenLayers:未能创建包含 Openlayers.request.Get 函数的列表
Posted
技术标签:
【中文标题】Sencha Touch + OpenLayers:未能创建包含 Openlayers.request.Get 函数的列表【英文标题】:Sencha Touch + OpenLayers: failed to create a list that wraps a Openlayers.request.Get function 【发布时间】:2011-09-01 01:42:49 【问题描述】:我正在使用 Sencha Touch + OpenLayers 开发一个演示应用程序。其中一项功能是获取 GeoServer 中的要素数据目录。我想使用 Ext.List 来显示要素图层的名称。我尝试了以下代码:
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.createStore()
”后将它们传递给this.store
,我将得到一个空列表。但是,我跟踪了数组data
,结果发现它有数据,但存储是空的。
我找不到它有什么问题。任何人都可以帮我给我一些提示吗?
感谢所有帮助!!!
【问题讨论】:
【参考方案1】:请注意,我仍然是所有 ExtJS 和现在的 Sencha 框架的新手。但是,由于您的问题最终可能与我正在使用 OL 和 Sencha Touch 进行的一些工作有关,因此决定查看它。真的找不到任何问题,但我正在查看 Sencha Touch 文档,并且 itemtap 被列为:
itemtap( Ext.DataView this, Number index, Ext.Element item, Ext.EventObject e )
那么,你有没有试过这个而不是你写的?
itemtap: function( this, index, item, e )
我在这里可能是错的,但也许 Sencha 是在抱怨,因为它认为您正在声明一个尚未定义的新数据视图(?)。我认为这就是错误所抱怨的。如果这是问题,请感兴趣。
【讨论】:
@Simon - 抱歉,我上面写的不是答案。我使用 OpenLayers Sencha Touch 示例查看了 mobile-sencha.js 代码,它们的 itemtap: 拼写方式相同。我想你已经看过了?也许将图层检索与 WFS 分开可能会使事情变得不那么复杂并指出问题所在?希望您已经找到了答案。如果是这样的话,也许会回复我自己。以上是关于Sencha Touch + OpenLayers:未能创建包含 Openlayers.request.Get 函数的列表的主要内容,如果未能解决你的问题,请参考以下文章
Sencha Touch实战OA系统开发|Sencha Touch项目教程
Sencha Touch - sencha touch js 大小的性能问题
将 Sencha Architect 项目从 Sencha Touch v2.0.x 更新到 Sencha Touch 2.1.x
iPhone Sencha Touch - 如何在 sencha touch 中将表格视图添加到拆分视图