如何在FeatureStore和AJAX后端之间交换数据?

时间:2014-09-04 18:13:22

标签: extjs openlayers extjs4.2 geoext

我是Extjs4.2 / OL / Geoext2开发的新手,我对它应该如何运作感到困惑。

---编辑---

我正在尝试编写一个小应用程序来阅读GeoJSON,在地图上放置读取功能,让用户编辑它们/绘制新功能,最后将它们保存回GeoJSON。

我目前的做法: OpenLayers.Layer.Vector绑定到Geoext.data.FeatureStore。 图层读取GeoJSON,并填充FeatureStore。

现在我的问题 - 如何将修改后的用户数据保存到GeoJSON? 我可以通过FeatureStore将数据保存为JSON,但我没有看到让FetureStore保存GeoJSON的简单方法。我应该使用矢量图层来保存GeoJSON,还是尝试添加某种类型的转换以将要素的几何属性添加到FeatureStore,然后同步()商店?

---编辑---

已经通过在模型中插入另一个属性来完成此操作:

{
  name: 'geom',
  convert: function(value, record) {
    return record.raw.geometry.toString();
  }
}

现在我的FeatureStore使用几何体保存类似GeoJSON的输出,这对我来说没问题。

问题:这是正确的方法吗?

问候,帕维尔

1 个答案:

答案 0 :(得分:1)

我不是专家,但我认为创建GeoExt.data.FeatureStore是为了与图层同步。因此,如果您执行store.sync(),则不会向您的远程GeoJSON数据源发送更新请求。 GeoExt.data.FeatureStore构造函数首先创建proxy: { type: 'memory', ...,因此您的原始代理将被此替换。要使用GeoExt.data.FeatureStore,您必须重写它。

所以,我认为最好的方法是使用一个非常灵活的OpenLayers.Protocol.Script源,配置为使用远程GeoJSON源。使用图层的保存策略,所有更新都将发送到远程源。

问候!